移除gmail.settings.basic后GmailApp.createDraft仍报错,需何调整?
gmail.settings.basic后GmailApp.createDraft权限报错 我有一个已验证的Gmail插件,原本使用受限范围gmail.settings.basic,收到谷歌的重新验证通知。我找到了无需受限范围的简化方案,于是移除了项目OAuth同意屏幕和插件appscript.json中的gmail.settings.basic,并以测试模式部署插件。但调用GmailApp.createDraft时仍报错:
Exception: The script does not have permission to perform that action. Required permissions: (
https://www.googleapis.com/auth/gmail.settings.basic ||
https://www.googleapis.com/auth/gmail.readonly ||
https://www.googleapis.com/auth/gmail.modify ||
https://mail.google.com/)
我未在文档中找到GmailApp.createDraft需要gmail.settings.basic的说明,这也不符合逻辑。请问还需要进行哪些调整才能不再依赖gmail.settings.basic?
补全
appscript.json的权限配置GmailApp.createDraft需要的是https://www.googleapis.com/auth/gmail.modify权限,而非gmail.settings.basic。确保appscript.json的oauthScopes数组中已添加该权限,示例配置:{ "oauthScopes": [ "https://www.googleapis.com/auth/gmail.modify" ], // 其他插件配置项 }重新部署并刷新授权
- 保存
appscript.json修改后,新建一个测试部署版本(不要直接更新旧部署)。 - 卸载当前已安装的测试插件,清除浏览器缓存后重新安装,确保系统获取到新的权限范围。
- 保存
排查隐藏的权限触发代码
检查脚本中是否存在间接调用邮箱设置的代码(哪怕是注释掉的片段),这类代码可能被Google权限扫描机制检测到,导致误判需要gmail.settings.basic,彻底移除相关内容。同步OAuth同意屏幕权限
进入Google Cloud控制台的OAuth同意屏幕设置,确认已删除gmail.settings.basic权限,同时添加gmail.modify权限,保存后重新同步项目权限配置。通过脚本编辑器触发权限检测
打开App Script编辑器,点击「运行」→「测试作为插件」,此时系统会自动检测所需权限并弹出授权提示,确认授权列表中仅包含gmail.modify等必要权限,无gmail.settings.basic。
内容的提问来源于stack exchange,提问作者Rick Mohr

