Google表格脚本仅所有者可用,协作者无法触发问题咨询
解决协作者编辑时无法更新「Last Modified」日期的问题
嘿,我明白你遇到的麻烦了——自己编辑时日期能正常更新,但协作者改文档就没反应,这其实是简单触发器的权限限制在搞鬼!
为啥会这样?
你现在用的是Google Apps Script里的简单触发器(比如默认的onEdit函数),这类触发器有个致命问题:它是以触发编辑的用户身份运行的。也就是说,协作者编辑时,触发器会用协作者的权限去尝试修改你锁定的单元格,但你已经把那个单元格锁了呀,协作者没权限改,自然就触发失败了。
而可安装触发器就不一样了——它是绑定在你(文档所有者)的账户上运行的,不管是谁编辑文档,脚本都会用你的权限执行,这样就能轻松修改你锁定的单元格了!
具体怎么改?
第一步:给你的函数换个名字
先把原来的onEdit函数改名,比如改成updateLastModified,避免和简单触发器的默认函数名冲突。举个示例代码(你可以把自己的逻辑套进去):
function updateLastModified(e) { // 获取当前编辑的工作表 const activeSheet = e.source.getActiveSheet(); // 假设你要把日期更新到当前编辑行的最后一列,可根据你的需求调整单元格位置 const targetCell = activeSheet.getRange(e.range.getRow(), activeSheet.getLastColumn()); // 设置为当前时间 targetCell.setValue(new Date()); }
第二步:创建可安装的编辑触发器
接下来手动创建触发器,让它在任何人编辑文档时都触发你的函数:
- 打开Google表格,点击顶部菜单栏的「工具」→「脚本编辑器」
- 点击左侧边栏的时钟图标(触发器面板)
- 点击右下角的「添加触发器」按钮
- 在弹出的配置框里按以下设置:
- 选择要运行的函数:
updateLastModified - 部署类型选「Head」(测试阶段用这个就行,正式上线可以选版本)
- 事件源选「从电子表格」
- 事件类型选「编辑时」
- 选择要运行的函数:
- 点击「保存」,会弹出授权提示,跟着步骤完成授权就好(这是可安装触发器的正常流程,放心授权)
第三步:确认单元格锁定权限
最后检查一下你锁定的「Last Modified」单元格权限:确保只有你(文档所有者)能编辑它——因为可安装触发器是用你的权限运行的,这样脚本就能顺利修改这个单元格,不管是你还是协作者编辑文档,日期都会自动更新啦!
小提醒
可安装触发器可能会有个几秒的延迟,但完全不影响日常使用。另外,如果你的脚本以后需要调用一些需要授权的服务(比如发送邮件),可安装触发器也能轻松搞定,简单触发器可做不到哦~
内容的提问来源于stack exchange,提问作者Amy S




