Как я могу использовать почту с листа? - PullRequest
0 голосов
/ 05 июля 2019

Я использую Отправить одно электронное письмо со значениями из всех новых строк в электронной таблице (Google Script / GAS) для отправки почты из листа в новой строке на указанный адрес.Теперь мне нравится использовать почтовый адрес из текущей строки.Также мне нравится включать ссылку на документ в почтовое сообщение ...

Это скрипт, который я использую:

function sendEmail() {

 //setup function
 var ActiveSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
 var StartRow = 3;
 var RowRange = ActiveSheet.getLastRow() - StartRow + 1;
 var WholeRange = ActiveSheet.getRange(StartRow,1,RowRange,22);
 var AllValues = WholeRange.getValues();

 //iterate loop
 for (i in AllValues) {

 //set current row
 var CurrentRow = AllValues[i];

 //set subject line
   var Subject = "Neu für " + CurrentRow[1]  + ": "+ CurrentRow[2] + " für " + CurrentRow[3];

 //set HTML template for information
 var message = 
      "<p><b>Ressort: </b>" + CurrentRow[1] + "</p>" +
      "<p><b>Textart: </b>" + CurrentRow[2] + "</p>" +
      "<p><b>Domain: </b>" + CurrentRow[3] + "</p>" +
      "<p><b>Thema: </b>" + CurrentRow[4] + "</p>" +
      "<p><b>fertig bis: </b>" + CurrentRow[15] + "</p>";

 //define column to check if sent
 var EmailSent = CurrentRow[0];

 //define who to send grants to 
 var SendTo = "xxx@yyy.com" + "," + "xxx@zzz.yyy.com";

 //if row has not been sent, then...  
 if (EmailSent != "gesendet") {

  //set the row to look at
  var setRow = parseInt(i) + StartRow;

  //mark row as "sent"
  ActiveSheet.getRange(setRow, 1).setValue("gesendet");

  //send the actual email  
  MailApp.sendEmail({
      to: SendTo,
      cc: "",
      subject: Subject,
      htmlBody: message,
});
}
}
}

1 Ответ

0 голосов
/ 06 июля 2019

Вы можете сделать что-то вроде этого:

Лично я бы не использовал активный лист. Я бы предпочел использовать getSheetByName (), но я предполагаю, что все это работает для вас, поэтому я не изменил его. Я прокомментировал элементы, которые я изменил или добавил.

function sendEmail() {
  var ActiveSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var StartRow = 3;
  var RowRange = ActiveSheet.getLastRow() - StartRow + 1;
  var WholeRange = ActiveSheet.getRange(StartRow,1,RowRange,23);//Added a new column for recipient email address
  var AllValues = WholeRange.getValues();
  for (var i=0;i<AllValues.length;i++) {
    var CurrentRow = AllValues[i];
    var Subject = "Neu für " + CurrentRow[1]  + ": "+ CurrentRow[2] + " für " + CurrentRow[3];
    var message = "<p><b>Ressort: </b>" + CurrentRow[1] + "</p>" + "<p><b>Textart: </b>" + CurrentRow[2] + "</p>" + "<p><b>Domain: </b>" + CurrentRow[3] + "</p>" + "<p><b>Thema: </b>" + CurrentRow[4] + "</p>" + "<p><b>fertig bis: </b>" + CurrentRow[15] + "</p>";
    var EmailSent = CurrentRow[0];
    var SendTo = (CurrentRow[22])?CurrentRow[22]:"xxx@yyy.com" + "," + "xxx@zzz.yyy.com";//conditional (ternary) operator.  If CurrentRow[22] is there then use it otherwise use your default.
    if (EmailSent != "gesendet") {
      var setRow = parseInt(i) + StartRow;
      ActiveSheet.getRange(setRow, 1).setValue("gesendet");
      MailApp.sendEmail({to: SendTo,cc: "",subject: Subject,htmlBody: message});
    }
  }
}

условный (троичный) оператор

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