【发布时间】:2021-11-08 16:09:43
【问题描述】:
我试图在提交表单后发送电子邮件的脚本中限制我的 OAuth 范围。我想限制它,使其具有最少的权限。如果我单击运行,它会尝试授权正确的权限。如果我设置了表单提交触发器,它想要授权读取、更改、删除所有电子表格并更改所有表单。
如果我让脚本完全访问工作表和表单,它会按预期运行。我只是想减少一些权限。屏幕截图显示,它要求的权限超出了 appsscript.json 文件中指定的权限。
此脚本附加到从我的表单生成的响应表中。
来自我的appsscript.json:
"oauthScopes": [
"https://www.googleapis.com/auth/gmail.readonly",
"https://www.googleapis.com/auth/gmail.send",
"https://www.googleapis.com/auth/drive.file",
"https://www.googleapis.com/auth/forms.currentonly",
"https://www.googleapis.com/auth/spreadsheets.currentonly"
]
代码:
/**
* @OnlyCurrentDoc
*/
function onFormSubmit(e) {
var values = e.namedValues;
var htmlBody = 'Hey ' + values['Name of Recipient'] + "!<br>";
htmlBody += values['Name of Sender'] + " thinks you deserve a shoutout! Thank you for being so awesome!";
htmlBody += '<br> <em>' + values['Shoutout'] + " - " + values['Name of Sender'] + "</em>";
htmlBody += '<br><br>';
GmailApp.sendEmail(values['Recipient Email'],'SHOUT OUT!!!!!!','',
{from:'email@domain.com',
htmlBody:htmlBody});
}
Google 表单/表格问题/列
-
时间戳
-
发件人姓名
-
收件人姓名
-
收件人老板的姓名
-
大喊
-
收件人电子邮件
-
收件人的老板电子邮件
OAuth 权限截图:
项目详情 OAuth 范围:
- 查看您的电子邮件和设置https://www.googleapis.com/auth/gmail.readonly
- 代表您发送电子邮件https://www.googleapis.com/auth/gmail.send
- 仅查看、编辑、创建和删除您在此应用中使用的特定 Google Drive 文件https://www.googleapis.com/auth/drive.file
- 查看和管理已在https://www.googleapis.com/auth/forms.currentonly 中安装此应用程序的表单
- 查看和管理已安装此应用程序的电子表格https://www.googleapis.com/auth/spreadsheets.currentonly
【问题讨论】:
-
那么你的问题是什么?
-
我不希望脚本“查看、编辑、创建和删除您的所有 Google 表格电子表格”或“查看和管理您在 Google 云端硬盘中的表单”。我希望脚本只能访问此特定工作表及其响应。
-
截图地址。您可以在删除敏感信息(如客户端 ID、客户端密码)后将其粘贴到此处吗?
-
@RayFranosa 该信息在编辑历史记录中仍然可见。如果您想完全删除,请“标记”您的问题和包含敏感信息的答案以供“主持人干预”并解释。相关:meta.stackoverflow.com/questions/327142
标签: google-apps-script google-oauth