为什么带onEdit触发器的Google Apps Script无法唤起HTML模态对话框
问题根源
你遇到的问题是Google Apps Script对简单onEdit触发器的权限限制导致的:
简单onEdit触发器属于无需用户授权的轻量触发器,官方明确限制它不能调用需要授权的接口,SpreadsheetApp.getUi()相关的所有弹窗(包括alert警告、HTML模态对话框)都属于需要授权的接口范畴,所以在简单触发器的执行流程里,这部分逻辑会静默失败。
而你手动运行OpenMyHtmlDialog函数时,相当于你主动触发了授权流程,已经授予了脚本操作UI的权限,所以可以正常弹出对话框。
解决方法
将简单触发器替换为可安装编辑触发器即可,操作步骤如下:
- 打开脚本编辑器,点击左侧边栏的「触发器」(闹钟形状图标)
- 点击右下角的「添加触发器」按钮
- 按以下规则配置触发器:
- 选择要运行的函数:建议你先把原来的
onEdit函数重命名为installableOnEdit(避免和默认简单触发器重名导致重复触发),然后选择这个重命名后的函数 - 选择部署来源:保持默认「头部」即可
- 选择事件来源:选择「电子表格」
- 选择事件类型:选择「编辑时」
- 选择要运行的函数:建议你先把原来的
- 点击保存后按照页面提示完成账号授权,即可生效
注意事项
- 可安装触发器默认的执行身份是触发器创建者,如果你需要让所有协作编辑表格的用户都能触发弹窗,需要每个用户都自行按上述步骤创建一次对应触发器
- 授权时如果遇到「Google未验证此应用」的提示,点击「高级」-「继续前往(你的应用名)」即可正常授权,这是自定义脚本的正常提示,没有安全风险
内容的提问来源于stack exchange,提问作者Alexander Holzinger
相关产品推荐
相关产品推荐

