Google Sheets容器绑定脚本 其他用户持编辑/所有权仍遇授权及访问报错
问题根因
报错指向代码第4行的DriveApp.getFileById调用,核心原因是容器绑定脚本默认以触发执行的用户身份运行,即便你已经授予了资源编辑权限,仍存在两个常见的隐藏权限拦截逻辑:
- 个人Google Drive内的资源,即便是授予了编辑权限,用户首次通过API访问时也可能触发「未访问/编辑过该项目」的拦截规则
- 脚本默认申请的OAuth授权范围不足,无法覆盖Drive文件读写、文档编辑的权限要求
修复步骤
- 第一步:核对三个硬编码ID对应的资源(模板文档、生成文件存储文件夹、PDF存储文件夹)的共享设置,确保目标用户的权限为「编辑者」,如果是Workspace企业账号,优先设置为「指定用户可编辑」而非「域内有链接可查看」
- 第二步:让所有需要运行脚本的用户,先手动在浏览器打开三个资源的网页端链接,成功加载一次即可消除API访问的首次拦截
- 第三步:补充脚本的完整授权范围:
- 打开脚本编辑器,点击左侧「项目设置」,勾选「在编辑器中显示appsscript.json清单文件」
- 回到代码编辑器页面,打开自动生成的
appsscript.json文件,替换为以下内容(时区根据你的实际区域调整即可):
{ "timeZone": "Asia/Shanghai", "dependencies": {}, "exceptionLogging": "STACKDRIVER", "runtimeVersion": "V8", "oauthScopes": [ "https://www.googleapis.com/auth/spreadsheets.currentonly", "https://www.googleapis.com/auth/documents", "https://www.googleapis.com/auth/drive" ] }- 保存文件后重新运行一次脚本,走完新的授权流程
- 第四步(可选,彻底避免用户授权问题):将脚本设置为以所有者身份统一执行:点击编辑器右上角「部署」-「新建部署」,类型选择「Web应用」,执行身份选择「我(所有者)」,可访问用户选择「需要使用脚本的所有用户/组织内所有人」,后续在Sheet中添加自定义菜单调用该Web应用地址即可,所有用户触发执行时都会复用你的权限,不需要单独授权
内容的提问来源于stack exchange,提问作者Gene Hopkins - 4QFA1
相关产品推荐
相关产品推荐

