Comment déboguer le Script Google Apps (aka où Enregistreur.journal journal?)
Dans des Feuilles de calcul Google, vous pouvez ajouter de la fonctionnalité de script. Je vais ajouter quelque chose pour la onEdit
événement, mais je ne peux pas dire si ça fonctionne. Aussi loin que je peux dire, vous ne pouvez pas déboguer un événement en direct à partir de Feuilles de calcul Google, de sorte que vous avez à faire à partir du débogueur, ce qui est inutile puisque l'événement argument passé à mon onEdit()
fonction sera toujours undefined si je le lance à partir de la Script Editor
.
Alors, j'ai essayé d'utiliser le Logger.log
méthode pour enregistrer certaines données à chaque fois que le onEdit
fonction est appelée, mais cela aussi me semble qu'il ne fonctionne que lorsqu'il est exécuté à partir de la Script Editor
. Quand je le lance à partir de la Script Editor
, je peux afficher les journaux en allant à View->Logs...
J'espérais que je serais en mesure de voir les journaux à partir de quand l'événement est exécuté, mais je ne peux pas le comprendre.
Comment corriger ce genre de choses?
- Même problème ici accepté réponse ne répond pas, mais donne beaucoup de mal de plaine info.
- Il semble que l'on s'est fixé maintenant. Tant que vous ouvrez l'Éditeur de Script à partir de votre feuille de calcul, laissez-onglet ouvert lorsque vous exécutez le farcir dans votre Feuille. Revenez ensuite à l'onglet script et il aura la Journalisation des info en elle.
- tldr; copier, coller, et exécuter
Logger.log('firstLog');MailApp.sendEmail({to:'[email protected]',subject: "subject here ^_^",body: Logger.getLog()});
- Maby, vous devez modifier la accepté de répondre ou ajouter une note Stackdriver enregistrement est disponible.
Vous devez vous connecter pour publier un commentaire.
Mise à JOUR:
Comme écrit dans cette réponse,
Stackdriver De Journalisation est la méthode préférée de l'exploitation forestière aujourd'hui.
Utilisation
de la console.log()
pour vous connecter à Stackdriver.Logger.log
allons vous envoyer un e-mail (éventuellement) des erreurs qui se sont produites dans vos scripts, ou, si vous êtes en cours d'exécution, les choses de laScript Editor
, vous pouvez afficher le journal de la dernière exécution de la fonction en allant àView->Logs
(encore dans l'éditeur de script). Encore une fois, qui ne sera que de vous montrer tout ce qui a été enregistré à partir de la dernière fonction que vous avez exécuté de l'intérieurScript Editor
.Le script que j'essayais d'obtenir de travail a eu à faire avec des feuilles de calcul - j'ai fait une feuille de calcul todo-liste de contrôle type de chose que les éléments triés par priorités et ces.
Les seuls déclencheurs, j'ai installé le script ont été onOpen et onEdit déclencheurs. Débogage de l'onEdit déclencheur a été le plus difficile à comprendre, parce que je n'arrêtais pas de penser que si j'ai mis un point d'arrêt dans mon onEdit fonction, a ouvert la feuille de calcul, a édité une cellule, que mon point d'arrêt serait déclenchée. Ce n'est pas le cas.
De simuler avoir édité une cellule, j'ai ne finissent par avoir à faire quelque chose dans la feuille de calcul si. Tout ce que je fait est assurez-vous que la cellule que je voulais traiter comme "modifié" a été sélectionné, puis dans
Script Editor
, je voudrais aller àRun->onEdit
. Alors mon point d'arrêt serait frappé.Cependant, j'ai dû arrêter d'utiliser l'argument d'événement qui est passée dans le onEdit de la fonction - vous ne pouvez pas simuler qu'en faisant
Run->onEdit
. Toutes les infos dont j'avais besoin à partir de la feuille de calcul, telles que la cellule a été sélectionné, etc, j'ai dû trouver manuellement.De toute façon, réponse longue, mais j'ai compris par la suite.
MODIFIER:
Si vous voulez voir la todo liste de vérification que j'ai faite, vous pouvez découvrez-le ici
(oui, je sais, n'importe qui peut le modifier - c'est le point de la partager!)
J'espérais que ce serait vous permettent de voir le script. Puisque vous ne pouvez pas voir s'il en existe, elle est ici:
console.log()
Vrai - afin de définir l'argument d'événement vous-même à des fins de débogage. Voir Comment puis-je tester une fonction de déclenchement dans le GAZ?
C'est encore vrai, mais il ya de l'aide. Peter Hermann BetterLog bibliothèque va rediriger tous les journaux dans une feuille de calcul, l'activation de la journalisation même à partir du code qui n'est pas attaché à une instance de l'éditeur /débogueur.
Si vous codez dans une feuille de calcul contient un script, par exemple, vous pouvez ajouter cette ligne en haut de votre fichier de script, et tous les journaux vont à une "des Journaux" la feuille de la feuille de calcul. Aucun code nécessaire, il suffit d'utiliser
Logger.log()
comme vous le feriez habituellement:console.log()
devrait être la meilleure réponse maintenant2017 mise à Jour:
Stackdriver De Journalisation est maintenant disponible pour Google Apps Script. À partir de la barre de menu dans l'éditeur de script, goto:
View > Stackdriver Logging
pour afficher ou de diffuser les journaux.console.log() va écrire
DEBUG
les messages de niveauExemple
onEdit()
d'enregistrement:Ensuite, vérifiez les logs dans le Stackdriver de l'INTERFACE utilisateur marqué
onEdit() Event Object
de voir la sortieLogger.log
. Comment est-ce différent deconsole.log
que vous utilisez? Je suis très nouveau pour les outils afin de juste essayer de comprendre ce que tout est.Un peu hacky, mais j'ai créé un tableau appelé "console", et à chaque fois que je voulais à la sortie de la console j'ai poussé à la baie. Alors à chaque fois que je voulais voir le résultat réel, je viens de rentrer
console
la place de ce que j'étais de retour avant.console.log('smth')
fonctionne parfaitement, mais dans le GAZ?I just returned console
comment avez-vous sortie?Si vous avez l'éditeur de script ouvrir vous verrez les journaux sous la Vue->Journaux. Si votre script est un onedit de déclenchement, d'apporter une modification à la feuille de calcul qui doit déclencher la fonction avec l'éditeur de script ouvre dans un second onglet. Ensuite, allez à l'éditeur de script onglet et ouvrir le journal. Vous verrez quel que soit votre fonction passe à l'enregistreur de données.
Fondamentalement, tant que l'éditeur de script est ouvert, l'événement permettra d'écrire dans le journal et de le montrer pour vous. Il ne s'affichera pas si quelqu'un d'autre est dans le fichier ailleurs.
Je vais avoir le même problème, j'ai trouvé le ci-dessous sur le web quelque part....
Gestionnaires d'événements dans les Docs sont un peu compliqué cependant. Parce que les docs peut gérer de multiples et simultanées des modifications par plusieurs utilisateurs, les gestionnaires d'événements sont traités côté serveur. Le problème majeur avec cette structure, c'est que lorsqu'un événement déclencheur de script échoue, échoue sur le serveur. Si vous souhaitez voir des informations de débogage, vous aurez besoin de configuration explicite trigger sous les déclencheurs menu que les emails que vous les informations de débogage lors de l'événement de défaillance ou d'autre il échoue silencieusement.
C'est loin d'être élégant, mais pendant le débogage, j'ai souvent connecter à l'Enregistreur de données, puis utiliser getLog() pour extraire son contenu. Ensuite, j'ai soit:
Essentiellement, il devient juste un JavaScript sortie question.
Il grossièrement manque la fonctionnalité moderne
console.log()
implémentations, mais l'exploitant n'a encore aide au débogage des Scripts Google.juste le débogage de votre feuille de calcul de code comme ceci:
affiche comme ceci:
Actuellement, vous sont confinés dans le conteneur lié à la nature de l'utilisation des scripts dans les docs. Si vous créez un nouveau script à l'intérieur de l'extérieur de docs, alors vous serez en mesure d'exporter les informations vers une feuille de calcul google et l'utiliser comme un outil de journalisation.
Par exemple dans votre premier bloc de code
Quand je travaille avec le GAZ, j'ai deux moniteurs ( vous pouvez utiliser deux fenêtres ) mis en place avec l'un contenant le GAZ de l'environnement et l'autre contenant la SS, donc je peux écrire des informations et des journaux.
Juste un avis. J'ai fait un test en fonction de ma feuille de calcul. J'utilise la variable google lance dans la onEdit(e) fonction (je l'ai appelé e). Puis j'ai fait un test de la fonction comme ceci:
L'appel de cette fonction de test fait tout le code à exécuter en tant que vous avez eu un événement dans la feuille de calcul. Je viens de mettre dans le possision de la cellule, j'ai édité le fichier qui m'a donné un résultat inattendu, de la définition de valeur que la valeur que j'ai mis dans la cellule.
OBS! pour plus de variables que google donne à la fonction aller ici: https://developers.google.com/apps-script/guides/triggers/events#google_sheets_events
Le dev console d'erreurs dans le journal des jetés par l'application de script, de sorte que vous pouvez simplement jeter une erreur pour l'obtenir connecté comme un fait normal de la console.journal. Il va arrêter l'exécution, mais ça peut être utile pour l'étape-par-étape de débogage.
s'afficher dans la console de la même façon à
console.log('hello world')