Google-apps-script 不会在 onEdit 函数内发送电子邮件 [英] Google-apps-script will not send email inside an onEdit function

查看:23
本文介绍了Google-apps-script 不会在 onEdit 函数内发送电子邮件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a script that sends an email when the spreadsheet is edited. The script runs, but the MailApp statement does not work.

这是执行日志:

[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 行,文件代码")[0.368 秒总运行时间]

[15-01-27 14:15:17:951 EST] SpreadsheetApp.getActiveSpreadsheet() [0 seconds] [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] Starting execution [15-01-27 14:15:17:969 EST] Logger.log([{"range":{"rowStart":79,"rowEnd":79,"columnEnd":6,"columnStart":6},"source":{},"value":"Xxxx","user":{}}, []]) [0 seconds] [15-01-27 14:15:17:969 EST] SpreadsheetApp.getActiveSpreadsheet() [0 seconds] [15-01-27 14:15:18:058 EST] Spreadsheet.getSheets() [0.088 seconds] [15-01-27 14:15:18:145 EST] Spreadsheet.getSheets() [0.086 seconds] [15-01-27 14:15:18:145 EST] Logger.log([Customer row = 79, []]) [0 seconds] [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 seconds] [15-01-27 14:15:18:324 EST] Range.getValues() [0.091 seconds] [15-01-27 14:15:18:327 EST] Execution failed: You do not have permission to call sendEmail (line 21, file "Code") [0.368 seconds total runtime]

我在其他脚本上使用了 mailApp.sendEmail,它运行良好.这是附加到电子表格/表单的第二个脚本,第一个脚本也从 formSubmit 发送电子邮件.我已允许所有触发器和权限.

I have used the mailApp.sendEmail on other scripts and it works well. This is the second script attached to the spreadsheet/form, the first also sends an email from formSubmit. I have allowed all triggers and permissions.

任何帮助表示赞赏代码如下:

Any help appreciated code below:

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 中调用 URLFetch 或 MailApp 方法.

You are getting this error because you are calling sendMail inside the onEdit() trigger. You cannot call URLFetch or MailApp methods inside onEdit.

这篇关于Google-apps-script 不会在 onEdit 函数内发送电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆