GAS の Google スプレッドシート スクリプトで奇妙な問題に直面しています。
以下のイベント「マウスアップ」によってトリガーされる機能が、2 回または 3 回実行され、各実行の間に秒の差がある場合があります。毎回発生するわけではありません。問題はかなりランダムに見えます。
ボタン:
var button = app.createButton("Alocar").addClickHandler(app.createClientHandler().forEventSource().setEnabled(false)).addMouseUpHandler(app.createServerHandler("onAllocateTask").addCallbackElement(panel));
「onAllocateTask」の始まり:
function onAllocateTaskSheet(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.toast("Aguarde alguns minutos.", "Atenção", 8);
var task = e.parameter[TASK_ALLOCATION_PARAMETER];
if (task == null || task == "") {
return;
}
... continues ...
}
関数「onAllocateTaskSheet」がコード内で (上記のコードで) 1 回だけ呼び出されることを保証できます。もう 1 つの重要な情報は、この手順 (onAllocateTaskSheet) の実行時間が長い (数十の Google ドキュメント ドキュメントをコピーする) ことです。
この関数の重複実行についての説明はありますか? おそらく私は間違ったイベントを使用していますか?内部エラーにより、プロシージャが再実行される可能性がありますか?
助けてくれてありがとう!
編集:
OK、問題がボタンまたはイベント mouseUp に関連していないことを確認できました。問題は、関数「onAllocateTask」が X 分後に再実行されることです。onAllocateTask がすぐに (たとえば 1 分未満で) 終了した場合は発生しません。タイムアウトまたは内部エラーに関連していると思います。
Google Apps Script の継続をシリアライズする際の予期しない例外 ここで、誰かが Google Apps Script が「ループ ポインタ」を失うことについて何か言っています。それは可能でしょうか?