在脚本上工作以在作业完成后发送电子邮件。我添加了一个我认为可以防止两次发送电子邮件的内容。无法弄清楚原因。
function sendEmail()
{
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2;
var numRows = sheet.getLastRow();
var EMAIL_SENT = "EMAIL_SENT";
var dataRange = sheet.getRange(startRow, 1, numRows, 3)
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i)
{
var row = data[i];
var emailAddress = row[1];
var message = "Correction Completed for " + row[2];
var subject = "Correction Completed";
var emailSent = row[9];
if (emailSent != "EMAIL_SENT") //prevent sending duplicate messages
{
MailApp.sendEmail(emailAddress, subject, message);
sheet.getRange(startRow + i, 9).setValue(EMAIL_SENT);
SpreadsheetApp.flush();
}
}
}
我的想法是将sendEmail部分放在if语句中,它不会发送。但是它仍然会发送电子邮件。先感谢您。
答案 0 :(得分:1)
您的问题是var dataRange = sheet.getRange(startRow, 1, numRows, 3)
。由于3
,请尝试将9
更改为大于var emailSent = row[9];
的内容。当您阅读emailSent
时,请注意阅读以前的书面状态。
答案 1 :(得分:0)
让我澄清两件事:
sheet.getRange(startRow + i, 9).setValue(EMAIL_SENT);
时,您确实在第9列中编写了EMAIL-SENT标签,因为getRange适用于从1开始的列号。var emailSent = row[8];
获取相应的第9个值var dataRange = sheet.getRange(startRow, 1, numRows, 9)
例如...... (但不能少于在任何情况下都超过9) 希望这很清楚。