最速怪談選手権

Google Apps Script にて簡易フォームを作成しています。
画面遷移を必要とするため、google フォーム等ではなくスプレッドシート上にパネル表示にて実装しているとことです。

その中で、変数の扱いでお尋ねさせてください。

グローバル変数として宣言しているはずなのですが、イベントメソッドが実行されたところでリセット(?)されてしまっているようです。
下記の変数xを、更新しながら画面遷移していきたいのですが、イベントメソッドが実行された時点で、毎回初期値に戻ってしまいます。

コードのアウトラインを下記に記させていただきます。
main()で xの内容として「0」が表示されるところまでは良いのですが、
main2()で 「1」が表示されてほしいところ、「0」と表示されてしまいます。

変数xの宣言の仕方が悪いのか、参照の仕方が悪いのか、あるいは他の不十分な箇所があるのか、ご教示頂けますでしょうか。
よろしくお願いいたします。



var x = 0;

function main(){
var app = UiApp.createApplication().setTitle('表示パネル');
app.add(app.createLabel(x);
var pnl = app.createVerticalPanel();
var btn = app.createButton('OK', app.createServerHandler('onOkClick').addCallbackElement(pnl));
pnl.add(btn);
app.add(pnl);
SpreadsheetApp.getActiveSpreadsheet().show(app);
}

function main2(){
var app = UiApp.createApplication().setTitle('表示パネル');
app.add(app.createLabel(x);
var pnl = app.createVerticalPanel();
var btn = app.createButton('OK', app.createServerHandler('onOkClick').addCallbackElement(pnl));
pnl.add(btn);
app.add(pnl);
SpreadsheetApp.getActiveSpreadsheet().show(app);
}

function onOkClick(e){
x=x+1;
main2();
}

A 回答 (1件)

こんにちは



Google Apps Scriptはわからないので、内容に関してはさっぱりですが・・・


スクリプトのエラーが出たり、関数が最後まで実行されていないということはないでしょうか?

ざっと見たところ、「(」と「)」の数が違うようですが、文法的にあってますか?
>app.add(app.createLabel(x);
あたりが怪しそうに思いますけれど・・・?
    • good
    • 1
この回答へのお礼

ありがとうございます。

そうですね、ここの質問で投稿する時に記載ミスしてしまいました。
実際のコード、プログラム上は(少なくとも当該部分の)構文ミスはありません。

質問文で記載しているような画面遷移自体は実現しているので、
プログラムは何週か回せているのは間違いなさそうです。

よろしくお願いします。

お礼日時:2017/07/31 19:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!