服务器处理程序事件信息参数google apps脚本

时间:2012-11-26 09:35:19

标签: events google-apps-script

一个简单的应用程序:

function doGet() {
  return(test());
}

function test(){
  var smiley = UiApp.createApplication().setTitle("TT Bomgar Feedback");
  var textIn = smiley.createTextBox().setName("text");
  var textOut = smiley.createLabel().setId("label").setVisible(false);
  var button = smiley.createSubmitButton("Submit");
  var handler = smiley.createServerHandler("handler");
  button.addClickHandler(handler);
  smiley.add(button);
  smiley.add(textIn);
  smiley.add(textOut);
  return(smiley);
}

function handler(e){
  app = UiApp.getActiveApplication();
  var text = e.parameter.text;
  app.getElementById("label").setVisible(true).setText(text);
  return(app);
}

在处理函数中,var text始终为undefined。这意味着返回以下内容:

enter image description here

因此,打印undefined而不是“some text”。

我不明白为什么,因为我在测试函数中正确设置了文本框元素的名称......

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

您需要将callBackElemnt添加到处理程序,以便将其值传递给处理函数。在通常的实践中,我们只添加包含所有其他元素的最顶层元素。但您也可以添加要传递其值的所有元素。

修改过的脚本

var handler = smiley.createServerHandler("handler");
handler.addCallbackElement(textIn);
button.addClickHandler(handler);

答案 1 :(得分:1)

您必须将callback元素添加到服务器处理程序:

...
var handler = smiley.createServerHandler("handler");
handler.addCallbackElement(textIn);
button.addClickHandler(handler);
...

https://developers.google.com/apps-script/class_serverhandler#addCallbackElement