簡體   English   中英

鏈接函數如何訪問Google Apps腳本中的表單數據?

[英]How can chained functions access form data in Google Apps Scripts?

此問題是“ GAS中是否提供“鏈接”功能? ”的擴展。

我需要做類似的事情...復制/粘貼可以回答上一個問題的代碼示例:

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;

但是,我無法將列表框所在的網格傳遞到secondHandler()中。 這是我嘗試過的:

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()修改為完全無參數,這樣我就可以繞過將網格傳遞到firstHandler()中的secondHandler()中的麻煩:

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解決方法無法按預期進行嗎? 任何和所有幫助表示贊賞!!!

嘗試這個。

function firstHandler(e) {
  var app = UiApp.getActiveApplication();
  //do your thing
  return secondHandler(e);
}

function secondHandler(e) {
  var app = UiApp.getActiveApplication();
  var value = e.parameter.listBoxName;
  //do your job
  return app;
}

確保在創建處理程序時使用此功能。

app.createServerHandler("firstHandler").addCallbackElement(gridContainingListBox);

如果要從頁面中檢索值,則必須使用e.parameter ,在添加適當的回調元素時已正確設置。 如果要在UI中修改元素,那么可以使用app.getElementById(...).whateverFunction() ,但是請注意,您不能調用getValue()等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM