我在 GAS 上遇到了一个关于 Google 电子表格脚本的奇怪问题。
有时,由下面的“鼠标上移”事件触发的函数会执行两到三次,每次运行之间相差几秒。它不会每次都发生,问题看起来非常随机。
按钮:
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”在代码中只被调用一次(在上面的代码中)。另一个重要信息是此过程 (onAllocateTaskSheet) 的执行时间很长(它复制了数十个 Google Docs 文档)。
是否有重复执行此功能的解释?也许我使用了错误的事件?某些内部错误会导致程序重新执行?
再次感谢您的帮助!
编辑:
好的,现在我可以确认问题与按钮或事件 mouseUp 无关。问题是函数“onAllocateTask”在 X 分钟后被重新执行。当 onAllocateTask 快速完成时(例如不到 1 分钟),它不会发生。我猜这与一些超时或内部错误有关。
序列化延续 Google Apps 脚本时出现意外异常 这里有人说 Google Apps 脚本丢失了“循环指针”。有可能吗?