Home > other >  Cannot read property 'getRange' of null error. I am positive the sheet exists and is named
Cannot read property 'getRange' of null error. I am positive the sheet exists and is named

Time:01-24

My fellow teachers and I like to send students little google drawings to let them know they've been doing well lately. We have a spreadsheet that we use and I am trying to automate the process of sending them an email when their drawing is ready to be viewed. I keep getting the 'Cannot read property 'getRange' of null error' even though I am 100% sure that a sheet exists with the name PR and that it is spelled right. I am new to Google Script so I lack the skills to troubleshoot any more than the googling I've done already, which basically just says to make sure you've named the sheet correctly. Any help would be very appreciated!

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

CodePudding user response:

According to the title and the error you related, I did'nt get any error.

However, I don't understand your condiiton if (emailSend) neither the way you send emails. If you send emails to all the population at once, you can try

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!')
}

if you want to send individually

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

enter image description here

  •  Tags:  
  • Related