我有一个Google表格插件,它使用App Script Ui服务提供的对话框,即SpreadSheetApp.getUi().alert(...)
。这通常可以正常工作,除非用户没有选择一个选项或在5分钟内关闭警报(比如他们切换到不同的选项卡或离开他们的计算机),在这种情况下,"超时"抛出异常。
我的代码:
var ui = SpreadsheetApp.getUi();
var response = ui.alert(msg, ui.ButtonSet.YES_NO);
return (response == ui.Button.YES);
Apps脚本执行记录中的错误:
[18-02-27 16:40:18:080 EST] Starting execution
[18-02-27 16:40:18:096 EST] SpreadsheetApp.getUi() [0 seconds]
[18-02-27 16:45:18:160 EST] Ui.alert([Are you sure you want to delete this
thing?, YES_NO]) [300.063 seconds]
[18-02-27 16:45:18:166 EST] Execution failed: Timed out waiting for user
response (line 289, file "Code") [300.066 seconds total runtime]
抛出异常后,警报仍然可见,如果用户回来并点击"是"上面的函数仍然没有返回true。它只是关闭对话框,用户必须再次尝试。
如果我只在警报周围添加try / catch,则用户不会知道警报在5分钟后变得无用。理想情况下,我可以调用alert.close()
之类的东西,但没有我能找到的方法。有没有更好的方法来解决这个问题,或者我应该切换到使用HTML / javascript进行警报?