【发布时间】:2017-06-23 10:49:27
【问题描述】:
我正在尝试遍历电子表格,并为每一行发送一封电子邮件。发送电子邮件后,我想删除该行。
但是这行不通。
由于某种原因,它开始疯狂地发送电子邮件,并在某个时候达到限制并退出。
实际上只删除了一行。
请看下面的代码:
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)
}
}
逻辑是,如果有有效的电子邮件,发送电子邮件,删除行。
但一旦执行,它只会删除一行,发疯似的发送电子邮件,并得到电子邮件最大错误。
想法?
【问题讨论】:
-
在调试模式下测试。好像卡在了线上:MailApp.sendEmail(sendto, subject, message);不知道是不是因为涨停了?
-
尝试
getLastRow而不是getMaxRow。您可能会收到大量空白数据并使用(sendto!='')获得真实的转换错误 -
谢谢,需要 24 小时才能测试。如果有效,我会通知您,以便您写下答案并得分。
-
使用类似: var getQuota = MailApp.getRemainingDailyQuota();查看您还剩下多少封电子邮件。
标签: javascript for-loop debugging google-apps-script google-sheets