Google Apps脚本无法通过电子表格发送电子邮件

时间:2018-10-04 21:51:10

标签: javascript google-apps-script google-sheets

我对某些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.";}

2 个答案:

答案 0 :(得分:1)

根据Apps Script Custom Functions documentation

如果您的自定义函数引发错误消息You do not have permission to call X service.,则该服务需要用户授权,因此不能在自定义函数中使用。

要使用除上面列出的服务以外的其他服务,请创建一个运行Apps脚本功能的自定义菜单,而不是编写一个自定义功能。通过菜单触发的功能将在必要时询问用户授权,因此可以使用所有Apps Script服务。

方法1

基本上,您可以使用以下命令复制上述两个函数的所需行为:

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并选择最适合您的用例的一个。

方法2

您还可以创建一个自定义菜单,并可以选择触发上述功能。您只需要添加以下内容:

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu("My Menu")
      .addItem("Send Email", "SendEmail")
      .addToUi();
}

这就是电子表格上的样子:

custom menu

参考

答案 1 :(得分:0)

我今天遇到了同样的问题“您无权调用MailApp.sendEmail”。

我通过执行以下步骤解决了这个问题:

  • 打开“工具”->“脚本编辑器”
  • 在“脚本编辑器”中,单击“查看”->“显示清单文件”
  • 打开显示在屏幕左侧的“ appscript.json”文件,然后将“ https://www.googleapis.com/auth/script.send_mail”添加到oauthScopes中,如下所示:
{
  "oauthScopes": ["https://www.googleapis.com/auth/spreadsheets", "https://www.googleapis.com/auth/script.send_mail"],
}

PS:我将脚本分配给了一个图像,基本上就像一个按钮。