一个简单的应用程序:
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而不是“some text”。
我不明白为什么,因为我在测试函数中正确设置了文本框元素的名称......
非常感谢任何帮助。
答案 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