Отправка многострочного электронного письма с помощью скрипта Google (Google Sheet) - PullRequest
1 голос
/ 25 октября 2019

Я новичок в жизни сценария. Я хотел бы отправить электронное письмо на основе нескольких значений ячеек. Письмо работает, но иногда у меня есть только 1 PO для отправки, поэтому мой текущий код будет отправлять PO1 + 9 пустых строк, а мое письмо теперь очень длинное.

Я думаю, что мне нужно создать оператор IFно я не уверен, с чего начать.

function mailtest() {

  var TO = SpreadsheetApp.getActiveSheet().getRange('N3').getValue();
  var CC = SpreadsheetApp.getActiveSheet().getRange('N5').getValue();
  var SUBJECT = SpreadsheetApp.getActiveSheet().getRange('L9').getValue();
  var TEXT = SpreadsheetApp.getActiveSheet().getRange('L11').getValue();
  var TEXT2 = SpreadsheetApp.getActiveSheet().getRange('L13').getValue();
  var PO1 = SpreadsheetApp.getActiveSheet().getRange('L15').getValue();
  var PO2 = SpreadsheetApp.getActiveSheet().getRange('L16').getValue();
  var PO3 = SpreadsheetApp.getActiveSheet().getRange('L17').getValue();
  var PO4 = SpreadsheetApp.getActiveSheet().getRange('L18').getValue();
  var PO5 = SpreadsheetApp.getActiveSheet().getRange('L19').getValue();
  var PO6 = SpreadsheetApp.getActiveSheet().getRange('L20').getValues();
  var PO7 = SpreadsheetApp.getActiveSheet().getRange('L21').getValues();
  var PO8 = SpreadsheetApp.getActiveSheet().getRange('L22').getValues();
  var PO9 = SpreadsheetApp.getActiveSheet().getRange('L23').getValues();
  var P10 = SpreadsheetApp.getActiveSheet().getRange('L24').getValues();
  var signature = Gmail.Users.Settings.SendAs.list("me").sendAs.filter(function(account){if(account.isDefault){return true}})[0].signature; 
  MailApp.sendEmail({

    to: TO,
    subject: SUBJECT,
    cc: CC,
   htmlBody: 
    TEXT+"<br><br>"+

    TEXT2+"<br><br>"+
    //here is the problem ? I dont want PO3&4&5&6 if I only have 2 PO.
    PO1+"<br>"+          
    PO2+"<br>"+
    PO3+"<br>"+
    PO4+"<br>"+
    PO5+"<br>"+
    PO6+"<br>"+
    PO7+"<br>"+
    PO8+"<br>"+
    PO9+"<br>"+
    P10+"<br><br>"+
       signature


});

}

1 Ответ

2 голосов
/ 26 октября 2019

Вы хотите включить переменные в электронное письмо, только если переменная имеет значение. Следующий код отличается от вашего по нескольким причинам:

  • значения PO извлекаются целиком: sheet.getRange(15,12,10,1).getValues(); Это позволяет оценивать содержимое без сложной обработки переменных
  • зацикливание кодачерез значения: for (var i=0; i<PO.length;i++){ и
  • оценивает, имеет ли PO значение if ( if (POValue){){
  • , если это оценивается как да (PO имеет значение), то он добавляется в электронное письмотекст (POText = POText+POValue+"<br>");в противном случае это ПО не включается в текст электронного письма.

function so58564238() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheetname = "58564238";
  var sheet = ss.getSheetByName(sheetname);
  var POText = "";
  var PO = sheet.getRange(15,12,10,1).getValues();
  for (var i=0; i<PO.length;i++){
    var POValue = PO[i][0];
     if (POValue){
      POText = POText+POValue+"<br>"       
    }
  }
  Logger.log(POText)
}

Включение почтового теста

function mailtest() {

  var TO = SpreadsheetApp.getActiveSheet().getRange('N3').getValue();
  var CC = SpreadsheetApp.getActiveSheet().getRange('N5').getValue();
  var SUBJECT = SpreadsheetApp.getActiveSheet().getRange('L9').getValue();
  var TEXT = SpreadsheetApp.getActiveSheet().getRange('L11').getValue();
  var TEXT2 = SpreadsheetApp.getActiveSheet().getRange('L13').getValue();
  var POText = "";
  var PO = sheet.getRange(15,12,10,1).getValues();
  for (var i=0; i<PO.length;i++){
    var POValue = PO[i][0]
     if (POValue){
      POText = POText+POValue+"<br>"       
    }
  }
  var signature = Gmail.Users.Settings.SendAs.list("me").sendAs.filter(function(account){if(account.isDefault){return true}})[0].signature; 
  MailApp.sendEmail({
    to: TO,
    subject: SUBJECT,
    cc: CC,
    htmlBody: 
    TEXT+"<br><br>"+
    TEXT2+"<br><br>"+
    POText+"<br>"+
    signature
  });

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