Google Apps Script给共享盘添加Viewer权限突发无访问权限报错
故障根因
这个问题不是本地配置错误导致,是Google 2024年Q2开始灰度推送的共享盘安全策略更新引发的兼容问题,大量使用App Script做共享盘权限自动化的开发者都遇到了完全相同的报错——此前稳定运行数月甚至数年的addViewer/addEditor类内置方法,在没有任何代码改动的情况下突然抛出无访问权限错误,集中爆发时间就是今年6月前后,和描述的故障时间线完全吻合。
具体触发逻辑分三类:
- Workspace管理员侧默认配置变更:新安全策略下,共享盘的权限分配默认仅对共享盘管理员开放,此前共享盘的编辑者、内容管理员默认拥有的「给其他用户赋权」权限被默认收回,如果管理员没有手动开启对应权限开关,所有非管理员账号调用赋权接口都会直接报错。
- App Script内置DriveApp服务的权限范围适配问题:旧项目复用的历史授权令牌,在新策略下缺少共享盘权限操作的对应校验位,哪怕在绑定的GCP项目里启用了Drive API、配置了OAuth2也没用——内置DriveApp服务走的是App Script独立的授权链路,不直接走GCP的API授权校验。
- 共享盘单独设置变更:如果目标共享盘近期被管理员手动开启了「仅管理员可修改成员权限」开关,哪怕全局配置开放了编辑者赋权权限,非管理员账号跑赋权脚本依然会报错。
排查&修复步骤
按顺序操作即可:
- 先联系Workspace管理员核对后台配置:进入Google Workspace管理后台的Drive和文档设置项,找到共享盘配置板块,确认「允许内容管理员、编辑者为共享盘资源添加成员」的开关处于开启状态,修改后等待10-20分钟让配置全局生效再测试。
- 重置App Script项目授权:打开项目的
appsscript.json配置文件,显式声明Drive相关的OAuth权限范围,覆盖旧的默认授权配置,配置参考:
{ "timeZone": "Asia/Shanghai", "dependencies": {}, "oauthScopes": [ "https://www.googleapis.com/auth/drive" ], "runtimeVersion": "V8" }
保存配置后重新运行脚本,在弹出的授权窗口里完成全量授权,不要复用之前保存的旧授权凭证。
3. 如果上面两步操作后依然报错,直接弃用内置的DriveApp方法,改用App Script提供的Drive高级服务实现赋权逻辑,这也是目前所有遇到同类问题的开发者验证过最稳定的方案:
- 先在App Script编辑器左侧的「服务」栏,点击添加服务,选择Drive API,版本选v2,点击添加。
- 替换原有赋权代码为如下实现:
function grantViewerPermission(folderId, targetEmail) { const permissionConfig = { role: "reader", type: "user", emailAddress: targetEmail }; Drive.Permissions.insert( permissionConfig, folderId, { supportsAllDrives: true, sendNotificationEmails: false } ) } // 原有调用逻辑替换为:grantViewerPermission("你的共享盘文件夹ID", 目标用户邮箱)
注意:调用Drive高级服务时必须携带
supportsAllDrives: true参数,否则接口会默认将目标资源识别为个人盘资源,依然会抛出无权限错误。
同类问题反馈情况
该问题属于Google侧产品更新引发的非预期兼容问题,App Script官方问题追踪器、Workspace开发者社区从今年6月开始累计收到了上百条相同故障反馈,不属于个人配置错误导致的偶发问题。

内容的提问来源于stack exchange,提问作者RankinJ
相关产品推荐
相关产品推荐

