在 Google Apps 脚本中,我正在尝试构建如下应用程序:在 doGet 函数中,我构建了应用程序
function doGet() {
var app = UiApp.createApplication();
var panel = app.createVerticalPanel().setId('panel');
var Table = _table_create(some arguments);
...
panel.add(Table);
app.add(panel);
return app;
}
该表是由一个函数创建的,因为我需要在运行时创建几个带有一些可变参数的类似表,并且我无法预测何时以及有多少。因此我有一个函数 _table_create 创建包含按钮的表
function _table_create(arguments) {
var app = UiApp.getActiveApplication();
var Table = app.createFlexTable();
...
var handler1 = app.createServerHandler("handler");
handler1.addCallbackElement(Table);
Table.setWidget(x,y,app.createButton("button", handler1).setId("button_"+Table.getId()));
...
return Table
}
我想写一个 Handler 链接到表中的按钮,在表中添加一些小部件。
function handler(e){
var app = UiApp.getActiveApplication();
var table_id = (e.parameter.source).split('_');
table_id = table_id[0];
var table = app.getElementById(table_id);
Logger.log(table.getType()); //// prints GENERIC
...
table.setWidget(x,y,app.createTextBox());
return app;
}
但是当我单击该按钮时,我收到一条错误消息,指出它没有找到setWidget(string,number,TextBox)
表的方法。我认为问题在于我Table
在创建表后 << dies >> 的函数中定义了回调元素,并且该回调元素在处理程序中丢失了。任何建议将不胜感激。谢谢。