Google Sheets可安装触发器对非所有者用户不触发问题求助
解决可安装触发器仅所有者运行的问题
看起来你遇到的核心问题是可安装触发器的运行身份设置不对,导致其他用户编辑时无法触发函数。下面是一步步的解决方案:
1. 调整触发器的运行身份
这是最关键的一步:
- 打开你的脚本编辑器,点击左侧栏的触发器图标⏱️
- 找到你创建的那个“编辑时”触发器,点击右侧的三个点选择「编辑」
- 在「运行方式」下拉框里,选择你的账户(也就是表格所有者),而不是默认的「用户触发事件」
- 保存这个设置。这样不管是谁编辑表格,触发器都会以你的身份运行函数,自然就能使用你的日历权限了
2. 优化函数里的表格获取逻辑
你现在硬编码了表格ID,其实可以利用触发器的事件对象e直接获取当前编辑的表格,既高效又能减少权限隐患:
function DutySwitch(e) { Logger.log("triggered"); // 从事件对象获取当前编辑的表格,无需硬编码ID var sheets = e.source; var dutySwitchSheet = sheets.getSheetByName('Duty Switches'); // 你的后续代码... }
这样做的好处是,不需要额外授权去打开指定ID的表格,因为事件对象已经提供了当前表格的引用,避免了不必要的权限校验环节。
3. 验证触发器和权限有效性
- 让其他用户做一次编辑操作,然后去脚本编辑器左侧的「执行」菜单查看执行记录(不是日志哦)——哪怕函数报错,这里也会有记录,能帮你定位问题
- 确认其他用户有表格的编辑权限(仅查看权限是无法触发“编辑时”触发器的)
- 再检查一遍触发器的事件类型:确保是「电子表格」→「编辑时」,别选错成了「表单提交」或者其他事件
4. 确认日历授权
因为你需要创建日历事件,确保你的账户已经给脚本授予了日历访问权限:可以手动运行一次DutySwitch函数(运行时随便传个测试的e对象,或者暂时注释掉依赖e的代码),按照提示完成授权流程即可。
内容的提问来源于stack exchange,提问作者Isaac Fehr
相关产品推荐
相关产品推荐

