【发布时间】:2016-04-05 00:46:00
【问题描述】:
感谢在这个网站上的大量阅读,我成功地构建了一个脚本来完成我想要它做的事情:运行时,脚本会为电子表格中的每个新行发送一封单独的电子邮件,然后将该行标记为“已发送”。 "耶!
但现在我需要脚本将所有行编译成单个电子邮件中的多个部分。因此,我需要脚本来检查新行,使用模板将每个新行中的值添加到单独的部分中,将所有新部分编译成电子邮件,发送电子邮件,然后将所有新行标记为“已发送”。
我被卡住了,因为似乎我需要让每个新添加的行定义一个相对变量,即第一个未发送的行 = sectionOne,第二个 = sectionTwo,等等。但是电子邮件的长度和变量的数量定义将取决于新行的数量。所以我真的不知道如何让脚本循环并仅将(但全部)新内容添加到电子邮件正文中。
这就是我所拥有的,有人知道如何在这里达到目标吗?
function sendEmail() {
//setup function
var ActiveSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var StartRow = 3;
var RowRange = ActiveSheet.getLastRow() - StartRow + 1;
var WholeRange = ActiveSheet.getRange(StartRow,1,RowRange,11);
var AllValues = WholeRange.getValues();
//iterate loop
for (i in AllValues) {
//set current row
var CurrentRow = AllValues[i];
//set subject line
var Subject = "Found by " + CurrentRow[1];
//set HTML template for information
var message =
"<p><b>Title: </b>" + CurrentRow[2] + "</p>" +
"<p><b>Agency: </b>" + CurrentRow[3] + "</p>" +
"<p><b>Summary: </b>" + CurrentRow[4] + "</p>" +
"<p><b>Due: </b>" + CurrentRow[5] + "</p>" +
"<p><b>Posted: </b>" + CurrentRow[6] + "</p>" +
"<p><b>Total Funding: </b>" + CurrentRow[7] + "</p>" +
"<p><b>Announcement Number: </b>" + CurrentRow[8] + "</p>" +
"<p><b>Useful Links: </b>" + CurrentRow[9] + "</p>";
//define column to check if sent
var EmailSent = CurrentRow[11];
//define who to send grants to
var SendTo = "emailaddress1@gmail.com" + "," + "emailaddress2@gmail.com";
//if row has not been sent, then...
if (emailsent != "sent") {
//set the row to look at
var setRow = parseInt(i) + startRow;
//mark row as "sent"
ActiveSheet.getRange(setRow, 11).setValue("sent");
//send the actual email
MailApp.sendEmail({
to: SendTo,
cc: "",
subject: subject,
htmlBody: message,
});
}
}
}
【问题讨论】: