我还在这里学习绳索和希望有人能够提出最好的解决方法(我已经找到了解决办法,但没有成功!):
我的电子表格非常简单:
A栏:电子邮件地址; B列:要发送的消息。 (列A是使用一个公式生成的,该公式从Sheet2中较长的地址列表中获取一些电子邮件地址。)
Sheet2包含所有电子邮件地址的“主”列表.-列A:名称; B栏:电子邮件收件人
我使用下面的代码作为起点。它将电子邮件发送到Sheet1中的地址,并在发送电子邮件时(或者更确切地说当脚本处理完该行时)用CMA标记“EMAIL_SENT”中的单元格。
我想在Sheet2的C栏中记录发送给每个人的电子邮件总数,但是我不知道最好的方法是什么,或者如果我是诚实的,从哪里开始!
function sendEmails() {
var sheet = SpreadsheetApp.getSheetByName('Sheet1');
var EMAIL_SENT = "EMAIL_SENT";
var startRow = 1; // First row of data to process
var dataRange = sheet.getDataRange()
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var emailAddress = row[0]; // First column
var message = row[1]; // Second column
var emailSent = row[2]; // Third column
if (emailSent != EMAIL_SENT) { // Prevents sending duplicates
var subject = "Sending emails from a Spreadsheet";
MailApp.sendEmail(emailAddress, subject, message);
sheet.getRange(startRow + i, 3).setValue(EMAIL_SENT);
// Make sure the cell is updated right away in case the script is interrupted
SpreadsheetApp.flush();
}
}
}
如上所述,我想在Sheet2中为每个人保留计数,因为它包含每个人的电子邮件地址(而Sheet1只有少数几个,这个列表每天都会更改)。
任何人都可以对此有所了解吗?任何建议都将非常感谢。
非常感谢您的光临。
答案 0 :(得分:1)
步骤1:在Sheet2中找到该电子邮件所在的行。
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
var numRows = sheet2.getDataRange().getNumRows();
var emailList = sheet2.getRange(1,2,numRows,1).getValues();
var emailRow = -1;
for (var j=0; j<numRows; j++) {
if (emailList[j][0]==WHATEVER_EMAIL_YOU_ARE_LOOKING_FOR) {
emailRow = j;
break;
}
}
if (emailRow==-1) { /*ERROR! Couldn't find email.*/ }
第2步:获取旧的电子邮件数。
var oldValue = sheet2.getRange(emailRow+1,3).getValue();
步骤3:写入新值+ 1。
sheet2.getRange(emailRow+1,3).setValue(oldValue+1);
注意:emailRow从零开始,而getRange()是从一开始的。