【发布时间】:2019-07-29 21:25:44
【问题描述】:
表格馈入电子表格(用于提出 IT 支持请求),我希望它发送一封电子邮件并将该行标记为“已发送”。
脚本当前会为每一行发送一封电子邮件,而忽略它被标记为已发送的事实。
function sendEmail()
{
var ActiveSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var StartRow = 2;
var RowRange = ActiveSheet.getLastRow() - StartRow + 1;
var WholeRange = ActiveSheet.getRange(StartRow,1,RowRange,7);
var AllValues = WholeRange.getValues();
var message = "";
for (var i=0;i<AllValues.length;i++)
{
var CurrentRow = AllValues[i];
var EmailSent = CurrentRow[7];
if (EmailSent != "sent")
{
message +=
"<p><b>Timestamp: </b>" + CurrentRow[0] + "</p>" +
"<p><b>E-mail: </b>" + CurrentRow[1] + "</p>" +
"<p><b>Site: </b>" + CurrentRow[2] + "</p>" +
"<p><b>Summary: </b>" + CurrentRow[3] + "</p>" +
"<p><b>Description: </b>" + CurrentRow[4] + "</p>" +
"<p><b>Attachment: </b>" + CurrentRow[5] + "</p>";
var setRow = i + StartRow;
ActiveSheet.getRange(setRow, 7).setValue("sent");
var SendTo = "itsupport@company.com";
var Subject = "Support Request - ";
var replyTo = CurrentRow[1];
MailApp.sendEmail({to: SendTo,
replyTo: replyTo,
cc: "",
subject: Subject + " [" + CurrentRow[2] + "] " + CurrentRow[3],
htmlBody: message,});
}
}
}
目前它会为每一行发送一封电子邮件,并将该行标记为已发送(第 7 列)。这似乎是正确的,但在下一次运行时,它将为相同的行和任何未标记为已发送的新行发送一封电子邮件
【问题讨论】:
-
您是否尝试过在
if语句中使用!==而不是!=? -
刚刚测试过它仍然会重新发送所有行,不管