我只需要脚本(sendEmail02())从仅列在第2列中的邮件的人的表中收集数据,并将所有数据以一个字母的形式发送给他,因此每个人依次发送。有必要在迭代过程中从第2列中读取地址,并收集数据并将其以单独的字母发送给每个接收者。如果一次只向每个用户发送一封包含所有必要行内容的信件,那将是很好的选择。
function sendEmail02() {
var ss = SpreadsheetApp.openById(sheetID);
var ActiveSheet = ss.getSheetByName("Sheet1");
if (ActiveSheet.getName() == 'Sheet1') {
var StartRow = 2;
var RowRange = ActiveSheet.getLastRow() - StartRow + 1;
var WholeRange = ActiveSheet.getRange(StartRow,1,RowRange,3);
var AllValues = WholeRange.getValues();
var message = "";
for (i in AllValues) {
var CurrentRow = AllValues[i];
if (CurrentRow[0] == "sent" && CurrentRow[1] != ""&& CurrentRow[2] != "") {
message +=
"<p><b> ? </b>" +
"<p><b> Email: </b>" + CurrentRow[1] + "</p>" +
"<p><b> Text: </b>" + '<font color="green">' + CurrentRow[2] + '</font>' + "</p>" + "</p>
<br><br>";
var setRow = parseInt(i) + StartRow;
ActiveSheet.getRange(setRow, 1).setValue("done");
}
}
var recipientsTO = 'test@google.com'; // this must be collected from Col2.But how?
var SendTo = (MyEmail + "," + recipientsTO);
var Subject = "Hello" ;
if (message) {
MailApp.sendEmail({
bcc: SendTo,
subject: Subject,
htmlBody: message,
});
}
}
}
根据上面的代码
var recipientsTO = 'test@google.com'; // this must be collected from Col2.But how?
答案 0 :(得分:2)
此功能收集每个收件人的所有邮件,并向每个收件人发送一封包含所有邮件的电子邮件。我修改了消息,使其更易于调试,因此您需要重写消息。
我还使用了一个对话框来显示消息内容,而不是发送电子邮件,因此您必须启用它并自己进行测试。
function sendEmail02() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet1');
if (sh.getName()=='Sheet1') {
var rg=sh.getRange(2,1,sh.getLastRow()-1,3);//What about column 4?
var v=rg.getValues();
var mObj={rA:[]};
var html='';
for (var i=0;i<v.length;i++) {
if (v[i][0]=="sent" && v[i][1]!="" && v[1][2] != "") {
var message=Utilities.formatString('<br />Email:%s Text:%s',v[i][1],v[i][2]);
if(mObj.hasOwnProperty(v[i][1])) {
mObj[v[i][1]]+=message;
mObj[v[i][1]+'rows'].push(i+2);
} else {
mObj[v[i][1]]=message;
mObj.rA.push(v[i][1]);
mObj[v[i][1]+'rows']=[];
mObj[v[i][1]+'rows'].push(i+2);
}
}
}
for(var i=0;i<mObj.rA.length;i++) {
var SendTo=mObj.rA[i];
var Subject = "Hello" ;
//MailApp.sendEmail({bcc: SendTo,subject: Subject,htmlBody: mObj[mObj.rA[i]]+});
html+=Utilities.formatString('<br />Recipient: %s<br />Subject; %s<br />Message: <br />%s<br /><hr width="100%">',SendTo,Subject,mObj[mObj.rA[i]])
for(var j=0;j<mObj[mObj.rA[i]+'rows'].length;j++) {
sh.getRange(mObj[mObj.rA[i]+'rows'][j],1).setValue("done");
}
}
var ui=HtmlService.createHtmlOutput(html).setWidth(1000);
SpreadsheetApp.getUi().showModelessDialog(ui, "Emails Sent");
}
}
我用您的数据对其进行了测试,这是将第一列中的所有行都设置为发送后的对话框输出。
Recipient: test01@gmail.com
Subject; Hello
Message:
Email:test01@gmail.com Text:Data1
Email:test01@gmail.com Text:Data2
Email:test01@gmail.com Text:Data3
Email:test01@gmail.com Text:Data6
Email:test01@gmail.com Text:Data7
Recipient: test02@gmail.com
Subject; Hello
Message:
Email:test02@gmail.com Text:Data4
Recipient: test03@gmail.com
Subject; Hello
Message:
Email:test03@gmail.com Text:Data5
Email:test03@gmail.com Text:Data8
Email:test03@gmail.com Text:Data9