0

一个简单的应用程序:

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. 这意味着返回以下内容:

在此处输入图像描述

因此,打印的是 undefined 而不是“一些文本”。

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

非常感谢任何帮助。

4

2 回答 2

3

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

修改后的脚本

var handler = smiley.createServerHandler("handler");
handler.addCallbackElement(textIn);
button.addClickHandler(handler);
于 2012-11-26T10:10:10.007 回答
1

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

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

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

于 2012-11-26T10:06:30.773 回答