在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
<<模具>>在创建表之后,这个回调元素会丢失给处理程序。任何建议将不胜感激。感谢。
答案 0 :(得分:1)
您的代码似乎没问题,错误消息(一次)非常明确,第一个参数是一个字符串,它应该是一个数字。 (我不知道x
来自哪里,但它已成为一个字符串...也许它是一个e.parameter.something
,它总是字符串)
只需在处理程序中尝试此代码:
table.setWidget(Number(x),y,app.createTextBox());