无法读取 属性 'getRange' 的空错误。我肯定 sheet 存在并且在脚本中被正确命名

Cannot read property 'getRange' of null error. I am positive the sheet exists and is named correctly in the script

我和我的老师同事们喜欢给学生们寄一些 google 画作,让他们知道他们最近表现不错。我们有一个我们使用的 spreadsheet,我正在尝试在他们的绘图准备好可供查看时自动向他们发送电子邮件。我一直收到“无法读取 属性 'getRange' of null 错误”,尽管我 100% 确定存在名为 PR 的 sheet 并且拼写正确。我是 Google 脚本的新手,所以我缺乏解决问题的技能,而不是我已经完成的谷歌搜索,基本上只是说要确保你已经正确命名了 sheet。任何帮助将不胜感激!

  var studentFirstNameRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('PR').getRange("A2:A"); 
  var studentFirstname = studentFirstNameRange.getValues();
  var studentEmailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('PR').getRange("D2:D"); 
  var studentEmail = studentEmailRange.getValues();
var emailSendRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('PR').getRange("L2:L"); 
  var emailSend = emailSendRange.getValues();
  if (emailSend){
    // Send Alert Email.
    var message = 'Hi ' + studentFirstname + '! Your teachers noticed you have been doing a great job this year, so we made this for you! Keep up the great work!' ; // Second column
    var subject = 'Positive Recognition';
    MailApp.sendEmail(studentEmail, subject, message);
    }
}```

根据标题和你说的错误,我没有得到任何错误。

但是,我不了解您的情况if (emailSend),也不了解您发送电子邮件的方式。如果你一次给所有的人发邮件,你可以试试

function myFunction() {
  var lastRow = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('PR').getLastRow()
  var studentFirstNameRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('PR').getRange("A2:A"+lastRow); 
  var studentFirstname = studentFirstNameRange.getValues();
  var studentEmailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('PR').getRange("D2:D"+lastRow); 
  var studentEmail = studentEmailRange.getValues();
  var emailSendRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('PR').getRange("L2:L"+lastRow); 
  var emailSend = emailSendRange.getValues();
  if (emailSend){
    // Send Alert Email.
    var message = 'Hi ' + studentFirstname + '! Your teachers noticed you have been doing a great job this year, so we made this for you! Keep up the great work!' ; // Second column
    var subject = 'Positive Recognition';
    Logger.log(studentEmail.join())
    MailApp.sendEmail(studentEmail.join(), subject, message);
  }
  console.log('there is no errors!')
}

如果您想单独发送

function myFunction() {
  var lastRow = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('PR').getLastRow()
  var studentFirstNameRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('PR').getRange("A2:A" + lastRow);
  var studentFirstname = studentFirstNameRange.getValues();
  var studentEmailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('PR').getRange("D2:D" + lastRow);
  var studentEmail = studentEmailRange.getValues();
  var emailSendRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('PR').getRange("L2:L" + lastRow);
  var emailSend = emailSendRange.getValues();
  for (var i = 0; i < studentFirstname.length; i++) {
    if (emailSend[i][0]) {
      // Send Alert Email.
      var message = 'Hi ' + studentFirstname[i][0] + '! Your teachers noticed you have been doing a great job this year, so we made this for you! Keep up the great work!'; // Second column
      var subject = 'Positive Recognition';
      MailApp.sendEmail(studentEmail[i][0], subject, message);
    }
  }
}