Home > Mobile >  Cannot Read Sheet Range From Null
Cannot Read Sheet Range From Null

Time:09-17

I have a function that allows me to import spreadsheet data from my gmail to Google Sheets. Previously, the spreadsheet data had only had 6 columns to import. Now, some new changes are made and a 7th column was added. After this change was implemented, my function no longer works and Google Sheets throws this error. May I please have some assistance?

So, as I'm looking at this, the intended functionality looks right to me. Skip the first 3 rows (netdata) and take everything below. Could it be the 1, 1 ?

The Error:

TypeError: Cannot read property 'getRange' of null

My import function:

function importCSVFromGmail() {
  var sheetName = "SHEET_NAME"; // Name of sheet tab. 
  var threads = GmailApp.search("from:EMAIL HERE label:LABEL HERE"); // "from:recipient email here label:name of your filter/label here"


  var messages = threads[0].getMessages();
  var message = messages[messages.length - 1];
  var attachment = message.getAttachments()[0]; // [0] will by default look for only 1 attachment. If there are more than two attachment increase value. ex: [1] , [2] 

  var data = [];
  if (attachment.getContentType() == MimeType.CSV) { // This will look for a CSV file type first
    data = Utilities.parseCsv(attachment.getDataAsString(), ",");

  } else if (attachment.getContentType() == MimeType.MICROSOFT_EXCEL || attachment.getContentType() == MimeType.MICROSOFT_EXCEL_LEGACY) { // If attachment is an xls, this line will look at the content to determine and convert accordingly.

    var tempFile = Drive.Files.insert({title: "temp", mimeType: MimeType.GOOGLE_SHEETS}, attachment).id;

    data = SpreadsheetApp.openById(tempFile).getSheets()[0].getDataRange().getValues();
    Drive.Files.trash(tempFile);
  }
  if (data.length > 0) {
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
    var netdata = data.slice(3); // This will skip the number of rows starting from the top.
    sheet.getRange(sheet.getLastRow()   1, 1, netdata.length, netdata[0].length).setValues(netdata );
  }
}

I'm think the issue is here:

sheet.getRange(sheet.getLastRow()   1, 1, netdata.length, netdata[0].length).setValues(netdata );

CodePudding user response:

The error message indicates that the issue is with the sheet variable being null. That happens when there is no sheet by the name SHEET_NAME in the spreadsheet.

To fix the error, replace SHEET_NAME with the name of the sheet you want the function to work with. Check for things like leading and trailing whitespace in the sheet's name.

  • Related