[google-apps-script] Wie debugge ich Google Apps Script (wo meldet sich Logger.log an?)



Answers

Soweit ich das beurteilen kann, können Sie ein Live-Event nicht aus Google Docs heraus debuggen, also müssen Sie es vom Debugger aus machen, was sinnlos ist, da das an meine onEdit () -Funktion übergebene Event-Argument bei der Ausführung immer undefiniert sein wird es aus dem Skript-Editor.

True - definieren Sie das Ereignisargument selbst zum Debuggen. Siehe Wie kann ich eine Triggerfunktion in GAS testen?

Ich habe versucht, die Logger.log-Methode zu verwenden, um einige Daten zu protokollieren, wann immer die onEdit-Funktion aufgerufen wird, aber das scheint auch zu funktionieren, wenn es nur aus dem Skripteditor ausgeführt wird. Wenn ich es vom Skript-Editor aus starte, kann ich die Protokolle anzeigen, indem ich auf Ansicht-> Protokolle ... gehe.

Stimmt wieder, aber es gibt Hilfe. Peter Hermanns BetterLog-Bibliothek leitet alle Protokolle an eine Tabellenkalkulation weiter und ermöglicht die Protokollierung sogar aus Code, der nicht mit einer Instanz des Editors / Debuggers verbunden ist.

Wenn Sie zum Beispiel in einem Tabellenkalkulationsskript codieren, können Sie nur diese eine Zeile am Anfang Ihrer Skriptdatei hinzufügen, und alle Protokolle werden in das Tabellenblatt "Protokolle" in der Tabelle verschoben. Kein anderer Code notwendig, benutze einfach Logger.log() wie du es normalerweise Logger.log() würdest:

Logger = BetterLog.useSpreadsheet();
Question

In Google Tabellen können Sie einige Skriptfunktionen hinzufügen. Ich onEdit etwas für das onEdit Ereignis hinzu, aber ich kann nicht sagen, ob es funktioniert. Soweit ich das beurteilen kann, können Sie ein Live-Event nicht aus Google Tabellen debuggen, also müssen Sie es vom Debugger aus machen, was sinnlos ist, da das an meine onEdit() -Funktion übergebene Event-Argument bei der onEdit() immer undefiniert ist es aus dem Script Editor .

Also habe ich versucht, die Logger.log Methode zu verwenden, um einige Daten zu protokollieren, wann immer die onEdit Funktion aufgerufen wird, aber auch dies scheint nur dann zu funktionieren, wenn sie vom Script Editor . Wenn ich es vom Script Editor View->Logs... , kann ich die Protokolle View->Logs... indem ich auf View->Logs... gehe.

Ich hatte gehofft, dass ich die Protokolle sehen könnte, wenn das Ereignis tatsächlich ausgeführt wird, aber ich kann es nicht herausfinden.

Wie debugge ich dieses Zeug?




Die dev-Konsole protokolliert Fehler, die vom App-Skript ausgelöst werden, sodass Sie einfach einen Fehler ausgeben können, um es als normale console.log zu protokollieren. Es wird die Ausführung stoppen, aber es könnte immer noch nützlich für die schrittweise Debuggen sein.

throw Error('hello world!');

wird ähnlich console.log('hello world') in der Konsole console.log('hello world')




Wenn Sie den Skript-Editor geöffnet haben, sehen Sie die Protokolle unter Ansicht-> Protokolle. Wenn Ihr Skript einen onedit-Trigger hat, nehmen Sie eine Änderung an der Tabelle vor, die die Funktion auslösen soll, wobei der Skript-Editor auf einer zweiten Registerkarte geöffnet wird. Gehe dann zum Tab "Skript-Editor" und öffne das Protokoll. Sie werden sehen, was Ihre Funktion an den Logger weitergibt.

Solange der Skript-Editor geöffnet ist, schreibt das Ereignis in das Protokoll und zeigt es für Sie an. Es wird nicht angezeigt, wenn sich jemand anderes in der Datei befindet.




Derzeit beschränken Sie sich auf die containergebundene Verwendung von Skripts in Dokumenten. Wenn Sie ein neues Skript außerhalb von Dokumenten erstellen, können Sie Informationen in eine Google-Tabelle exportieren und wie ein Protokollierungswerkzeug verwenden.

Zum Beispiel in Ihrem ersten Codeblock

function setCheckboxes() {

    // Add your spreadsheet data
    var errorSheet = SpreadsheetApp.openById('EnterSpreadSheetIDHere').getSheetByName('EnterSheetNameHere');
    var cell = errorSheet.getRange('A1').offset(errorSheet.getLastRow(),0);

    // existing code
    var checklist = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("checklist");
    var checklist_data_range = checklist.getDataRange();
    var checklist_num_rows = checklist_data_range.getNumRows();

    // existing logger
    Logger.log("checklist num rows: " + checklist_num_rows);

   //We can pass the information to the sheet using cell.setValue()
    cell.setValue(new Date() + "Checklist num rows: " + checklist_num_rows);

Wenn ich mit GAS arbeite, habe ich zwei Monitore (Sie können zwei Fenster verwenden), die mit einer GAS-Umgebung und der anderen mit der SS eingerichtet sind, damit ich Informationen schreiben und loggen kann.




2017 Update: Stackdriver Logging ist jetzt für Google Apps Script verfügbar. View > Stackdriver Logging Sie in der Menüleiste des Skript-Editors auf: View > Stackdriver Logging , um die Protokolle anzuzeigen oder zu streamen.

console.log() schreibt DEBUG Level-Nachrichten

Beispiel onEdit() Protokollierung:

function onEdit (e) {
  var debug_e = {
    authMode:  e.authMode,  
    range:  e.range.getA1Notation(),    
    source:  e.source.getId(),
    user:  e.user,   
    value:  e.value,
    oldValue: e. oldValue
  }

  console.log({message: 'onEdit() Event Object', eventObject: debug_e});
}

Überprüfen Sie dann die Protokolle in der Stackdriver-Benutzeroberfläche, die mit " onEdit() Event Object , um die Ausgabe onEdit() Event Object






Related