此問題是「Is 'chaining' functions available in GAS?」的擴展。鏈式功能如何在Google Apps腳本中訪問表單數據?
我需要做類似的東西...複製/粘貼它回答了前一個問題的代碼示例:
var app = null;
function firstHandler(e) {
if(app == null)
app = UiApp.getActiveApplication();
//do your thing
//now, instead "return app;" you return the second handler
return secondHandler(e);
}
function secondHandler(e) {
if(app == null)
app = UiApp.getActiveApplication();
//do your job
return app;
}
凡firstHandler()是一個按鈕的點擊處理程序。這個例子和我需要做的區別在於,在我的例子中,secondHandler()需要從表單中提取一條信息。具體來說,我需要從列表框中獲取選定的值。
通常情況下,我會secondHandler()拉這些信息在將傳遞包含列表框到函數的父對象的方式,那麼有這樣一行:
var value = eventInfo.parameter.listBoxName;
然而,我在將列表框放入第二個處理程序()中時遇到問題。以下是我試過的:
var app = null;
function firstHandler(e) {
if(app == null)
app = UiApp.getActiveApplication();
//do your thing
//get the object now, pass it into the chained function
var myGrid = app.getElementById("gridId");
return secondHandler(myGrid);
}
function secondHandler(e) {
if(app == null)
app = UiApp.getActiveApplication();
var value = e.parameter.listBoxName.toString();
//do your job
return app;
}
但是這一直沒有奏效。我也嘗試修改secondHandler()是完全免費的說法,這樣我可以繞過不必電網進入secondHandler()內firstHandler():
var app = null;
function firstHandler(e) {
if(app == null)
app = UiApp.getActiveApplication();
//do your thing
return secondHandler(e);
}
function secondHandler(e) {
if(app == null)
app = UiApp.getActiveApplication();
var value = app.getElementById('listBoxId').value;
//do your job
return app;
}
這也不管用... 「app.getElementById('listBoxId')。value」似乎沒有返回任何東西。我不知道爲什麼不:(
,我怎麼能做到這一點有什麼想法?任何人都知道爲什麼預期我app.getElementById解決方法是不是正常?任何及所有的幫助感激!
嘗試用'var app替換'var app = null;'' ;'。我相信在這樣的功能之外設置一個變量會使其保持不變。 – Fred