繁体   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