TypeError: Cannot read property "length" from undefined

1.6k views Asked by At

I am trying to use the code below that i got from this link:

Import emails that fit criteria to Google Spreadsheet using apps script

and it is giving me the error

TypeError: Cannot read property "length" from undefined.

Can someone help?

   function getMessagesWithLabel() {
     var destArray = new Array();
      var threads = GmailApp.getUserLabelByName('Facebook').getThreads(1,10);

      for(var n in threads){
            var msg = threads[n].getMessages();
            var destArrayRow = new Array();
            destArrayRow.push('thread has '+threads[n].getMessageCount()+' messages');
              for(var m in msg){
                         destArrayRow.push(msg[m].getSubject());
               }
      destArray.push(destArrayRow);           
            }
    Logger.log(destArray);
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sh = ss.getActiveSheet();
    if(ss.getLastRow()==0){sh.getRange(1,1).setValue('getMessagesWithLabel() RESULTS')};
    sh.getRange(ss.getLastRow()+1,1,destArray.length,destArray[0].length).setValues(destArray)
    }
1

There are 1 answers

0
Dylan Riley On

The problem is if there are no elements in GmailApp.getUserLabelByName('Facebook').getThreads(1,10); then threads will be null and the loop for(var n in threads) will not work

this means that you need to type

var threads = GmailApp.getUserLabelByName('Facebook').getThreads(1,10);

if (threads != null) {
  for(var n in threads) {