谷歌应用程序脚本添加一个组来草拟电子邮件

时间:2015-03-24 17:12:12

标签: javascript google-apps-script

我无法弄清楚为什么我的剧本没有给我我需要的结果。简而言之,我有一个脚本,从我的谷歌电子表格中获取信息并准备草稿电子邮件。这部分是满意的,但是我在将一个组添加到脚本的“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());
}

1 个答案:

答案 0 :(得分:0)

这是因为您没有将旧电子邮件字符串与新电子邮件ID连接在一起。您只是先分配一个空值,然后每次分配单个联系人的主电子邮件。

尝试使用这种方式:

email = "";
for (var i=0; i<contacts.length; i++)
email = email + ',' + contacts[i].getPrimaryEmail(); 

希望有所帮助!