Même les développeurs les plus expérimentés écrivent rarement du code correctement du premier coup. Le dépannage est donc une partie importante du processus de développement. Dans cette section, nous aborderons quelques techniques qui peuvent vous aider à trouver, comprendre et déboguer les erreurs dans vos scripts.
Messages d'erreur
Lorsqu'un script rencontre une erreur, un message d'erreur s'affiche. Le message est accompagné d'un numéro de ligne utilisé pour le dépannage. Il existe deux types d'erreurs de base affichées de cette manière : les erreurs de syntaxe et les erreurs d'exécution.
Erreurs de syntaxe
Les erreurs de syntaxe sont dues à un code qui ne respecte pas la grammaire JavaScript. Elles sont détectées dès que vous essayez d'enregistrer le script. Par exemple, l'extrait de code suivant contient une erreur de syntaxe :
function emailDataRow(rowNumber) { var sheet = SpreadsheetApp.getActiveSheet(); var data = sheet.getDataRange().getValues(); var rowData = data[rowNumber-1].join(" "; MailApp.sendEmail('[email protected]', 'Data in row ' + rowNumber, rowData); }
Le problème de syntaxe ici est l'absence du caractère )
à la fin de la quatrième ligne. Lorsque vous essayez d'enregistrer le script, l'erreur suivante s'affiche :
Il manque une parenthèse fermante après la liste des arguments. (ligne 4)
Ces types d'erreurs sont généralement faciles à résoudre, car elles sont détectées immédiatement et ont généralement des causes simples. Vous ne pouvez pas enregistrer un fichier contenant des erreurs de syntaxe. Cela signifie que seul le code valide est enregistré dans votre projet.
Erreurs d'exécution
Ces erreurs sont dues à une utilisation incorrecte d'une fonction ou d'une classe, et ne peuvent être détectées qu'une fois le script exécuté. Par exemple, le code suivant génère une erreur d'exécution :
function emailDataRow(rowNumber) { var sheet = SpreadsheetApp.getActiveSheet(); var data = sheet.getDataRange().getValues(); var rowData = data[rowNumber-1].join(" "); MailApp.sendEmail('john', 'Data in row ' + rowNumber, rowData); }
Le code est correctement mis en forme, mais nous transmettons la valeur "john" pour l'adresse e-mail lors de l'appel de MailApp.sendEmail
. Comme il ne s'agit pas d'une adresse e-mail valide, l'erreur suivante est générée lors de l'exécution du script :
Adresse e-mail incorrecte : john (ligne 5)
Ces erreurs sont d'autant plus difficiles à résoudre que les données que vous transmettez à une fonction ne sont souvent pas écrites dans le code, mais extraites d'une feuille de calcul, d'un formulaire ou d'une autre source de données externe. Les techniques de débogage ci-dessous peuvent vous aider à identifier la cause de ces erreurs.
Erreurs fréquentes
Vous trouverez ci-dessous une liste des erreurs courantes et de leurs causes.
Trop d'appels effectués pour ce service : <nom de l'action>
Cette erreur indique que vous avez dépassé votre quota quotidien pour une action donnée. Par exemple, ce message d'erreur peut s'afficher si vous envoyez trop d'e-mails en une seule journée. Les quotas sont définis à différents niveaux pour les comptes personnels, de domaine et Premier. Ils peuvent être modifiés à tout moment sans préavis de la part de Google. Vous pouvez consulter les limites de quota pour différentes actions dans la documentation sur les quotas Apps Script.
Le serveur n'est pas disponible. ou Une erreur de serveur s'est produite. Veuillez réessayer.
Plusieurs raisons peuvent expliquer ces erreurs :
- Un serveur ou un système Google est temporairement indisponible. Patientez quelques instants, puis réessayez d'exécuter le script.
- Votre script contient une erreur qui n'est pas associée à un message d'erreur. Essayez de déboguer votre script pour voir si vous pouvez isoler le problème.
- Cette erreur est due à un bug dans Google Apps Script. Pour savoir comment rechercher et envoyer des rapports de bug, consultez Bugs. Avant de signaler un nouveau bug, effectuez une recherche pour voir si d'autres utilisateurs l'ont déjà signalé.
Vous devez disposer des autorisations requises pour pouvoir effectuer cette action.
Cette erreur indique que le script ne dispose pas de l'autorisation nécessaire pour s'exécuter. Lorsqu'un script est exécuté dans l'éditeur de script ou à partir d'un élément de menu personnalisé, une boîte de dialogue d'autorisation s'affiche pour l'utilisateur. Toutefois, lorsqu'un script est exécuté à partir d'un déclencheur, intégré à une page Google Sites ou exécuté en tant que service, la boîte de dialogue ne peut pas être présentée et cette erreur s'affiche.
Pour autoriser le script, ouvrez l'éditeur de script et exécutez n'importe quelle fonction. L'invite d'autorisation s'affiche pour que vous puissiez autoriser le projet de script. Si le script contient de nouveaux services non autorisés, vous devez l'autoriser à nouveau.
Cette erreur est souvent due à des déclencheurs qui se déclenchent avant que l'utilisateur ne les ait autorisés. Si vous n'avez pas accès au projet de script (parce que l'erreur se produit pour un module complémentaire que vous utilisez, par exemple), vous pouvez généralement autoriser le script en utilisant à nouveau le module complémentaire. Si un déclencheur continue de se déclencher et de provoquer cette erreur, vous pouvez le supprimer en procédant comme suit :
- À gauche du projet Apps Script, cliquez sur Déclencheurs .
- À droite du déclencheur que vous souhaitez supprimer, cliquez sur Plus > Supprimer le déclencheur.
Vous pouvez également supprimer les déclencheurs de modules complémentaires problématiques en désinstallant le module complémentaire.
Accès refusé : DriveApp ou La règle du domaine a désactivé les applications Drive tierces
Les administrateurs de domaines Google Workspace peuvent désactiver l'API Drive pour leur domaine, ce qui empêche leurs utilisateurs d'installer et d'utiliser les applications Google Drive. Ce paramètre empêche également les utilisateurs d'utiliser les modules complémentaires Apps Script qui utilisent le service Drive ou le service Drive avancé (même si le script a été autorisé avant que l'administrateur ne désactive l'API Drive).
Toutefois, si un module complémentaire ou une application Web utilisant le service Drive est publié pour une installation à l'échelle du domaine et est installé par l'administrateur pour certains ou tous les utilisateurs du domaine, les fonctions de script fonctionnent pour ces utilisateurs, même si l'API Drive est désactivée dans le domaine.
Le script n'est pas autorisé à obtenir l'identité de l'utilisateur actif.
Indique que l'identité et l'adresse e-mail de l'utilisateur actif ne sont pas disponibles pour le script. Cet avertissement résulte d'un appel à Session.getActiveUser()
. Cela peut également résulter d'un appel à Session.getEffectiveUser()
si le script s'exécute dans un mode d'autorisation autre que AuthMode.FULL
. Si cet avertissement est signalé, les appels ultérieurs à User.getEmail()
ne renvoient que "".
Il existe plusieurs façons de résoudre ce problème, selon le mode d'autorisation sous lequel le script est exécuté. Le mode d'autorisation est exposé dans les fonctions déclenchées en tant que propriété authMode
du e
paramètre d'événement.
- Dans
AuthMode.FULL
, envisagez d'utiliser plutôtSession.getEffectiveUser()
. - Dans
AuthMode.LIMITED
, assurez-vous que le propriétaire a autorisé le script. - Dans les autres modes d'autorisation, évitez d'appeler l'une ou l'autre méthode.
- Si vous êtes un client Google Workspace qui rencontre ce message d'avertissement pour la première fois avec un déclencheur installable, assurez-vous que le déclencheur s'exécute en tant qu'utilisateur de votre organisation.
Bibliothèque manquante
Si vous ajoutez une bibliothèque populaire à votre script, vous pouvez recevoir un message d'erreur indiquant qu'elle est manquante, même si elle est listée comme dépendance pour votre script. Cela peut être dû au fait qu'un trop grand nombre de personnes accèdent à la bibliothèque en même temps. Pour éviter cette erreur, essayez l'une des solutions suivantes :
- Copiez et collez le code de la bibliothèque dans votre script, puis supprimez la dépendance de la bibliothèque.
- Copiez le script de la bibliothèque et déployez-le en tant que bibliothèque depuis votre compte. Veillez à remplacer la dépendance dans votre script d'origine par la nouvelle bibliothèque au lieu de la bibliothèque publique.
Une erreur s'est produite en raison d'une version de bibliothèque ou de déploiement manquante. Code d'erreur Not_Found
Ce message d'erreur indique l'un des problèmes suivants :
- La version déployée du script a été supprimée. Pour mettre à jour la version déployée de votre script, consultez Modifier un déploiement avec version.
- La version d'une bibliothèque utilisée par le script a été supprimée. Pour vérifier quelle bibliothèque est manquante, cliquez sur > Ouvrir dans un nouvel onglet à côté du nom de la bibliothèque. La bibliothèque manquante génère un message d'erreur. Une fois que vous avez trouvé la bibliothèque à mettre à jour, effectuez l'une des actions suivantes :
- Mettez à jour la bibliothèque pour utiliser une autre version. Consultez Mettre à jour une bibliothèque.
- Supprimez la bibliothèque supprimée de votre projet de script et de votre code. Consultez Supprimer une bibliothèque.
Plus - Le script d'une bibliothèque utilisée par votre script inclut une autre bibliothèque qui utilise une version supprimée. Effectuez l'une des actions suivantes :
- Si vous disposez d'un accès en modification à la bibliothèque utilisée par votre script, mettez à jour la bibliothèque secondaire de ce script vers une version existante.
- Mettez à jour la bibliothèque pour utiliser une autre version. Consultez Mettre à jour une bibliothèque.
- Supprimez la bibliothèque de votre projet de script et de votre code. Consultez Supprimer une bibliothèque.
Erreur 400 : invalid_scope lors de l'appel de l'API Google Chat avec le service avancé
Si vous rencontrez l'erreur Error 400: invalid_scope
avec le message Some requested scopes cannot be shown
, cela signifie que vous n'avez spécifié aucun champ d'application d'autorisation dans le fichier appsscript.json
du projet Apps Script. Dans la plupart des cas, Apps Script détermine automatiquement les autorisations dont un script a besoin. Toutefois, lorsque vous utilisez le service avancé Chat, vous devez ajouter manuellement les autorisations utilisées par votre script au fichier manifeste de votre projet Apps Script. Consultez Définir des niveaux d'accès explicites.
Pour résoudre l'erreur, ajoutez les niveaux d'autorisation appropriés au fichier appsscript.json
du projet Apps Script dans le cadre du tableau oauthScopes
. Par exemple, pour appeler la méthode spaces.messages.create
, ajoutez ce qui suit :
"oauthScopes": [ "https://www.googleapis.com/auth/chat.messages.create" ]
Votre administrateur n'autorise pas les appels UrlFetch à <URL>.
Les administrateurs Google Workspace peuvent activer une liste d'autorisation dans la console d'administration pour contrôler les domaines externes auxquels vous pouvez accéder via Apps Script.
Pour résoudre l'erreur, contactez votre administrateur pour qu'il ajoute l'URL à la liste d'autorisation.
Débogage
Toutes les erreurs ne déclenchent pas l'affichage d'un message d'erreur. Il peut s'agir d'une erreur plus subtile, où le code est techniquement correct et peut s'exécuter, mais où les résultats ne sont pas ceux attendus. Voici quelques stratégies pour gérer de telles situations et examiner plus en détail un script qui ne s'exécute pas comme prévu.
Journalisation
Lors du débogage, il est souvent utile d'enregistrer des informations lorsqu'un projet de script s'exécute. Google Apps Script propose deux méthodes pour consigner des informations : le service Cloud Logging et les services Logger et Console plus basiques, qui sont intégrés à l'éditeur Apps Script.
Pour en savoir plus, consultez le guide de Logging.
Error Reporting
Les exceptions qui se produisent en raison d'erreurs d'exécution sont automatiquement enregistrées à l'aide du service Google Cloud Error Reporting. Ce service vous permet de rechercher et de filtrer les messages d'exception créés par votre projet de script.
Pour accéder à Error Reporting, consultez Afficher les journaux Cloud et les rapports d'erreurs dans la console Google Cloud Platform.
Exécutions
Chaque fois que vous exécutez un script, Apps Script enregistre l'exécution, y compris les journaux Cloud. Ces enregistrements peuvent vous aider à comprendre les actions effectuées par votre script.
Pour afficher les exécutions de votre script dans le projet Apps Script, cliquez sur Exécutions
à gauche.Vérifier l'état du service Apps Script
Bien que cela soit rare, il arrive que certains services Google Workspace (comme Gmail ou Drive) rencontrent des problèmes temporaires pouvant entraîner des interruptions de service. Dans ce cas, il est possible que les projets Apps Script qui interagissent avec ces services ne fonctionnent pas comme prévu.
Vous pouvez vérifier si un service Google Workspace est en panne en consultant le Google Workspace Status Dashboard. Si vous rencontrez actuellement une panne, vous pouvez attendre qu'elle soit résolue ou demander de l'aide supplémentaire dans le Centre d'aide Google Workspace ou la documentation Problèmes connus dans Google Workspace.
Utiliser le débogueur et les points d'arrêt
Pour identifier les problèmes dans votre script, vous pouvez l'exécuter en mode débogage. Lorsqu'il est exécuté en mode débogage, un script s'interrompt lorsqu'il atteint un point d'arrêt, c'est-à-dire une ligne que vous avez mise en surbrillance dans votre script et qui, selon vous, peut poser problème. Lorsqu'un script est mis en pause, la valeur de chaque variable à ce moment-là s'affiche, ce qui vous permet d'inspecter le fonctionnement interne d'un script sans avoir à ajouter de nombreuses instructions de journalisation.
Ajouter un point d'arrêt
Pour ajouter un point d'arrêt, pointez sur le numéro de ligne à laquelle vous souhaitez l'ajouter. À gauche du numéro de ligne, cliquez sur le cercle. L'image ci-dessous montre un exemple de point d'arrêt ajouté à un script :
Exécuter un script en mode débogage
Pour exécuter le script en mode débogage, cliquez sur Déboguer en haut de l'éditeur.
Avant que le script n'exécute la ligne avec le point d'arrêt, il s'interrompt et affiche un tableau d'informations de débogage. Vous pouvez utiliser ce tableau pour inspecter des données telles que les valeurs des paramètres et les informations stockées dans les objets.
Pour contrôler l'exécution du script, utilisez les boutons "Step in" (Pas à pas détaillé), "Step over" (Pas à pas) et "Step out" (Sortir) en haut du panneau "Debugger" (Débogueur). Ils vous permettent d'exécuter le script ligne par ligne et d'inspecter l'évolution des valeurs au fil du temps.
Erreur : Le code source de la ligne en cours n'est pas disponible
Cette erreur s'affiche lorsqu'aucun fichier de débogage actif n'est disponible. Google Apps Script ne permet pas d'afficher les scripts JavaScript (JS) générés de manière dynamique dans l'éditeur de script, comme ceux générés à l'aide de eval()
et new Function()
. Ces scripts sont créés et exécutés dans le moteur V8, mais ne sont pas représentés en tant que fichiers autonomes dans l'éditeur. Si vous exécutez ces scripts pas à pas, cette erreur s'affichera.
Prenons l'exemple du code suivant :
function myFunction() { eval('a=2'); }
Lorsque eval()
est appelé, son argument est traité comme du code JS et s'exécute en tant que script créé dynamiquement dans le moteur V8. Si vous effectuez un pas d'exécution dans eval()
, cette erreur s'affiche. Si le script inclut un commentaire //# sourceURL
, son nom s'affiche dans la pile d'appel. Dans le cas contraire, il apparaît comme une entrée sans nom.
Malgré le message d'erreur, la session de débogage reste active et l'exécution peut se poursuivre. Pour continuer, passez à l'étape "Pas à pas" ou reprenez l'exécution. Toutefois, cette erreur continue de s'afficher tant que l'exécution reste dans le champ d'application du script dynamique. Une fois l'exécution terminée dans le script dynamique, le débogage se poursuit sans cette erreur.
Problèmes liés à l'utilisation de plusieurs comptes Google
Si vous êtes connecté simultanément à plusieurs comptes Google, vous risquez de rencontrer des problèmes d'accès à vos modules complémentaires et applications Web. Les connexions multiples ou la connexion simultanée à plusieurs comptes Google ne sont pas compatibles avec Apps Script, les modules complémentaires ni les applications Web.
Si vous ouvrez l'éditeur Apps Script alors que vous êtes connecté à plusieurs comptes, Google vous invite à choisir celui que vous souhaitez utiliser.
Si vous ouvrez une application Web ou un module complémentaire et que vous rencontrez des problèmes de connexions multiples, essayez l'une des solutions suivantes :
- Déconnectez-vous de tous vos comptes Google et connectez-vous uniquement à celui qui est associé au module complémentaire ou à l'application Web auxquels vous souhaitez accéder.
- Ouvrez une fenêtre de navigation privée dans Google Chrome ou dans un autre navigateur, puis connectez-vous au compte Google associé au module complémentaire ou à l'application Web auxquels vous souhaitez accéder.
Obtenir de l'aide
Le débogage d'un problème à l'aide des outils et techniques listés ci-dessus peut résoudre divers problèmes, mais vous pouvez rencontrer des problèmes qui nécessitent une aide supplémentaire. Consultez notre page d'assistance pour savoir où poser des questions et signaler des bugs.