【发布时间】:2017-09-30 16:52:22
【问题描述】:
我有一个脚本,可以为单元格范围内的每个单元格发送一封电子邮件。为了防止在脚本重新运行时发送重复的电子邮件,它会在每次发送电子邮件时在每行中标记一个单元格(C 列)。请参阅“Sheet2”中的示例。
https://docs.google.com/spreadsheets/d/1_oMbZZjOhfdKuYNWOuyF3fao8yO6W3juFjUsFbFBJaU/edit?usp=sharing
但是,我想将其转换为“Sheet1”的脚本,只要相应行中的单元格包含特定文本,该脚本就会发送一封电子邮件。在此示例中,每当第 I 列包含复选标记 (✓) 时,我希望将一条消息(E 列)与其相应的主题行(D 列)一起发送。我还想防止重复电子邮件,就像“Sheet2”中的示例一样。换句话说,一旦第 I 列包含一个复选标记,则该消息已发送、完成,并且不会重新发送,除非该复选标记被删除并重新输入。
// This constant is written in column C for rows for which an email
// has been sent successfully.
var EMAIL_SENT = "EMAIL_SENT";
function sendEmails2() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName('Sheet2');
var startRow = 2; // First row of data to process
var numRows = 2; // Number of rows to process
// Fetch the range of cells A2:B3
var dataRange = s.getRange(startRow, 1, numRows, 3)
// 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 emailAddress = "ta.ri...@gmail.com";
var message = row[1]; // Second column
var emailSent = row[2]; // Third column
if (emailSent != EMAIL_SENT) { // Prevents sending duplicates
var subject = row[0]; // First column
MailApp.sendEmail(emailAddress, subject, message);
s.getRange(startRow + i, 3).setValue(EMAIL_SENT);
SpreadsheetApp.flush();
}
}
}
任何帮助将不胜感激。
谢谢!
【问题讨论】:
标签: email text google-sheets cell send