Я должен отправлять электронные письма с данными из некоторых столбцов.Если электронное письмо повторяется, я хотел бы отправить только одно электронное письмо со значениями из других ячеек. - PullRequest
0 голосов
/ 18 февраля 2019

Примечание. Я использую сценарий Google Apps для моего сценария.

У меня есть столбцы A, B и C с данными для отправки на электронные письма из столбца D (строка за строкой).Я отсортировал список в алфавитном порядке, и некоторые адреса повторяются.

Сейчас мой код отправляет одно электронное письмо на каждый адрес в столбце D, но это означает, что если значение будет повторено, человек получит несколько электронных писем.

Если запись повторяется, Как мне отправить только одно сообщение, содержащее соответствующие значения из столбцов A, B и C?

Имя Фамилия Имя пользователя Email Manager Email

Имя 1 Фамилия 1 user1@domain.com manager1@domain.com

Имя 2 Фамилия 2 user2@domain.com manager2@domain.com

Имя 3 Фамилия 3 user3@domain.com manager2@domain.com

Имя 4 Фамилия 4 user4 @ домен.com manager2@domain.com

Имя 5 Фамилия 5 user5@domain.com manager3@domain.com

В приведенной выше таблице показано, что manager2@domain.com повторяется три раза в списке.Я хотел бы избежать отправки нескольких электронных писем одному и тому же менеджеру и просто отправить одно сообщение, содержащее значения из других столбцов.

например

To: manager2@domain.comТема: Отчет

--------------------------------------------------

Добрый день,

Следующие люди ...

Имя 2 Фамилия 2 с электронной почтой user2@domain.com

Имя 3 Фамилия 3 с электронной почтой user3@domain.com

Имя 4 Фамилия 4 с электронной почтой user4@domain.com

...

--------------------------------------------------

Спасибо

1 Ответ

0 голосов
/ 18 февраля 2019

Попробуйте это:

Я считаю, что использование объектов - это отличный способ группировки информации.

function concatColumn() {
  var mgrcol=4;
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var rg=sh.getDataRange();
  var vA=rg.getValues();
  var mgrA=[];
  var html='';
  for(var i=1;i<vA.length;i++) {
    if(mgrA.indexOf(vA[i][3])==-1) {
      mgrA.push(vA[i][3]); 
    }
  }
  var mgrObj={}
  for(var i=0;i<mgrA.length;i++) {
    for(var j=0;j<vA.length;j++) {
      if(mgrA[i]==vA[j][3]){
        if(mgrObj.hasOwnProperty(mgrA[i])) {
          mgrObj[mgrA[i]]+=Utilities.formatString('~~~FirstName: %s<br />LastName: %s<br />UserEmail: %s',vA[j][0],vA[j][1],vA[j][2]);
        }else{
          mgrObj[mgrA[i]]=Utilities.formatString('FirstName: %s<br />LastName: %s<br />UserEmail: %s',vA[j][0],vA[j][1],vA[j][2]);
        }                                               
      } 
    }
  }
  for(var i=0;i<mgrA.length;i++) {
    var tA=mgrObj[mgrA[i]].split('~~~');
    var s='User Information<br /></br />';
    for(var j=0;j<tA.length;j++) {
      s+=tA[j].toString() + '<br />'; 
    }
    s+='<hr widht="100" />';
    GmailApp.sendEmail(mgrA[i], 'User Names and Emails', null, {htmlBody:s})
    //html+=Utilities.formatString('Email Recipient: <strong>%s</strong><br />',mgrA[i]) + s;//debug 
  }
  //var ui=HtmlService.createHtmlOutput(html);//debug
  //SpreadsheetApp.getUi().showModelessDialog(ui, 'Emails');//debug
}

Последние несколько закомментированных строк используются для создания копии письма дляотобразить в диалоговом окне для отладки сценария.Надеюсь это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...