我有一个长期存在的表格/电子表格/脚本 - 发送电子表格编辑时触发的电子邮件。触发器正在运行但电子邮件未发送。我删除了脚本并重新创建 - 再次授权。
function sendNotification() {
//Get Active spreadsheet and worksheet
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var sheet = spreadsheet.getSheetByName("Change Requests");
var sheet2 = spreadsheet.getSheetByName("Email Addresses");
//Set row for which to send notification
//get values
var lastRow = sheet.getRange(row, 1, 1, sheet.getLastColumn());
var values = lastRow.getValues();
//Other Variables
var body = "<HTML><BODY>";
var stuNumber = values[0][2];
var stuName = values[0][3].toString();
var stuHouse = values[0][5].toString();
var gradeLevel = values[0][6].toString();
var oldCourse = values[0][7].toString();
var newCourse = values[0][8].toString();
var subject = "New course change request submitted for " + stuName;
var academicAdviser;
var cc_recipients = sheet2.getRange(4, 2).getValue();
//Send notification email
try {
MailApp.sendEmail(academicAdviser, subject, body, {htmlBody: body, noReply: "True", cc: cc_recipients})
}
catch (f) {
Browser.msgBox(f.message);
}
}
答案 0 :(得分:1)
在这一行:
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
电子表格设置为不是电子表格的activeSheet
在这一行:
var lastRow = sheet.getRange(row, 1, 1, sheet.getLastColumn());
行未定义。
在这一行:
MailApp.sendEmail(academicAdviser, subject, body, {htmlBody: body, noReply: "True", cc: cc_recipients})
academicAdviser未定义且htmlBody设置为<HTML><BODY>
,这将不会为htmlBody参数生成任何输出。
而不是使用此:
Browser.msgBox(f.message);
您可以考虑使用SpreadsheetApp.getUi()。prompt()或alert()
我认为在某个地方添加MailApp.getRemainingDailyQuota()是个好主意,以避免超出配额。
在查看您的代码后,我猜您可能最好先阅读this section。