Google-apps-script不会在onEdit函数中发送电子邮件

use*_*078 1 javascript email triggers google-sheets google-apps-script

我有一个脚本,可以在编辑电子表格时发送电子邮件.该脚本运行,但MailApp语句不起作用.

这是执行日志:

[15-01-27 14:15:17:951 EST] SpreadsheetApp.getActiveSpreadsheet()[0秒] [15-01-27 14:15:17:951 EST] Spreadsheet.getActiveRange()[0秒] [15 -01-27 14:15:17:952 EST] Range.getRow()[0秒] [15-01-27 14:15:17:952 EST] Range.getLastRow()[0秒] [15-01] -27 14:15:17:952 EST] Range.getColumn()[0秒] [15-01-27 14:15:17:952 EST] Range.getLastColumn()[0秒] [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秒] [15-01-27 14:15:18:058 EST] Spreadsheet.getSheets()[0.088秒] [15-01-27 14:15:18:145 EST] Spreadsheet.getSheets()[0.086秒] [15-01-27 14:15:18:145 EST] Logger.log([Customer row = 79,[]])[0秒] [15-01-27 14:15:18:145 EST] Sheet.getRange([79,6])[0秒] [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行,文件"Code")[总运行时间为0.368秒]091秒] [15-01-27 14:15:18:327 EST]执行失败:您无权调用sendEmail(第21行,文件"Code")[总运行时间为0.368秒]091秒] [15-01-27 14:15:18:327 EST]执行失败:您无权调用sendEmail(第21行,文件"Code")[总运行时间为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);
}
Run Code Online (Sandbox Code Playgroud)

Zig*_*del 9

就像其他答案所说,你不能从正常的onEdit调用sendMail.

修复:将onEdit重命名为"onEditTrigger"之类的其他内容,并从"Resources"菜单中手动安装触发器.

该链接还解释了不同类型的触发器之间的差异,包括您刚刚发现的限制.在这种情况下,onEdit是一个简单的触发器,而我的onEditTrigger是一个可安装的触发器