我想要循环遍历一个电子表格,对于每一行发送一封电子邮件。一旦发送了电子邮件,我想删除该行。
然而,这并没有起作用。
由于某种原因,它开始疯狂地发送电子邮件,最终达到限制并退出。
实际上,它只删除了一行。
请参见下面的代码:
function sendEmails() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var startRow = 2; // First row of data to process
var maxRows = sheet.getMaxRows();
var range = sheet.getRange(startRow, 1, maxRows, 50)
var values = range.getValues();
for (var row in values) {
Logger.log('ID=' + values[row][0]);
var theID = values[row][0];
var message = "";
var sendto = "";
var emailAddress = values[row][2];
if (emailAddress=="Autre"){sendto="test@test.com"}
if (emailAddress=="Autre1"){sendto="test1@test.com"}
if (emailAddress=="Autre2"){sendto="test2@test.com"}
message+="\n ID: " + values[row][1];
message+="\n Project Number: " + values[row][2];
var subject = "Project ID: " + values[row][1];
if (sendto!=''){
MailApp.sendEmail(sendto, subject, message);
sheet.deleteRow(row+2)
}
}
逻辑是,如果有有效的电子邮件,则发送电子邮件并删除该行。 但一旦执行,仅会删除一行,疯狂发送电子邮件,并得到电子邮件最大错误。 你有什么想法吗?
getLastRow
而不是getMaxRow
。你可能会得到很多空数据并且在(sendto!='')
中出现真值转换错误。 - Spencer Easton