У меня проблемы с получением информации о текущей строке, которая будет включена в мое сообщение электронной почты, когда адрес электронной почты, на который я отправляю сообщение, указан в другой электронной таблице. Это работает, когда я определяю адрес электронной почты в скрипте.
У меня есть 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" из неопределенного.
Так выглядит тело письма, когда я его получил.