我有一个电子邮件脚本,我一直在处理该部分的工作,但复制电子邮件存在问题。电子邮件确实正确触发,但下次脚本运行时,它会在不应该触发的情况下触发副本?
这是我在工作表中的数据结构。
日期:发件人电子邮件:企业电子邮件:消息:企业名称:企业 ID:发件人 ID:电子邮件状态:
这是我的代码。
var EMAIL_SENT = 'EMAIL_SENT';
function sendEmails2() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Contact Form Submissions");
sheet.activate()
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 1; // Number of rows to process
var dataRange = sheet.getRange(startRow, 1, numRows, 8);
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var emailSent = row[8];
Logger.log(data);
if (emailSent !== EMAIL_SENT) { // Prevents sending duplicates
var subject = 'RE: QTown user contact form submission for ' + row[4];
var emailAddress = row[2];
var message = 'Greetings!\n\nOn ' + row[0] + ', ' + row[1] + ' submitted a contact form from your profile on QTown.\n\nThe Message:\n' + row[3] + '\n\nPlease respond to the users questions as soon as possible.\n\nThank you!\nQT';
MailApp.sendEmail(emailAddress, subject, message);
sheet.getRange(startRow + i, 8).setValue(EMAIL_SENT);
// Make sure the cell is updated right away in case the script is interrupted
SpreadsheetApp.flush();
}
}
}
答案 0 :(得分:1)
问题是您将 EMAIL_SENT
存储在 8
列中,即 H
列:
sheet.getRange(startRow + i, 8).setValue(EMAIL_SENT)
但是在 if 条件中,您正在检查列 9
,即列 I
,因为 JavaScript 中的数组索引从 0
开始。
var emailSent = row[8]
将 EMAIL_SENT
存储在列 H
中:
替换:
var emailSent = row[8]
与:
var emailSent = row[7]
将 EMAIL_SENT
存储在列 I
中:
替换:
sheet.getRange(startRow + i, 8).setValue(EMAIL_SENT);
与:
sheet.getRange(startRow + i, 9).setValue(EMAIL_SENT);