我对某些Google脚本问题有疑问。基本上,我的目标是检查脚本,以查看客户的案件是否已解决,然后向他们发送电子邮件,说明问题已解决。我已经确定了何时发送电子邮件的逻辑,但是每次尝试将其实施到电子表格中时,都会收到错误消息:
Error
You do not have permission to call MailApp.sendEmail. Required permissions: https://www.googleapis.com/auth/script.send_mail (line 8).
我有一个简单的功能来测试它的功能,并且在脚本编辑器中运行时,它可以正常工作,但不能在电子表格上运行。这是我的示例函数:
function myFunction(row) {
var sheet = SpreadsheetApp.getActiveSheet();
var rng = sheet.getRange(row, 1, 1, 2);
var ara = rng.getValues();
var email = ara[0][0];
MailApp.sendEmail(email, "TEST", "This is a test of sendEmail().");
return "Email sent.";}
答案 0 :(得分:1)
根据Apps Script Custom Functions documentation:
如果您的自定义函数引发错误消息
You do not have permission to call X service.
,则该服务需要用户授权,因此不能在自定义函数中使用。要使用除上面列出的服务以外的其他服务,请创建一个运行Apps脚本功能的自定义菜单,而不是编写一个自定义功能。通过菜单触发的功能将在必要时询问用户授权,因此可以使用所有Apps Script服务。
基本上,您可以使用以下命令复制上述两个函数的所需行为:
function SendEmail() {
var message = "This is your response";
var subject = "You have feed back in the parking lot";
var ss = SpreadsheetApp.getActiveSheet();
var textrange = ss.getRange("F2");
var emailAddress = ss.getRange("B2").getValue();
if (textrange.isBlank() == false)
MailApp.sendEmail(emailAddress, subject, message);
}
为了触发该功能的执行,您可以使用Apps Script triggers并选择最适合您的用例的一个。
您还可以创建一个自定义菜单,并可以选择触发上述功能。您只需要添加以下内容:
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu("My Menu")
.addItem("Send Email", "SendEmail")
.addToUi();
}
这就是电子表格上的样子:
答案 1 :(得分:0)
我今天遇到了同样的问题“您无权调用MailApp.sendEmail”。
我通过执行以下步骤解决了这个问题:
{
"oauthScopes": ["https://www.googleapis.com/auth/spreadsheets", "https://www.googleapis.com/auth/script.send_mail"],
}
PS:我将脚本分配给了一个图像,基本上就像一个按钮。