Google Script - 触发工作但电子邮件不发送

时间:2017-09-13 04:19:10

标签: google-apps-script

我有一个长期存在的表格/电子表格/脚本 - 发送电子表格编辑时触发的电子邮件。触发器正在运行但电子邮件未发送。我删除了脚本并重新创建 - 再次授权。

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);
  }
}

1 个答案:

答案 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

相关问题