我无法弄清楚为什么我的剧本没有给我我需要的结果。简而言之,我有一个脚本,从我的谷歌电子表格中获取信息并准备草稿电子邮件。这部分是满意的,但是我在将一个组添加到脚本的“To:”部分时遇到了麻烦。我可以有效地识别该组并将电子邮件地址作为逗号分隔的字符串。记录器在新行中列出每个电子邮件地址,但最终结果仅将最后一个地址添加到草稿电子邮件中。我已经发布了下面的整个功能。有人可以看看,告诉我哪里误入歧途?任何帮助将不胜感激。提前谢谢。
function createDraft() {
var forScope = GmailApp.getInboxUnreadCount(); // needed for auth scope
var ss = SpreadsheetApp.getActive();
var activerange = ss.getActiveRange()
var cell = ss.getActiveCell();
var rng = cell.getRow();
var boundary = "labnol" + (new Date()).getTime().toString();
var cell2 = new Date (ss.getRange('g'+rng).getValue());
var cell3 = Utilities.formatDate(cell2,"PST", "MM/dd/yyyy");
var cell4 = new Date(cell2.getTime()+7*(24*3600*1000));
var cell5 = Utilities.formatDate(cell4,"PST", "MM/dd/yyyy");
var subj = ss.getRange('b'+rng).getValue()+', '+ss.getRange('c'+rng).getValue()+' - Survey ID:'+ss.getRange('d'+rng).getValue()+' - Due Date:'+cell5;
var bdys = ss.getRange('m'+rng).getValue();
var bdy1 = bdys.split('|')[0];
var bdy2 = ss.getRange('a'+rng).getValue()+' '+ss.getRange('b'+rng).getValue()+', '+ss.getRange('c'+rng).getValue()+' '+ss.getRange('d'+rng).getValue()+' '+ss.getRange('e'+rng).getValue();
var bdy3s = ss.getRange('o'+rng).getValue()
var bdy3 = bdy3s.split(' - ')[0];
var bdy4 = bdy3s.split(' - ')[1];
var bdy5 = bdys.split('|')[1];
var bdy6 = bdy5.replace(/^\s\s*/, "");
var emp = (Session.getActiveUser().getEmail());
var group = ContactsApp.getContactGroup('CCI_All');
var email = new String();
var contacts = group.getContacts();
for (var i=0; i<contacts.length; i++){
email = "";
email = contacts[i].getPrimaryEmail()+',';
{Logger.log(email)}
var raw =
'Subject:' + subj+'\n' +
'To:'+email+'\n' +
'Content-Type: multipart/alternative; boundary=' + boundary + '\n' +
'AE Notes - '+bdy1+'\n' +
bdy2+'\n' +
bdy3+'\n' +
bdy4+'\n' +
bdy6+'\n' +
'Thank You\n' +
emp+'\n' +
'--' + boundary + '--\n';
}
var draftBody = Utilities.base64Encode(raw);
var params = {method:"post",
contentType: "application/json",
headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
muteHttpExceptions:true,
payload:JSON.stringify({
"message": {
"raw": draftBody
}
})
};
var resp = UrlFetchApp.fetch("https://www.googleapis.com/gmail/v1/users/me/drafts", params);
Logger.log(resp.getContentText());
}
答案 0 :(得分:0)
这是因为您没有将旧电子邮件字符串与新电子邮件ID连接在一起。您只是先分配一个空值,然后每次分配单个联系人的主电子邮件。
尝试使用这种方式:
email = "";
for (var i=0; i<contacts.length; i++)
email = email + ',' + contacts[i].getPrimaryEmail();
希望有所帮助!