0

这个问题是“在 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 解决方法没有按预期运行?任何和所有帮助表示赞赏!

4

1 回答 1

0

尝试这个。

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()等。

于 2013-02-06T23:32:17.177 回答