[英]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”。
我通过执行以下步骤解决了这个问题:
{
"oauthScopes": ["https://www.googleapis.com/auth/spreadsheets", "https://www.googleapis.com/auth/script.send_mail"],
}
PS:我将脚本分配给了一个图像,它基本上就像一个按钮。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.