Dans Google Sheets, vous pouvez ajouter des fonctionnalités de script. J'ajoute quelque chose pour l' onEdit
événement, mais je ne peux pas dire si cela fonctionne. Pour autant que je sache, vous ne pouvez pas déboguer un événement en direct à partir de Google Sheets, vous devez donc le faire à partir du débogueur, ce qui est inutile car l'argument d'événement passé à ma onEdit()
fonction sera toujours indéfini si je l'exécute à partir du Script Editor
.
J'essayais donc d'utiliser la Logger.log
méthode pour enregistrer certaines données chaque fois que la onEdit
fonction est appelée, mais cela semble aussi que cela ne fonctionne que lorsqu'il est exécuté à partir du Script Editor
. Lorsque je l'exécute à partir de Script Editor
, je peux afficher les journaux en accédant àView->Logs...
J'espérais pouvoir voir les journaux à partir du moment où l'événement est réellement exécuté, mais je ne peux pas le comprendre.
Comment déboguer ce truc?
la source
Logger.log('firstLog');MailApp.sendEmail({to:'[email protected]',subject: "subject here ^_^",body: Logger.getLog()});
Réponses:
METTRE À JOUR:
Comme écrit dans cette réponse,
Stackdriver Logging est désormais la méthode de journalisation préférée.
Utilisez
console.log()
pour vous connecter à Stackdriver.Logger.log
vous enverra un e-mail (éventuellement) des erreurs qui se sont produites dans vos scripts, ou, si vous exécutez des choses à partir deScript Editor
, vous pouvez afficher le journal de la dernière fonction exécutée en allant àView->Logs
(toujours dans l'éditeur de script). Encore une fois, cela ne vous montrera que tout ce qui a été enregistré à partir de la dernière fonction que vous avez exécutée de l'intérieurScript Editor
.Le script que j'essayais de faire fonctionner avait à voir avec des feuilles de calcul - j'ai créé une feuille de calcul de type todo-checklist qui triait les éléments par priorités, etc.
Les seuls déclencheurs que j'ai installés pour ce script étaient les déclencheurs onOpen et onEdit. Le débogage du déclencheur onEdit était le plus difficile à comprendre, car je n'arrêtais pas de penser que si je définissais un point d'arrêt dans ma fonction onEdit, ouvrais la feuille de calcul, modifiais une cellule, mon point d'arrêt serait déclenché. Ce n'est pas le cas.
Pour simuler avoir édité une cellule, je ne finissent par avoir à faire quelque chose dans la feuille de calcul réelle cependant. Tout ce que j'ai fait était de m'assurer que la cellule que je voulais traiter comme "éditée" était sélectionnée, puis dans
Script Editor
, j'iraisRun->onEdit
. Ensuite, mon point d'arrêt serait atteint.Cependant, j'ai dû arrêter d'utiliser l'argument d'événement qui est passé dans la fonction onEdit - vous ne pouvez pas simuler cela en faisant
Run->onEdit
. Toutes les informations dont j'avais besoin dans la feuille de calcul, comme la cellule sélectionnée, etc., je devais les déterminer manuellement.Bref, longue réponse, mais je l'ai finalement compris.
MODIFIER :
Si vous voulez voir la liste de contrôle des tâches que j'ai créée, vous pouvez la consulter ici
(oui, je sais que n'importe qui peut le modifier - c'est le but de le partager!)
J'espérais que cela vous permettrait également de voir le script. Puisque vous ne pouvez pas le voir là-bas, le voici:
la source
Vrai - définissez vous-même l'argument d'événement pour le débogage. Voir Comment puis-je tester une fonction de déclenchement dans GAS?
C'est encore vrai, mais il y a de l'aide. La bibliothèque BetterLog de Peter Hermann redirigera tous les journaux vers une feuille de calcul, permettant la journalisation même à partir de code qui n'est pas attaché à une instance de l'éditeur / débogueur.
Si vous codez dans un script contenu dans une feuille de calcul, par exemple, vous pouvez ajouter uniquement cette ligne en haut de votre fichier de script, et tous les journaux iront dans une feuille "Journaux" dans la feuille de calcul. Aucun autre code nécessaire, utilisez simplement
Logger.log()
comme vous le feriez habituellement:la source
console.log()
devrait être la meilleure réponse maintenantMise à jour 2017: Stackdriver Logging est désormais disponible pour Google Apps Script. Dans la barre de menus de l'éditeur de script, allez à:
View > Stackdriver Logging
pour afficher ou diffuser les journaux.console.log () écrira les
DEBUG
messages de niveauExemple de
onEdit()
journalisation:Vérifiez ensuite les journaux dans l' interface utilisateur de Stackdriver étiquetés
onEdit() Event Object
pour voir le résultatla source
Logger.log
. En quoi est-ce différent de celuiconsole.log
que vous utilisez? Je suis très nouveau dans les outils, alors j'essaie simplement de comprendre ce que tout est.Un peu hacky, mais j'ai créé un tableau appelé "console", et chaque fois que je voulais sortir sur console, j'ai poussé vers le tableau. Ensuite, chaque fois que je voulais voir la sortie réelle, je revenais simplement
console
au lieu de ce que je retournais avant.la source
console.log('smth')
fonctionne parfaitement, mais qu'en est-il dans GAS?I just returned console
comment le sortez-vous?Si vous avez ouvert l'éditeur de script, vous verrez les journaux sous Affichage-> Journaux. Si votre script a un déclencheur onedit, apportez une modification à la feuille de calcul qui devrait déclencher la fonction avec l'éditeur de script ouvert dans un deuxième onglet. Accédez ensuite à l'onglet de l'éditeur de script et ouvrez le journal. Vous verrez tout ce que votre fonction transmet à l'enregistreur.
En gros, tant que l'éditeur de script est ouvert, l'événement écrira dans le journal et le montrera pour vous. Il ne montrera pas si quelqu'un d'autre est dans le fichier ailleurs.
la source
J'ai parcouru ces articles et j'ai fini par trouver une réponse simple, que je poste ici pour ceux qui veulent des solutions courtes et douces:
console.log("Hello World")
dans votre script.la source
J'ai le même problème, j'ai trouvé ce qui suit sur le Web quelque part ...
Les gestionnaires d'événements dans Docs sont cependant un peu compliqués. Étant donné que les documents peuvent gérer plusieurs modifications simultanées par plusieurs utilisateurs, les gestionnaires d'événements sont gérés côté serveur. Le problème majeur avec cette structure est que lorsqu'un script de déclenchement d'événement échoue, il échoue sur le serveur. Si vous voulez voir les informations de débogage, vous devrez configurer un déclencheur explicite dans le menu des déclencheurs qui vous enverra les informations de débogage lorsque l'événement échouera, sinon il échouera silencieusement.
la source
C'est loin d'être élégant, mais pendant le débogage, je me connecte souvent au Logger, puis j'utilise getLog () pour récupérer son contenu. Ensuite, soit je:
Essentiellement, cela devient simplement un problème de sortie JavaScript .
Il manque cruellement des fonctionnalités des
console.log()
implémentations modernes , mais le Logger aide toujours à déboguer les scripts Google.la source
Juste comme un avis. J'ai créé une fonction de test pour ma feuille de calcul. J'utilise la variable google jette dans la fonction onEdit (e) (je l'ai appelée e). Ensuite, j'ai créé une fonction de test comme celle-ci:
L'appel de cette fonction de test fait exécuter tout le code comme vous aviez un événement dans la feuille de calcul. Je viens de mettre la possibilité de la cellule que j'ai éditée qui m'a donné un résultat inattendu, en définissant la valeur comme la valeur que j'ai mise dans la cellule. OBS! pour plus de variables que googles donne à la fonction, allez ici: https://developers.google.com/apps-script/guides/triggers/events#google_sheets_events
la source
Actuellement, vous êtes confiné à la nature liée au conteneur de l'utilisation de scripts dans les documents. Si vous créez un nouveau script à l'extérieur de la documentation, vous pourrez exporter des informations vers une feuille de calcul Google et l'utiliser comme un outil de journalisation.
Par exemple dans votre premier bloc de code
Lorsque je travaille avec GAS, j'ai deux moniteurs (vous pouvez utiliser deux fenêtres) configurés avec l'un contenant l'environnement GAS et l'autre contenant le SS afin que je puisse écrire des informations et me connecter.
la source
La console de développement consignera les erreurs générées par le script de l'application, vous pouvez donc simplement lancer une erreur pour la consigner en tant que console.log normale. Cela arrêtera l'exécution, mais cela pourrait toujours être utile pour le débogage étape par étape.
apparaîtra dans la console de la même manière que
console.log('hello world')
la source
déboguez simplement le code de votre feuille de calcul comme ceci:
montre comme ça:
la source
onEdit
)