繁体   English   中英

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

[英]Google-apps-script will not send email inside an onEdit function [duplicate]

我有一个脚本,可以在编辑电子表格时发送电子邮件。 该脚本运行,但是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 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},”源“:{},”值“:” 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([客户行= 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);
}

就像其他答案一样,您无法从常规onEdit调用sendMail。

要解决的问题 :将onEdit重命名为“ onEditTrigger”之类的东西,然后从“资源”菜单中手动安装触发器。

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

由于在onEdit()触发器内调用sendMail,因此出现此错误。 您不能在onEdit内调用URLFetch或MailApp方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM