Google Apps Script で次のようなアプリを作成しようとしています: 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
}
そして、テーブルにいくつかのウィジェットを追加するテーブルのボタンにリンクされたハンドラーを書きたいと思います。
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
問題は、テーブルの作成後に << die >> という関数でコールバック要素を定義し、このコールバック要素がハンドラーで失われることにあると思います。任意の提案をいただければ幸いです。ありがとう。