0

wie Google app Scripting Fehler beheben: getRange: "Typeerror nicht Methode aufrufen kann. "" Von null (Linie 16, Datei "Code")" beim Debuggen das folgende Skript:Schwierig bei der Fehlersuche App Skript

function getEmails_(q) { 
    var emails = []; 
    var threads = GmailApp.search(q); 
    for (var i in threads) { 
     var msgs = threads[i].getMessages(); 
     for (var j in msgs) { 
      emails.push([msgs[j].getBody().replace(/<.*?>/g, '\n') 
       .replace(/^\s*\n/gm, '').replace(/^\s*/gm, '').replace(/\s*\n/gm, '\n') 
      ]); 
     } 
    } 
    return emails; 
} 

function appendData_(sheet, array2d) { 
    sheet.getRange(sheet.getLastRow() + 1, 1, array2d.length, array2d[0].length).setValues(array2d); 
} 

function saveEmails() { 
    var array2d = getEmails_("Still looking for Python Programming help"); 
    if (array2d) { 
     appendData_(SpreadsheetApp.getActiveSheet(), array2d); 
    } 
} 

Antwort

0

Sie versuchen, ein null sheet zugreifen getRange() auf, weil in Ihrem Kontext SpreadsheetApp.getActiveSheet() Rückkehr null (dh. es gibt keine aktive Tabelle)

Weiterer Zusammenhang einen Weg zu finden, helfen könnte, eine aktive Kalkulationstabelle zu Ihrer Funktion zur Verfügung zu stellen.

Sie können Instanz öffnen Sie eine Tabelle mit:

  • SpreadsheetApp.open(file)
  • SpreadsheetApp.openById(id)
  • SpreadsheetApp.openByUrl(url)

Und dann setzen sie aktiv SpreadsheetApp.setActiveSpreadsheet(newActiveSpreadsheet) https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app

Es gibt andere Möglichkeiten, um eine Tabelle aktiv zu machen, z. B. wenn ein Auslöser ausgelöst wird (z. B. notifyOnFormSubmit).

Um sicherzustellen, dass Sie eine aktive Tabelle haben, können Sie SpreadsheetApp.getActiveSheet() testen, bevor es mit:

var spreadsheet = SpreadsheetApp.getActiveSheet(); 
if (spreadsheet) { 
    Logger.log('spreadsheet url:' + spreadsheet.getUrl()); 
} 
1

Haben Sie das Blatt Variable gesetzt?

var sheet = SpreadsheetApp.getActiveSheet(); 

Logger.log(array2d); Sind die Daten zu überprüfen, ist in der Anordnung eingestellt wird.

Es wird sein, weil es das Blatt nicht finden kann.

Ich hatte manchmal diesen Fehler und musste das Blatt umbenennen und es hat funktioniert. Es ist komisch.