Google Sheets Apps Script执行完成后"Working"提示窗不消失求助
解决Google Sheets Apps Script执行后"Working"窗口残留问题
这个问题属于Google Sheets的UI渲染同步bug,尤其是脚本里用到SpreadsheetApp.getUi().alert()这类阻塞式弹窗时,很容易出现执行完脚本但加载窗口不消失的情况。以下是几个可行的解决办法:
替换阻塞弹窗为非阻塞提示
把alert()换成toast(),这种提示不会阻塞UI线程,脚本执行完后"Working"窗口会自动消失:function TestWorking() { SpreadsheetApp.getActiveSpreadsheet().toast("Hello world!", "Test", 5); }手动触发UI刷新
如果必须保留alert,可以在弹窗后加一段小代码触发Sheets的UI刷新,强制清除残留窗口:function TestWorking() { SpreadsheetApp.getUi().alert("Test", "Hello world!", Browser.Buttons.OK); // 通过临时修改表格标题触发UI刷新 const ss = SpreadsheetApp.getActiveSpreadsheet(); const originalTitle = ss.getName(); ss.setName(originalTitle + " "); ss.setName(originalTitle); }改用自定义对话框
用HtmlService创建自定义模态对话框,关闭对话框时会自动同步UI状态,不会残留加载窗口:function TestWorking() { const html = HtmlService.createHtmlOutput(` <p>Hello world!</p> <button onclick="google.script.host.close()" style="padding: 8px 16px;">OK</button> `).setWidth(300).setHeight(150); SpreadsheetApp.getUi().showModalDialog(html, "Test"); }
如果以上方法都没效果,试试清除浏览器缓存、用无痕模式打开表格,或者检查是否有其他第三方插件/脚本干扰了Sheets的UI状态。
内容的提问来源于stack exchange,提问作者Mark Rae
相关产品推荐
相关产品推荐

