当前位置: 首页 > 知识库问答 >
问题:

谷歌应用程序脚本通过电子表格发送电子邮件无效

郏稳
2023-03-14

我有一个谷歌脚本的问题。基本上,我的目标是让脚本检查客户的案例是否得到解决,然后向他们发送电子邮件,告知问题已经解决。我已经完成了发送电子邮件的逻辑,但每次我尝试将其应用到电子表格中时,都会出现错误:

错误您没有调用MailApp的权限。发送电子邮件。所需权限:https://www.googleapis.com/auth/script.send_mail(第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个答案

丁俊智
2023-03-14

我今天遇到了同样的问题“你没有呼叫MailApp.sendEmail的权限”。

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

  • 打开“工具”-
{
  "oauthScopes": ["https://www.googleapis.com/auth/spreadsheets", "https://www.googleapis.com/auth/script.send_mail"],
}

附言:我把脚本分配给一个图像,它基本上就像一个按钮。

邵伟
2023-03-14

根据应用程序脚本自定义功能文档:

如果自定义函数抛出错误消息,则您无权调用X服务 ,该服务需要用户授权,因此无法在自定义功能中使用。

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

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

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);

}

为了触发该函数的执行,您可以使用应用脚本触发器,并选择一个最适合您的用例的触发器。

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

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

这就是电子表格上的情况:

>

应用脚本范围类-isBlank();

应用脚本自定义菜单;

应用脚本触发器。

 类似资料:
  • 我是谷歌脚本的新手,不知道是否有人能帮我。 我有一个共享的谷歌电子表格,基本上是用新的员工信息更新行。 我希望只有当插入这些新员工行时,特定列(比如F列)上的“ABC”字符串匹配时,才会触发电子邮件。基本上,电子邮件触发器会让我们的团队知道如何设置新的员工帐户。 有人能帮我吗?我不知道如何进行字符串匹配,也不知道如何让它专门发送给固定的电子邮件收件人。我已经安装了Python、gspread和gd

  • 我有一个电子表格,存储工作表1上的任务。当一个任务完成时,就会发送一封电子邮件。表2保存了发送到、抄送和回复的特定电子邮件地址。我可以循环浏览第2页并获得每一栏的电子邮件地址。我想能够得到这些电子邮件地址到我的选项发送电子邮件在MailApp。无法从工作表2的循环中获取电子邮件地址。请参阅下面的代码。任何帮助都将不胜感激。

  • 我已经建立了一个谷歌表单,我的回复被记录在一个电子表格中。理想情况下,我希望回复也通过电子邮件发送。

  • 所以我想知道我是否可以访问我的签名从我的Gmail帐户和发送电子邮件连同它。是否可以使用Gmail API和应用程序脚本? 这是我目前得到的。

  • 我有谷歌发票电子表格,我用vlookup公式从其他(数据)表中获取数据。只有我需要在发票表中输入行号。所以我创建了一个循环脚本,其中数据表中的自动行号将输入到发票表中,并发送带有PDF附件的电子邮件。当运行该脚本时,请正确输入每行的行号,但电子邮件不会发送。