【发布时间】:2021-01-25 08:20:58
【问题描述】:
当我单独破坏它以复制记录然后发送邮件时,我的下面的代码可以正常工作。
我需要在 onedit 复制记录后运行发送邮件功能。该代码仅复制记录但不发送邮件。邮件代码在手动执行时有效。
function onEdit(event){ var ss = SpreadsheetApp.getActiveSpreadsheet();var s = event.source.getActiveSheet(); var r = event.source.getActiveRange();
if(s.getName() == "UK STOCK ALERTS" && r.getColumn() == 5 && r.getValue() == "Back Orders Accepted") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("AlertMailOut");
var target = targetSheet.getRange(1,16)
s.getRange(row, 1, 1, numColumns).copyTo(target);
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("AlertMailOut"); var startRow = 2; var numRows = 40; var dataRange = sheet.getRange(startRow, 1, numRows, 100); var data = dataRange.getValues(); for (var i = 0; i < data.length; ++i) {var row = data[i]; var emailAddress = row[0];var message = row[1]; // Second column
var emailSent = row[4]; // Third column
if (emailSent !== EMAIL_SENT) { // Prevents sending duplicates
var subject = 'Brick Fanatics Stock Update';
MailApp.sendEmail(emailAddress, subject, message);
SpreadsheetApp.flush();
} } } }
【问题讨论】:
-
如果您使用
onEdit作为简单触发器,请使用OnEdit的可安装触发器。因为我认为您的问题的原因是MailApp.sendEmail与简单触发器一起使用。 Related question -
顺便说一句,当您使用可安装的 OnEdit 触发器时,我建议将函数名称从
onEdit重命名为其他人。因为onEdit这个函数名是用于简单触发器的。因此,当可安装的 OnEdit 触发器安装到onEdit的函数时,该函数会以异步处理运行 2 次。 Ref所以请小心。