2016-09-29 41 views
1

我希望我的電子表格可以在某個表單中打開。我試過以下,但它仍然只是打開第一張。如何在打開Goog​​le電子表格時直接轉到某個表單?

function setActiveSheetToday(){ 
    var date = new Date(); 
    var sheet = getSheetByDate(date); //custom function that returns sheet object 
    var SS = sheet.getParent(); 
    SS.setActiveSheet(sheet); 
} 

然後我做了一個onOpen觸發器。

ScriptApp.newTrigger('setActiveSheetToday').forSpreadsheet(SS_ID).onOpen().create(); 

當我打開電子表格時,它仍然在第一張紙上打開。有什麼建議麼?

編輯

我想我發現它爲什麼不在這裏工作的原因:https://developers.google.com/apps-script/guides/bound#special_methods

所以它顯然只適用於有限的腳本..

+1

沒有名爲'getSheetByDate()'的方法' –

回答

0

你檢查過的對象,你的工作表?

你可以試試這個功能簡單的測試:

所謂的「工作表Sheet1」
function onOpen() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName('Sheet1'); 
    ss.setActiveSheet(sheet); 
} 

製造板材,去任何其他表並重新加載頁面。

爲您的代碼,我建議測試:

Logger.log(sheet.getName()); 
+0

函數'getSheetByDate()'起作用,這不是問題。我認爲你假設我使用的是一個腳本加上電子表格,但事實並非如此,我正在使用一個獨立的腳本文件。這就是爲什麼我使用'forSpreadsheet(SS_ID).onOpen()'。 – lonewolf

1

你可以讓你想在第一層上打開工作表。只需將SS.moveActiveSheet(1);添加到您的setActiveSheetToday()函數中即可。

或者,從綁定腳本中激活工作表會根據需要更改焦點。從單獨的腳本文件做它似乎並沒有。

+0

將工作表移到第一位在我的項目中並不是真正的可行選項。有沒有辦法使用代碼將腳本綁定到電子表格?否則,我必須手動將腳本添加到每個電子表格。 – lonewolf

+0

如果您要複製帶有綁定腳本的電子表格,那麼綁定的腳本將與其一起復制,但我不確定如何從其他地方運行的腳本更改它。 它會有點笨重,但是你可能會有一個帶有'onOpen()'函數的電子表格,它可以激活一個隱藏工作表中的工作表,然後在你的電子表格的副本上創建你正在做的任何工作,要打開相關位置的表單名稱。 雖然將工作表移動到前面會更容易 - 但影響您不想執行的工作表順序是什麼? – dmusgrave

相關問題