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

时间:2015-01-27 04:30:01

标签: javascript email google-apps-script triggers google-sheets

我有一个脚本,可以在编辑电子表格时发送电子邮件。该脚本运行,但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},"源":{},"值":&#34 ; XXXX""用户":{}},   []])[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行,文件"代码")[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);
}

2 个答案:

答案 0 :(得分:9)

与其他答案一样,您无法从正常的onEdit调用sendMail。

要修复:将onEdit重命名为“onEditTrigger”和manually install之类的其他内容来自“资源”菜单的触发器。

该链接还解释了不同类型的触发器之间的差异,包括您刚刚发现的限制。在这种情况下,onEdit是simple trigger,而我的onEditTrigger是installable trigger

答案 1 :(得分:4)

您收到此错误是因为您在onEdit()触发器内调用sendMail。您无法在onEdit中调用URLFetch或MailApp方法。