Для нового курсового проекта я возвращаюсь к скрипту Google для SendEmail из Google Sheets, который отлично работал пару лет назад. (Оригинальный код от https://medium.com/@sebfung/custom-emails-from-a-spreadsheet-b11ff050bc5f). Теперь я получаю три ошибки и не могу понять, как исправить третью.
Полный код приведен ниже. У меня ограниченный опыт работы с кодом, но я думаю, что могу обойти первые две ошибки, которые я получаю, потому что они косметические, и мои студенты могут с этим справиться. (Во-первых, я могу извлечь код, чтобы жить без «разделения», которое раньше позволяло мне отбрасывать вторую половину адресов электронной почты в приветствии SendToName. Во-вторых, я могу извлечь код «замены», который переводит новую строку на разрывы абзацев .)
Но я не могу понять, как обойти третью ошибку. Что-то в последней команде (MailApp.SendEmail) выдает ошибку «Неверный адрес электронной почты: неопределено (строка 66, файл« Код »)».
Я не вижу, чтобы что-либо из этого могло быть ошибкой, связанной с электронной таблицей, поскольку я вернулся к более ранним таблицам, которые работали пару лет назад, и теперь при отладке возникают те же три ошибки.
Я был бы рад за предложения по первым двум, но мне действительно больше всего нужна помощь в этой третьей ошибке. Я не могу даже запустить или проверить что-либо, пока я не исправлю это. Спасибо!
function sendEmail(to, score, questions, answer1, answer2, answer3, answer4, answer5) {
var ss = SpreadsheetApp.getActiveSheet();
var range = ss.getActiveRange();
var numRows = range.getNumRows();
var values = range.getValues();
for (var i = 0; i <= numRows - 1; i++) {
var row = values[i];
var to = row[1];
var score = row[2];
var questions = row[3]
var answer1 = row[4];
var answer2 = row[5];
var answer3 = row[6];
var answer4 = row[7];
var answer5 = row[8];
var sendToName = to.split('@')[0];
// email content
var emailSubject = "Quiz 1 Response";
// plain text body - just in case receiver can't parse html formatted email
var plainTxtBody = "Hello " + sendToName + ",\n" +
"You scored:\n" + score + "\n" +
"The questions were:\n" + questions + "\n" +
"Your answer:\n" + answer1 + "\n" +
"Your answer:\n" + answer2 + "\n" +
"Your answer:\n" + answer3 + "\n" +
"Your answer:\n" + answer4 + "\n" +
"Your answer:\n" + answer5;
// html formatting isn't necessary, but nice for reading :)
var htmlBody = '<html><body>';
var htmlFooter = '</body></html>';
// replacing newline characters with paragraph breaks to make it more readable
var scoreHTML = score.replace(/\n/g, "</p><p>");
var questionsHTML = questions.replace(/\n/g, "</p><p>");
var answer1HTML = answer1.replace(/\n/g, "</p><p>");
var answer2HTML = answer2.replace(/\n/g, "</p><p>");
var answer3HTML = answer3.replace(/\n/g, "</p><p>");
var answer4HTML = answer4.replace(/\n/g, "</p><p>");
var answer5HTML = answer5.replace(/\n/g, "</p><p>");
var emailMessage = "<p>Hello " + sendToName + ",</p>" +
"<p><strong>You scored:</strong><p>" +
"<p>" + scoreHTML + "</p>" +
"<hr>" +
"<p><strong>Here are the questions--see the answer key on the Quiz 1 page on the wiki:</strong></p>" +
"<p>" + questionsHTML + "</p>" +
"<hr>" +
"<p><strong>Here are your answers:</strong></p>" +
"<p>" + answer1HTML + "</p>" +
"<p>" + answer2HTML + "</p>" +
"<p>" + answer3HTML + "</p>" +
"<p>" + answer4HTML + "</p>" +
"<p>" + answer5HTML + "</p>";
htmlBody += emailMessage + htmlFooter;
// GmailApp must have default recipient, subject, body attributes followed by jsobject options {}
// Differs from MailApp syntax but has more options -- see documentation on GmailApp
MailApp.sendEmail(to, emailSubject, plainTxtBody, {
htmlBody: htmlBody,
});
}
}