Улучшение условий, необходимых перед отправкой электронного письма из Google Sheets - PullRequest
0 голосов
/ 11 мая 2018

Я придумал код для отправки электронной почты, когда столбец AJ равен true. Первоначально он работал отлично, но после добавления дополнительных охранников он только отправляет электронную почту в первый ряд.

Чего я хочу достичь:

  1. Люди отправят запрос, и детали будут показаны в «Формах ответов 4»,
  2. Я бы одобрил это, указав TRUE в последнем столбце.
  3. Я нажимаю кнопку, чтобы запустить скрипт
  4. Строки с TRUE имеют данные, отправленные по электронной почте на адрес электронной почты, связанный со строкой

Код не работает полностью: если есть три человека, которым следует получить электронное письмо, только первый получит электронное письмо. Как я могу изменить мои охранники, чтобы они отправляли по электронной почте всем, чья строка имеет TRUE?


function testing(){
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lr = ss.getLastRow();
  var targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form 
Responses 4");

  for (var i = 2 ; i <= lr ; i++){
    var dpt = targetSheet.getRange(i,4).getValue();
    var purpose = targetSheet.getRange(i,5).getValue();
    var p = "HR", d = "DMS", r = "RIM";
    var check = targetSheet.getRange(i, 36).getValue();
    var currentEmail = targetSheet.getRange(i, 2).getValue();
    var currentName = targetSheet.getRange(i, 3).getValue();
    var remark = targetSheet.getRange(i, 35).getValue();
    var qty1 = targetSheet.getRange(i, 7).getValue();
    var qty2 = targetSheet.getRange(i, 10).getValue();
    var qty3 = targetSheet.getRange(i, 14).getValue();
    var qty4 = targetSheet.getRange(i, 17).getValue();
    var qty5 = targetSheet.getRange(i, 21).getValue();
    var qty6 = targetSheet.getRange(i, 24).getValue();
    var qty7 = targetSheet.getRange(i, 26).getValue();
    var qty8 = targetSheet.getRange(i, 28).getValue();
    var qty9 = targetSheet.getRange(i, 30).getValue();
    var qty10 = targetSheet.getRange(i, 32).getValue();

    var ap1 = targetSheet.getRange(i, 8).getValue();
    var ap2 = targetSheet.getRange(i, 11).getValue();
    var ap3 = targetSheet.getRange(i, 15).getValue();
    var ap4 = targetSheet.getRange(i, 18).getValue();
    var ap5 = targetSheet.getRange(i, 22).getValue();
    var ap6 = targetSheet.getRange(i, 25).getValue();
    var ap7 = targetSheet.getRange(i, 27).getValue();
    var ap8 = targetSheet.getRange(i, 29).getValue();
    var ap9 = targetSheet.getRange(i, 31).getValue();
    var ap10 = targetSheet.getRange(i, 33).getValue();

    var S1 = targetSheet.getRange(i, 6).getValue();
    var P1 = targetSheet.getRange(i, 9).getValue();
    var S2 = targetSheet.getRange(i, 13).getValue();
    var P2 = targetSheet.getRange(i, 16).getValue();
    var B = targetSheet.getRange(i, 20).getValue();
    var J = targetSheet.getRange(i, 23).getValue();

    if (dpt == p){
      if (check == true){
        var templateText = /* lots of HTML */;
        var emailText = templateText.replace("name", currentName)
          .replace("purpose", purpose)
          /* Several more replacements */
          .replace("remark", remark);
        MailApp.sendEmail({to: currentEmail, subject: "UPDATES:" + "KIT EXCHANGE REQUISITION FORM", htmlBody: emailText});
      }
    }
    else if (dpt == d){
      if (check == true){
        var templateText = /* More HTML generation */; 
        var emailText = templateText.replace("name", currentName)
          .replace("purpose", purpose)
          /* more replacements */
          .replace("remark",remark);
        MailApp.sendEmail({to: currentEmail, subject: "UPDATES:" + "KIT EXCHANGE REQUISITION FORM", htmlBody: emailText});
      }
    }
    else if (dpt == r){
      if (check == true){
        var templateText = /* HTML generation */;   

        var emailText = templateText.replace("name", currentName)
          .replace("purpose", purpose)
          /* More replacements */
          .replace("remark", remark);
        MailApp.sendEmail({to: currentEmail, subject: "UPDATES:" + "KIT EXCHANGE REQUISITION FORM", htmlBody: emailText});
        return(i);
      }      
    }
  }
}

1 Ответ

0 голосов
/ 11 мая 2018

Вы вставили return (i); до конца цикла. return () технически работает как функция exit () , таким образом, ваш цикл завершается при первом запуске, и поэтому отправляется только одно электронное письмо.

Iпредложил бы вам пересмотреть свою логику наличия строки return (i); внутри цикла, поскольку я не понимаю, как вы ее используете.

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