繁体   English   中英

Google Apps Script 通过电子表格发送电子邮件不起作用

[英]Google Apps Script send email through spreadsheet not working

我有一些 Google Script 的问题。 基本上,我的目标是让脚本检查客户的案例是否已解决,然后向他们发送电子邮件,说明问题已解决。 我已经完成了关于何时发送电子邮件的逻辑,但是每次我尝试将它实施到电子表格中时,我都会收到错误消息:

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.";}

根据Apps Script Custom Functions 文档

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

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

方法一

基本上,您可以通过以下方式复制上述两个函数的所需行为:

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 脚本触发器并选择最适合您的用例的触发器

方法二

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

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

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

自定义菜单

参考

我今天遇到了同样的问题“您没有权限调用 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:我将脚本分配给了一个图像,它基本上就像一个按钮。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM