0

我按照这里给出的教程编写了一个脚本来从谷歌表格发送电子邮件,但收到以下错误。这里的问题可能是什么?

错误:TypeError: Cannot call method "getRange" of null. (line 7, file "Code")

我的脚本如下:


function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;  // First row of data to process
  var numRows = 2;   // Number of rows to process
  // Fetch the range of cells A2:B3
  var dataRange = sheet.getRange(startRow, 1, numRows, 2)
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  for (i in data) {
    var row = data[i];
    var emailAddress = row[0];  // First column
    var message = row[1];       // Second column
    var subject = "Silvertop Taxi's Training";
    MailApp.sendEmail(emailAddress, subject, message);
  }
}
// This constant is written in column C for rows for which an email
// has been sent successfully.
var EMAIL_SENT = "EMAIL_SENT";

function sendEmails2() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;  // First row of data to process
  var numRows = 2;   // Number of rows to process
  // Fetch the range of cells A2:B3
  var dataRange = sheet.getRange(startRow, 1, numRows, 3)
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var emailAddress = row[0];  // First column
    var message = row[1];       // Second column
    var emailSent = row[2];     // Third column
    if (emailSent != EMAIL_SENT) {  // Prevents sending duplicates
      var subject = "Silvertop Taxi's Training";
      MailApp.sendEmail(emailAddress, subject, message);
      sheet.getRange(startRow + i, 3).setValue(EMAIL_SENT);
      // Make sure the cell is updated right away in case the script is interrupted
      SpreadsheetApp.flush();
    }
  }
}

4

1 回答 1

0

我假设您正在关注本教程:https ://developers.google.com/apps-script/articles/sending_emails?hl=en

该代码对我有用。没有错误并且电子邮件被发送。

错误消息暗示变量sheet为空,这意味着代码SpreadsheetApp.getActiveSheet()没有返回任何内容,但正如我所说,它对我有用。

于 2016-01-28T18:56:24.753 回答