при использовании скрипта google-apps не получить информацию о теме или текущей строке в теле письма - PullRequest
0 голосов
/ 27 апреля 2020

У меня проблемы с получением информации о текущей строке, которая будет включена в мое сообщение электронной почты, когда адрес электронной почты, на который я отправляю сообщение, указан в другой электронной таблице. Это работает, когда я определяю адрес электронной почты в скрипте.

У меня есть 3 таблицы. Имена листов электронной таблицы: «Команда», «Проблемы» и «Наблюдатели». Таблица вопросов является основным листом. Когда в электронную таблицу «Проблемы» добавляется новая строка, столбец 34 помечается как «Готов к электронной почте». Если для столбца 34 установлено значение «Готов к отправке по электронной почте», а столбец 35 не помечен как «ОТПРАВЛЕНО», то я хочу отправить уведомление по электронной почте с использованием адресов электронной почты, указанных в электронной таблице WATCHERS, а затем пометить столбец 35 как «ОТПРАВЛЕНО». В теле письма я хочу включить URL-адрес основной таблицы (электронная таблица «Проблемы») и информацию из текущей строки. Я также хочу включить значение, которое находится в ячейке "B2" в таблице TEAM. Если в электронной таблице WATCHERS нет адресов электронной почты, я хочу пометить столбец 35 как «Нет адреса электронной почты EXIST».

Опять же, я могу отправлять электронные письма, но проблема в том, что я не получаю информацию о предмете или информацию о текущей строке в теле письма. Вот мой сценарий ....

function sendEmail() 
{

  //setup function
  var ActiveSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Issues");  //the issues spreadsheet
  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();  //getting the values defined in the range of the issues spreadsheet
  var ss = SpreadsheetApp.getActiveSpreadsheet(); //this is so that I can use the getUrl function to get the URL of the ISSUES spreadsheet
 
  for (var i=0;i<AllValues.length;i++) 
   
    {
      
      var watchers = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Watchers"); //the watchers spreadsheet
      var wdata = watchers.getRange("A2:B" + watchers.getLastRow()).getValues();  //getting the values defined in the range in the watchers spreadsheet
      var team = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Team"); //the team spreadsheet
      var tdata = team.getRange("B2").getValues(); //getting the value defined in cell B2 in the team spreadsheet.
      var CurrentRow = AllValues[i];
      var EmailSent = CurrentRow[34];  //the value of column 35 on the issues spreadsheet
      if (CurrentRow[33] == "Ready to Email" && EmailSent!= "sent") 
      {
         wdata.forEach(function(row,CurrentRow,tdata,ss)     //I think this is my problem.  I'm trying to pass in CurrentRow, tdata, and ss so that I can use in my email.
                {

                   var Subject = "New Issue reported:  Issue# " + CurrentRow[3];    //set subject line   
                   var message = "";   
                   message +=                      //CurrentRow, ss, and tdata is not working.
                   "<p><b>A new issue has been reported for </b>" + tdata + "<p><b> Reference the SRD for more details. </b>" + ss.getUrl() + "</p>" +
                   "<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>Description:  </b>" + CurrentRow[6] + "</p>" +
                   "<p><b>Opened By:  </b>" + CurrentRow[10] + "</p>"; 
                    MailApp.sendEmail
                  ({
                        to: row[1],
                        subject: Subject,
                        htmlBody: message,
                  });
                       
  
                });
               
           var setRow = i + StartRow;
        
  
         ActiveSheet.getRange(setRow, 35).setValue("sent");  //update the row if email is sent
    }  
  }
}

Обратите внимание, что для первой строки сообщения "ss.getUrl ()" завершается с ошибкой TypeError: Невозможно вызвать метод "getUrl" из неопределенного.

Так выглядит тело письма, когда я его получил.

enter image description here

...