可以在另一个服务器处理程序中更改处理程序回调函数

时间:2012-11-19 23:34:30

标签: google-apps-script

我想在另一个服务器处理程序中更改回调函数。我得到一个响应“无法在对象Generic中找到函数setCallbackFunction”。后果       app.getElementById( 'treeHandler')setCallbackFunction( 'NOSELECTION'); 而处理程序在主线中定义为      var handler = app.createServerHandler('nameSelected')。setId('treeHandler'); 因此看起来我们无法在服务器处理程序中获取ServerHandler类型的元素。

这是预期的行为吗?

2 个答案:

答案 0 :(得分:0)

这是正确的;你无法让他们回来并为他们做任何事情。

答案 1 :(得分:0)

这不完全正确,您可以向应用程序添加隐藏元素。只需使用createHidden而不是createTextBox来采用下面的axmaple。

function doGet() {
   var app = UiApp.createApplication();
   var textBox1 = app.createTextBox().setName("textBox1");
   var textBox2 = app.createTextBox().setId("textBox2");
   app.add(textBox1);
   app.add(textBox2);
   var textBox3 = app.createTextBox().setName("textBox3");
   var panel = app.createFlowPanel();
   panel.add(textBox3);
   app.add(panel);
   var button = app.createButton("a button");
   var handler = app.createServerHandler("handlerFunction");
   handler.addCallbackElement(textBox1)
       .addCallbackElement(textBox2)
       .addCallbackElement(panel)
   button.addClickHandler(handler);
   app.add(button);
   return app;
 }

 function handlerFunction(eventInfo) {
   var parameter = eventInfo.parameter;
   // There's a lot of information in 'parameter' about the event too, but we'll focus here
   // only on the callback elements.
   var textBox1 = parameter.textBox1;  // the value of textBox1
   var textBox2 = parameter.textBox2;  // undefined! setId is not the same as setName
   var textBox3 = parameter.textBox3;  // works! the parent "panel" was a callback element
 }

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