Google-apps-script不会在onEdit函数中发送电子邮件
Google-apps-script will not send email inside an onEdit function
我有一个脚本,可以在编辑电子表格时发送电子邮件。脚本运行,但 MailApp 语句不起作用。
以下是执行日志:
[15-01-27 14:15:17:951 EST] 电子表格应用程序.getActiveSpreadsheet() [0 秒] [15-01-27 14:15:17:951 EST]Spreadsheet.getActiveRange() [0 seconds] [15-01-27 14:15:17:952 EST]Range.getRow() [0 seconds] [15-01-27 14:15:17:952 EST]Range.getLastRow() [0 seconds] [15-01-27 14:15:17:952 EST]Range.getColumn() [0 seconds] [15-01-27 14:15:17:952 EST]Range.getLastColumn() [0 seconds] [15-01-27 14:15:17:955 EST]开始执行 [15-01-27 14:15:17:969 EST]Logger.log([{"range":{"rowStart":79,"rowEnd":79,"columnEnd":6,"columnStart":6},"source":{},"value":"Xxxx","user":{}}, []]) [0 秒] [15-01-27 14:15:17:969 EST]SpreadsheetApp.getActiveSpreadsheet() [0 seconds] [15-01-27 14:15:18:058 EST]电子表格.getSheets() [0.088 秒] [15-01-27 14:15:18:145 EST]电子表格.getSheets() [0.086 秒] [15-01-27 14:15:18:145 EST]记录器.log([客户行 = 79, []]) [0 秒] [15-01-27 14:15:18:145 EST]Sheet.getRange([79, 6]) [0 seconds] [15-01-27 14:15:18:233 EST]Sheet.getDataRange() [0.087 秒] [15-01-27 14:15:18:324 EST]Range.getValues() [0.091 秒] [15-01-27 14:15:18:327 EST]执行失败:您无权调用 sendEmail(第 21 行,文件"代码")[0.368 秒 总运行时间]
我已经在其他脚本上使用过mailApp.sendEmail,它运行良好。这是附加到电子表格/表单的第二个脚本,第一个脚本还从formSubmit发送电子邮件。我已允许所有触发器和权限。
任何帮助表示赞赏代码如下:
function onEdit(e) {
Logger.log(JSON.stringify(e));
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = ss.getSheets()[0]
var sheet2 = ss.getSheets()[4];
var column = Number(e.range.columnStart);
if(column != 6){return};
var Customer = Number(e.range.rowStart);
Logger.log('Customer row = '+Customer);
var name = sheet1.getRange(Customer,6);
var emailArray = sheet2.getDataRange().getValues();
for (i=0;i < emailArray.length;i++){
if (name == emailArray[i][0]) {
var email_address = emailArray[i][1];
}
}
var subject = "Job assignment";
var body = "X";
MailApp.sendEmail(email_address,subject,body);
}
就像另一个答案说你不能从正常的onEdit调用sendMail。
解决方法:将onEdit重命名为"onEditTrigger"等其他名称,然后从"资源"菜单中手动安装触发器。
该链接还解释了不同类型的触发器之间的差异,包括您刚刚发现的限制。在这种情况下,onEdit 是一个简单的触发器,而我的 onEditTrigger 是可安装的触发器
您收到此错误是因为您在onEdit()触发器中调用sendMail。您不能在 onEdit 中调用 URLFetch 或 MailApp 方法。
- 如果我在javascript中输入无效的电子邮件或空白,如何显示特定的文本框边框红色
- 使用angularjs验证文本框中的电子邮件
- 使用正则表达式评估电子邮件地址时出现性能问题
- javascript中添加验证电子邮件的问题
- 如何在收到电子邮件时自动调用脚本
- 使用emailyak在angularjs函数中发送电子邮件
- Angularjs, lexerr Lexer 错误:如何将电子邮件地址(regex)传递给函数
- Google-apps-script不会在onEdit函数中发送电子邮件
- 调用外部JS函数验证电子邮件
- 尝试使用mailgun发送电子邮件时获得“类型错误:未定义不是一个函数”
- 使用 JavaScript 函数打印电子邮件地址以防止垃圾邮件有多好
- 电子邮件验证函数在 JavaScript 表单验证中与 element[x] 不起作用
- 用于发送电子邮件的Javascript函数不起作用(固定命令打开outlook,而函数不起)
- 使用指定的哈希函数解密哈希后的电子邮件地址
- Javascript函数,将复制/捕获HTML内容从网页&粘贴/显示在电子邮件中
- CodeIgniter safe_mailto函数不会混淆电子邮件地址
- PHP邮件函数发送电子邮件,但AJAX函数出错
- 在现有的验证函数中添加电子邮件验证函数
- javascript上的电子邮件验证函数错误
- 我可以使用哪些JavaScript函数来检查电子邮件和电话#是否有效,而无需使用jquery插件