SpreadsheetApp.getActiveSheet()返回null

时间:2014-07-28 16:44:38

标签: google-apps-script google-sheets

我正在尝试使用下面简单的sendemail脚本:

function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet()
  var startColumn = 1;  // First column of data to process
  var startRow = 1;  // First row of data to process
  // Fetch the range of cells
  var dataRange = sheet.getRange(startRow, startColumn)
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  for (i in data) {
    var Column = data[i];
    var subject = Column[0]        // 1st column
    var emailAddress = "somemail@somemail.com";  // 2nd column
    var message = Column[2];       // 3rd column
    MailApp.sendEmail(emailAddress, subject, message);
  }
}

TypeError:无法调用方法" getRange"为null。 (第10行,文件"代码")

表单返回null,我不明白为什么。我有一个电子表格并保存在我的一个标签上,所以我不明白为什么它会返回null。任何想法或调试技巧,找出原因?

谢谢, 梅森

2 个答案:

答案 0 :(得分:1)

我有一个通过API调用此方法的项目。我怀疑是因为那样,没有活跃的表格'因此它返回null。

我能够通过ID获取工作表来解决这个问题:

var data = SpreadsheetApp.openById("<SHEET-ID>").getActiveSheet();

答案 1 :(得分:0)

SpreadsheetApp.getActiveSheet()似乎并不总是有用。您可以尝试使用SpreadsheetApp.openById方法。

如果您想从多电子表格中获取第一张表格,那么您可以尝试

var sheet = SpreadsheetApp.openById("sheet_id").getSheets()[0];

有关详细信息,请参阅以下链接。

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#openbyidid