みなさん、こんにちは。
ハンドラー関数内でグローバル変数を使用できますが、関数内で「グローバルに」変更することはできません。
以下のコードでは、最初のクリック後に数値1001が表示されます(ハンドラーが読み取り、インクリメントし、正しい結果を表示します)。ただし、それ以上クリックすると常に1001が表示されるため、ハンドラーは元のglobalVar値を読み取り続けます。期待どおりに変更されません。
これを修正するために私にできることはありますか?
var globalVar = 1000;
function testingGlobals() {
var app = UiApp.createApplication();
var doc = SpreadsheetApp.getActiveSpreadsheet();
var panel = app.createVerticalPanel().setId('panel');
app.add(panel);
panel.add(app.createButton(globalVar).setId("globalVar").addClickHandler(app.createServerHandler("chgGlobal").addCallbackElement(panel)));
doc.show(app)
}
function chgGlobal(e) {
var app = UiApp.createApplication();
globalVar++;
app.getElementById("globalVar").setText(globalVar);
return app;
}