Отправить письмо для новой строки добавлено с помощью скрипта Google - PullRequest
0 голосов
/ 25 апреля 2020

Я пытаюсь отправлять уведомления по электронной почте, когда в моем листе Google добавлена ​​новая строка. Я перепробовал все, что было рекомендовано в других постах, но не могу заставить его работать. Когда я выполняю свой сценарий, электронное письмо отправляется для каждой строки в электронной таблице, а тело сообщения не содержит информации из строки.

Способ работы следующий:

В моей электронной таблице «Проблемы», когда я выбираю ОТКРЫТЬ из раскрывающегося списка, столбец 34 автоматически заполнится «Готов к отправке», а столбец 35 (столбец отправки по электронной почте) будет пустым. Когда моя функция «email» будет выполнена, она получит диапазон электронной таблицы и проверит, установлен ли для столбца 35 для этой новой строки значение «Готов к отправке», и проверит, не равен ли столбец «EmailSent» значению «SENT». Если это так, то он отправит электронное письмо и пометит эту строку как «ОТПРАВЛЕНО». Если по какой-либо причине электронное письмо не отправляется, эта строка не должна быть помечена как «ОТПРАВЛЕНО».

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

function email() 
{

  //setup function
  var ActiveSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Issues");  
  var StartRow = 2; //first row of data to process
  var LastRow = ActiveSheet.getLastRow();
  var RowRange = LastRow - StartRow + 1;
  var WholeRange = ActiveSheet.getRange(StartRow,1,RowRange,35);
  var AllValues = WholeRange.getValues();
  var message = "";    
  for (var i=0;i<AllValues.length;i++) 
   
    {
      var CurrentRow = AllValues[i];
      var EmailSent = CurrentRow[34]; 
      if (CurrentRow[33] == "Ready to Email" && EmailSent!= "sent") 
      {
        message +=                      //set HTML template for information
          "<p><b>Issue Status: </b>" + CurrentRow[0] + "</p>" +
          "<p><b>Group: </b>" + CurrentRow[1] + "</p>" +
          "<p><b>LifeCycle Status: </b>" + CurrentRow[2] + "</p>" +  
          "<p><b>Issue Number: </b>" + CurrentRow[3] + "</p>" +
          "<p><b>Priority: </b>" + CurrentRow[4] + "</p>" +
          "<p><b>Opened By: </b>" + CurrentRow[10] + "</p>"; 
        var setRow = i + StartRow;
        var SendTo = "myemail@test.com";
        var Subject = "New Issue reported:  " + CurrentRow[3];    //set subject line   
        //send the actual email  
           MailApp.sendEmail
                  ({
                        to: SendTo,
                        cc: "",
                        subject: Subject,
                        htmlBody: message,
                  });
  
         ActiveSheet.getRange(setRow, 35).setValue("sent");  //update the row if email is sent
    }  
  }
}

Вот как выглядит моя электронная почта. Как видите, мое электронное письмо содержит только метки и не содержит значений из строк.

sample email

1 Ответ

0 голосов
/ 27 апреля 2020

Публикация в качестве ответа для целей рабочего процесса стека. Как сказал Джеймс Д , индексы были неверны:

Строки и столбцы начинаются с индекса 1, а не 0.

Так в примере это должно быть CurrentRow[34] вместо CurrentRow[35], а var message = ""; должно быть внутри l oop.

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