Je suis très nouveau dans la programmation (j'ai suivi certains des cours JS sur Codecademy). J'essaie de créer un script simple pour déterminer, si on lui donne une feuille de calcul avec les résultats d'une partie de poker, qui devrait payer qui. J'ai ouvert Google Apps Script et écrit ce qui suit pour commencer:
function addplayerstoArray(numplayers) {
var playerArray = [];
for (i=0; i<numplayers; i++) {
playerArray.push(i);
}
}
addplayerstoArray(7);
console.log(playerArray[3])
L'idée est de créer un tableau avec le nombre total de joueurs qu'il contient. Lors de l'exécution du code, j'ai pensé qu'il afficherait "3" sur la console. Mais rien ne s'est passé. Ça disait
"ReferenceError:" console "n'est pas défini."
A) Qu'est-ce que je ne comprends pas sur le fonctionnement de la console Google Apps Script en ce qui concerne l'impression afin que je puisse voir si mon code accomplit ce que je souhaite?
B) Est-ce un problème avec le code?
la source
Juste pour s'appuyer sur la solution hacky de vinnief ci-dessus, j'utilise MsgBox comme ceci:
Browser.msgBox('BorderoToMatriz', Browser.Buttons.OK_CANCEL);
et il agit un peu comme un point de rupture, arrête le script et affiche la chaîne dont vous avez besoin dans une boîte de dialogue. Je trouve en particulier dans Sheets, où j'ai des problèmes avec Logger.log, cela fournit une solution de contournement adéquate la plupart du temps.
la source
Même si
Logger.log()
c'est techniquement le moyen correct de sortir quelque chose sur la console, cela présente quelques inconvénients:Logger.log(playerArray)
, puis après le débogage, vous voudrez probablement supprimerLogger.log(playerArray)
, d'où 1-2 étapes supplémentaires.Au lieu de cela, chaque fois que je veux déboguer quelque chose, j'ajoute des points d'arrêt (cliquez sur le numéro de ligne) et appuyez sur le bouton Déboguer (icône de bogue). Les points d'arrêt fonctionnent bien lorsque vous affectez quelque chose à une variable, mais pas si bien lorsque vous lancez une variable et que vous voulez y jeter un coup d'œil ultérieurement, ce qui est similaire à ce que l'op essaie de faire. Dans ce cas, je forcerais une condition de rupture en entrant "x" (x marque l'endroit!) Pour lancer une erreur d'exécution:
Comparer avec l'affichage des journaux:
La console de débogage contient plus d'informations et est beaucoup plus facile à lire que la superposition des journaux. Un avantage mineur de cette méthode est que vous n'avez jamais à vous soucier de polluer votre code avec un tas de commandes de journalisation si vous voulez garder un code propre. Même si vous entrez "x", vous êtes obligé de vous rappeler de le supprimer dans le cadre du processus de débogage, sinon votre code ne fonctionnera pas (mesure de nettoyage intégrée, yay).
la source
x
serait la même fonctionnalité que l'ajoutdebugger;
Répondre aux questions du PO
Le code sur les fichiers .gs d'un projet Google Apps Script s'exécute sur le serveur plutôt que sur le navigateur Web. La façon de consigner les messages était d'utiliser le Class Logger .
Comme le message d'erreur l'indique, le problème était que ce
console
n'était pas défini mais de nos jours, le même code générera une autre erreur:C'est parce que le playerArray est défini comme une variable locale. Sortir la ligne de la fonction résoudra ce problème.
var playerArray = []; function addplayerstoArray(numplayers) { for (i=0; i<numplayers; i++) { playerArray.push(i); } } addplayerstoArray(7); console.log(playerArray[3])
Maintenant que le code s'exécute sans générer d'erreurs, au lieu de regarder la console du navigateur, nous devrions regarder Stackdriver Logging. Dans l'interface utilisateur de l'éditeur de scripts Google Apps, cliquez sur Afficher> Stackdriver Logging .
Addenda
En 2017, Google a publié tous les scripts Stackdriver Logging et ajouté la console de classe
console.log('Hello world!')
.À partir des notes de publication de Google Apps Script 2017
Depuis Journalisation> Journalisation Stackdriver
la source
Dans un projet de script google, vous pouvez créer des fichiers html (exemple: index.html) ou des fichiers gs (exemple: code.gs). Les fichiers .gs sont exécutés sur le serveur et vous pouvez utiliser Logger.log comme le décrit @Peter Herrman. Cependant, si la fonction est créée dans un fichier .html, elle est exécutée sur le navigateur de l'utilisateur et vous pouvez utiliser console.log. La console du navigateur Chrome peut être visualisée par Ctrl Shift J sous Windows / Linux ou Cmd Opt J sur Mac
Si vous souhaitez utiliser Logger.log sur un fichier html, vous pouvez utiliser un scriptlet pour appeler la fonction Logger.log à partir du fichier html. Pour ce faire, insérez <? Logger.log (quelque chose)?> En remplaçant quelque chose par ce que vous voulez enregistrer. Scriptlets standard, qui utilisent la syntaxe <? ...?>, exécutez le code sans afficher explicitement le contenu de la page.
la source
Mis à jour pour 2020
En février 2020, Google a annoncé une mise à niveau majeure de l'IDE intégré de script Google Apps, et il prend désormais en charge console.log () . Ainsi, vous pouvez désormais utiliser les deux:
Bon codage!
la source
console.log
était pris en charge avant la mise à niveau référencée (voir ma réponse )