使用Apps Script发送邮件时权限异常问题求助
Google Apps Script 发送邮件权限错误解决方法
问题背景
通过Google Form与Google Sheet收集数据,提交问卷后由触发器执行主函数,完成计算并生成PDF,最后调用发送邮件函数时出现权限错误。已启用Gmail API,且在appsscript.json中添加了相关oauthScopes,但问题未解决。
现有配置与代码
appsscript.json 配置
{ "oauthScopes": [ "https://www.googleapis.com/auth/gmail.send", "https://www.googleapis.com/auth/gmail.compose", "https://www.googleapis.com/auth/gmail.modify" ], "timeZone": "America/Toronto", "dependencies": { "enabledAdvancedServices": [ { "userSymbol": "Gmail", "version": "v1", "serviceId": "gmail" } ] }, "exceptionLogging": "STACKDRIVER", "runtimeVersion": "V8" }
发送邮件函数
function sendEmail(email, pdfFile){ var subject = "Test"; var message = "Hi"; GmailApp.sendEmail(email, subject, message); }
错误信息
Exception: The script does not have permission to perform that action. Required permissions: (https://www.googleapis.com/auth/gmail.send || https://www.googleapis.com/auth/gmail.compose || https://www.googleapis.com/auth/gmail.modify || https://mail.google.com/ || https://www.googleapis.com/auth/gmail.addons.current.action.compose)
解决步骤
检查触发器运行身份
进入脚本编辑器的「编辑」→「当前项目的触发器」,确认表单提交触发器的「运行身份」设置为脚本所有者(你的账号),而非「提交表单的用户」——普通提交用户没有发送邮件的权限,会导致触发时权限不足。补充权限范围
在appsscript.json的oauthScopes中添加https://mail.google.com/权限,修改后的配置如下:"oauthScopes": [ "https://www.googleapis.com/auth/gmail.send", "https://www.googleapis.com/auth/gmail.compose", "https://www.googleapis.com/auth/gmail.modify", "https://mail.google.com/" ]重新授权脚本
修改配置后,手动运行一次主函数(不要通过触发器触发),按照提示完成重新授权流程,确保新的权限被系统认可。确认Gmail API启用状态
进入脚本编辑器的「资源」→「云平台项目」,打开对应的GCP项目,搜索并确认Gmail API处于启用状态(部分情况下高级服务的启用可能存在同步延迟)。备选:切换至Gmail高级服务发送邮件
如果上述方法无效,尝试使用Gmail高级服务的接口替代GmailApp.sendEmail,代码示例:function sendEmail(email, pdfFile){ var subject = "Test"; var message = "Hi"; // 构造邮件原始内容并编码 var raw = Utilities.base64EncodeWebSafe( "To: " + email + "\r\n" + "Subject: " + subject + "\r\n\r\n" + message ); // 调用Gmail API发送邮件 Gmail.Users.Messages.send({raw: raw}, "me"); }
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

