如何修复关闭 MailApp.sendemail 步骤中的 "Invalid email undefined" 错误
How to fix "Invalid email undefined" error in closing MailApp.sendemail step
对于一个新课程项目,我要回到 google 来自 Google 工作表的 SendEmail 脚本,该脚本在几年前运行良好。 (来自 https://medium.com/@sebfung/custom-emails-from-a-spreadsheet-b11ff050bc5f 的原始代码)。现在我遇到了三个错误,不知道如何解决第三个错误。
完整代码如下。我的代码经验有限,但我认为我可以解决我遇到的前两个错误,因为它们是装饰性的,我的学生可以处理。 (首先,我可以去掉代码以在没有 "split" 的情况下生活,它曾经让我在 SendToName 称呼中删除电子邮件地址的后半部分。第二,我可以去掉 "replace" 代码来切换换行换行。)
但我不知道如何解决第三个错误。最后一个命令 (MailApp.SendEmail) 中的某些内容给我一个 "Invalid email: undefined (line 66, file "Code")" 错误。
我看不出这些可能是与电子表格相关的错误,因为我回到了几年前工作的早期电子表格,现在调试出现了同样的三个错误。
我很乐意就前两个错误提出建议,但我真的最需要并重视第三个错误的帮助。除非我修复它,否则我什至不能 运行 或测试任何东西。谢谢!
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,
});
}
}
脚本确实有效。 Var "to" 可能不包含有效的电子邮件地址。确保您在电子表格中选择了一个活动范围。另请注意,数组中的第一项的索引为 0。这反映了您选择的第一列。
您可以设置断点并使用调试器或使用 Logger.log(to);查看 -> 日志将显示 var 的结果。
对于一个新课程项目,我要回到 google 来自 Google 工作表的 SendEmail 脚本,该脚本在几年前运行良好。 (来自 https://medium.com/@sebfung/custom-emails-from-a-spreadsheet-b11ff050bc5f 的原始代码)。现在我遇到了三个错误,不知道如何解决第三个错误。
完整代码如下。我的代码经验有限,但我认为我可以解决我遇到的前两个错误,因为它们是装饰性的,我的学生可以处理。 (首先,我可以去掉代码以在没有 "split" 的情况下生活,它曾经让我在 SendToName 称呼中删除电子邮件地址的后半部分。第二,我可以去掉 "replace" 代码来切换换行换行。)
但我不知道如何解决第三个错误。最后一个命令 (MailApp.SendEmail) 中的某些内容给我一个 "Invalid email: undefined (line 66, file "Code")" 错误。
我看不出这些可能是与电子表格相关的错误,因为我回到了几年前工作的早期电子表格,现在调试出现了同样的三个错误。
我很乐意就前两个错误提出建议,但我真的最需要并重视第三个错误的帮助。除非我修复它,否则我什至不能 运行 或测试任何东西。谢谢!
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,
});
}
}
脚本确实有效。 Var "to" 可能不包含有效的电子邮件地址。确保您在电子表格中选择了一个活动范围。另请注意,数组中的第一项的索引为 0。这反映了您选择的第一列。 您可以设置断点并使用调试器或使用 Logger.log(to);查看 -> 日志将显示 var 的结果。