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

查看:62
本文介绍了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]电子表格。 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] Spreadsheet.getSh eets()[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秒
总运行时间]

[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天全站免登陆