Ich bin sehr neu in der Programmierung (habe einige der JS-Kurse über Codecademy besucht). Ich versuche ein einfaches Skript zu erstellen, um zu bestimmen, wer wen bezahlen soll, wenn eine Tabelle mit Ergebnissen aus einem Pokerspiel vorliegt. Ich habe Google Apps Script geöffnet und Folgendes geschrieben, um loszulegen:
function addplayerstoArray(numplayers) {
var playerArray = [];
for (i=0; i<numplayers; i++) {
playerArray.push(i);
}
}
addplayerstoArray(7);
console.log(playerArray[3])
Die Idee ist, ein Array mit der Gesamtzahl der Spieler darin zu erstellen. Beim Ausführen des Codes dachte ich, es würde "3" auf der Konsole drucken. Aber nichts ist passiert. Es sagte
"ReferenceError:" console "ist nicht definiert."
A) Was verstehe ich nicht über die Funktionsweise der Google Apps Script-Konsole beim Drucken, damit ich sehen kann, ob mein Code das erreicht, was ich möchte?
B) Ist es ein Problem mit dem Code?
quelle
Um auf der oben genannten Hacky-Lösung von Vinnief aufzubauen, verwende ich MsgBox wie folgt:
Browser.msgBox('BorderoToMatriz', Browser.Buttons.OK_CANCEL);
und es verhält sich irgendwie wie ein Haltepunkt, stoppt das Skript und gibt die benötigte Zeichenfolge an ein Popup-Fenster aus. Ich finde vor allem in Sheets, wo ich Probleme mit Logger.log habe, meistens eine angemessene Problemumgehung.
quelle
Obwohl dies
Logger.log()
technisch die richtige Art ist, etwas an die Konsole auszugeben, hat es einige Probleme:Logger.log(playerArray)
, und nach dem Debuggen möchten Sie wahrscheinlich entfernenLogger.log(playerArray)
, daher weitere 1-2 weitere Schritte.Wenn ich etwas debuggen möchte, füge ich stattdessen Haltepunkte hinzu (klicken Sie auf die Zeilennummer) und drücke auf die Schaltfläche Debuggen (Fehlersymbol). Haltepunkte funktionieren gut, wenn Sie einer Variablen etwas zuweisen, aber nicht so gut, wenn Sie eine Variable initiieren und zu einem späteren Zeitpunkt einen Blick hinein werfen möchten, ähnlich wie bei der Operation. In diesem Fall würde ich eine Unterbrechungsbedingung erzwingen, indem ich "x" eingebe (x markiert den Punkt!), Um einen Laufzeitfehler auszulösen:
Vergleichen Sie mit dem Anzeigen von Protokollen:
Die Debug-Konsole enthält mehr Informationen und ist viel einfacher zu lesen als das Logs-Overlay. Ein kleiner Vorteil dieser Methode ist, dass Sie sich nie darum kümmern müssen, Ihren Code mit einer Reihe von Protokollierungsbefehlen zu verschmutzen, wenn Sie sauberen Code behalten möchten. Selbst wenn Sie "x" eingeben, müssen Sie daran denken, es im Rahmen des Debugging-Vorgangs zu entfernen, da sonst Ihr Code nicht ausgeführt wird (integrierte Bereinigungsmaßnahme, yay).
quelle
x
wäre die gleiche Funktionalität wie Hinzufügendebugger;
Beantwortung der OP-Fragen
Der Code in .gs-Dateien eines Google Apps Script-Projekts wird auf dem Server und nicht im Webbrowser ausgeführt. Zum Protokollieren von Nachrichten wurde der Klassenlogger verwendet .
Wie in der Fehlermeldung angegeben, war das Problem, dass
console
es nicht definiert wurde, aber heutzutage wird derselbe Code einen anderen Fehler auslösen:Dies liegt daran, dass das playerArray als lokale Variable definiert ist. Wenn Sie die Zeile aus der Funktion verschieben, wird dies behoben.
var playerArray = []; function addplayerstoArray(numplayers) { for (i=0; i<numplayers; i++) { playerArray.push(i); } } addplayerstoArray(7); console.log(playerArray[3])
Jetzt, da der Code ohne Fehler ausgeführt wird, sollten wir uns stattdessen die Stackdriver-Protokollierung ansehen, um die Browserkonsole zu betrachten. Klicken Sie in der Benutzeroberfläche des Google Apps Script-Editors auf Ansicht> Stackdriver-Protokollierung .
Nachtrag
Im Jahr 2017 hat Google für alle Skripte die Stackdriver-Protokollierung veröffentlicht und die Klassenkonsole hinzugefügt. Wenn Sie also so etwas wie "
console.log('Hello world!')
Stackdriver Logging Service" einfügen, wird das Protokoll nicht auf der Browserkonsole, sondern auf dem Stackdriver-Protokollierungsdienst der Google Cloud Platform angezeigt.Aus den Versionshinweisen 2017 zu Google Apps Script
Über Protokollierung> Stackdriver-Protokollierung
quelle
In einem Google Script-Projekt können Sie HTML-Dateien (Beispiel: index.html) oder gs-Dateien (Beispiel: code.gs) erstellen. Die .gs-Dateien werden auf dem Server ausgeführt und Sie können Logger.log verwenden, wie @Peter Herrman beschreibt. Wenn die Funktion jedoch in einer HTML-Datei erstellt wird, wird sie im Browser des Benutzers ausgeführt und Sie können console.log verwenden. Die Chrome-Browserkonsole kann mit Ctrl Shift J unter Windows / Linux oder Cmd Opt J unter Mac angezeigt werden
Wenn Sie Logger.log für eine HTML-Datei verwenden möchten , können Sie mithilfe eines Scriptlets die Funktion Logger.log aus der HTML-Datei aufrufen. Dazu würden Sie < einfügen ? Logger.log (etwas)?> Ersetzen Sie etwas durch das, was Sie protokollieren möchten. Standard-Scriptlets, die die Syntax <? ...?> Code ausführen, ohne explizit Inhalt auf der Seite auszugeben.
quelle
Aktualisiert für 2020
Im Februar 2020 kündigte Google ein umfangreiches Upgrade der integrierten Google Apps Script IDE an und unterstützt jetzt console.log () . Sie können jetzt also beide verwenden:
Viel Spaß beim Codieren!
quelle
console.log
wurde vor dem angegebenen Upgrade unterstützt (siehe meine Antwort )