Javascript 谷歌应用程序脚本通过电子表格发送电子邮件无效
我有一个谷歌脚本的问题。基本上,我的目标是让脚本检查客户的案例是否得到解决,然后向他们发送电子邮件,告知问题已经解决。我已经完成了发送电子邮件的逻辑,但每次我尝试将其应用到电子表格中时,都会出现错误:Javascript 谷歌应用程序脚本通过电子表格发送电子邮件无效,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我有一个谷歌脚本的问题。基本上,我的目标是让脚本检查客户的案例是否得到解决,然后向他们发送电子邮件,告知问题已经解决。我已经完成了发送电子邮件的逻辑,但每次我尝试将其应用到电子表格中时,都会出现错误: 错误 您没有呼叫MailApp.sendEmail的权限。所需权限:https://www.googleapis.com/auth/script.send_mail (第8行)。 我有一个简单的函数来测试它的功能,当在脚本编辑器中运行时,它可以正常工作,但不能在电子表格上运行。以下是我的示例函数:
错误
您没有呼叫MailApp.sendEmail的权限。所需权限: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.";}
根据报告:
如果自定义函数抛出错误消息,则您无权调用X服务。
,该服务需要用户授权,因此不能在自定义函数中使用
要使用上述服务以外的服务,请创建一个运行应用程序脚本函数的自定义菜单,而不是编写自定义函数。从菜单触发的功能将在必要时请求用户授权,从而可以使用所有应用程序脚本服务
方法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);
}
为了触发此函数的执行,您可以使用并选择最适合您的用例的函数
方法2
您还可以创建自定义菜单,并选择触发上述功能。您只需添加以下内容:
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu("My Menu")
.addItem("Send Email", "SendEmail")
.addToUi();
}
这就是电子表格上的情况:
参考文献
- )
- )
- )
- 打开“工具”->“脚本编辑器”
- 在“脚本编辑器”中,单击“查看”->“显示清单文件”
- 打开屏幕左侧显示的“appscript.json”文件并添加“https://www.googleapis.com/auth/script.send_mail“对于oauthScopes,如下所示:
PS:我将脚本分配给一个图像,它基本上就像一个按钮。“在电子表格中实现它”是什么意思,将它用作电子表格单元格中的函数?阅读“应用程序脚本自定义功能”了解原因。错误是正确的。如果这个函数实际上可以被称为自定义函数——多少电子邮件会被发送呢?他们什么时候会被送到?(注:通过使用
控制台
或记录器
,查看函数内部函数的实际参数,并将其与您期望的进行比较)是的,因此我将如何在单元格上调用它基本上是:=myFunction(ROW())。然后在我的完整代码中,它会有某些检查,这样它就不会在每次刷新页面时发送电子邮件。查看定时触发器或添加菜单。自定义函数没有发送邮件的权限。的可能重复项
{
"oauthScopes": ["https://www.googleapis.com/auth/spreadsheets", "https://www.googleapis.com/auth/script.send_mail"],
}