Dépannage

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. Cette section présente des techniques permettant de trouver, de comprendre et de déboguer les erreurs dans vos scripts.

Messages d'erreur

Lorsqu'un script rencontre une erreur, un message d'erreur s'affiche avec un numéro de ligne. Il existe deux types d'erreurs de base : les erreurs de syntaxe et les erreurs d'exécution.

Erreurs de syntaxe

Les erreurs de syntaxe se produisent lorsque le code ne respecte pas la grammaire JavaScript. Elles sont détectées lorsque vous enregistrez le script. Par exemple, l'extrait 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('john@example.com',
                    'Data in row ' + rowNumber,
                    rowData);
}

Le problème est l'absence du caractère ) à la fin de la ligne 4. Lorsque vous enregistrez le script, l'erreur suivante s'affiche :

Il manque une parenthèse fermante après la liste des arguments. (ligne 4)

Ces erreurs sont détectées immédiatement, ce qui facilite leur résolution. Seul le code valide est enregistré dans votre projet.

Erreurs d'exécution

Les erreurs d'exécution se produisent lorsqu'une fonction ou une classe est utilisée de manière incorrecte. Elles sont détectées lors de l'exécution du script. Par exemple, le code suivant provoque 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);
}

Bien que le code soit correctement mis en forme, "john" n'est pas une adresse e-mail valide. L'erreur suivante est générée :

Adresse e-mail incorrecte : john (ligne 5)

Ces erreurs sont difficiles à résoudre, car les données sont souvent extraites de sources externes telles que des feuilles de calcul ou des formulaires. Utilisez des techniques de débogage pour identifier la cause.

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, par exemple en envoyant trop d'e-mails. Les quotas varient selon le type de compte et sont susceptibles d'être modifiés. Consultez les limites 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.

Voici quelques causes possibles :

  • Un serveur Google est temporairement indisponible. Patientez, puis réessayez.
  • Une erreur dans votre script ne comporte pas de message correspondant. Essayez de déboguer pour isoler le problème.
  • Un bug existe dans Google Apps Script. Recherchez et signalez des bugs dans Bugs.

Vous devez disposer des autorisations requises pour pouvoir effectuer cette action.

Le script ne dispose pas de l'autorisation requise pour s'exécuter. Lorsqu'un script s'exécute à partir d'un déclencheur ou en tant que service, une boîte de dialogue d'autorisation ne peut pas s'afficher.

Pour autoriser le script, ouvrez l'éditeur de script et exécutez n'importe quelle fonction. Si le script utilise de nouveaux services non autorisés, vous devez l'autoriser à nouveau.

Les déclencheurs qui se déclenchent avant l'autorisation ou après l'expiration entraînent souvent cette erreur. Si un module complémentaire est à l'origine de ce problème, utilisez-le à nouveau pour réautoriser l'accès. Supprimez les déclencheurs problématiques :

  1. Dans le projet Apps Script, cliquez sur Déclencheurs .
  2. À côté du déclencheur, cliquez sur Plus > Supprimer le déclencheur.

Vous pouvez également désinstaller le module complémentaire.

Des autorisations précises peuvent également être à l'origine de ces erreurs. Consultez la page Scopes d'autorisation pour protéger les exécutions de déclencheurs.

Accès refusé : DriveApp ou La règle du domaine a désactivé les applications Drive tierces

Les administrateurs Google Workspace peuvent désactiver l'API Drive pour leur domaine, ce qui empêche les utilisateurs d'utiliser les applications Drive ou les modules complémentaires Apps Script qui utilisent le service Drive.

Si un module complémentaire ou une application Web est publié pour une installation à l'échelle du domaine et installé par un administrateur, les fonctions de script s'exécutent même si l'API Drive est désactivée.

Le script n'est pas autorisé à obtenir l'identité de l'utilisateur actif.

L'identité et l'adresse e-mail de l'utilisateur actif ne sont pas disponibles. Cela résulte d'appels à Session.getActiveUser() ou Session.getEffectiveUser() dans des modes d'autorisation autres que AuthMode.FULL. Si votre script s'exécute sur un déclencheur, vous pouvez trouver le mode d'autorisation dans la propriété authMode de l'objet d'événement Apps Script.

Résolvez ce problème en fonction du mode d'autorisation :

  • Dans AuthMode.FULL, envisagez d'utiliser plutôt Session.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 et que vous voyez cet avertissement pour la première fois à partir d'un déclencheur installable, assurez-vous que le déclencheur s'exécute en tant qu'utilisateur de votre organisation.

Bibliothèque manquante

Une bibliothèque peut être signalée comme manquante si trop de personnes y accèdent simultanément. Pour remédier à ce problème, procédez comme suit :

  • Copiez le code de la bibliothèque directement dans votre script.
  • Copiez et déployez la bibliothèque depuis votre propre compte.
  • Si la bibliothèque n'est pas nécessaire au fonctionnement de votre script, supprimez-la de votre projet de script.

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 du script utilisée par un déploiement a été supprimée. Pour résoudre ce problème, modifiez le déploiement et sélectionnez une autre version du script.
  • Une version de bibliothèque utilisée par le script a été supprimée. Pour résoudre ce problème, dans l'éditeur de script, sous "Bibliothèques", recherchez la bibliothèque et mettez-la à jour vers une autre version ou supprimez-la. Pour effectuer une mise à jour, cliquez sur le numéro de version et sélectionnez-en une autre. Pour supprimer un élément, cliquez sur Plus  > Supprimer.
  • Une bibliothèque inclut une autre bibliothèque dont la version a été supprimée. Pour résoudre ce problème, contactez l'auteur de la bibliothèque ou utilisez une autre version de la bibliothèque utilisée par votre script.

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 d'erreur 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 utiliser une liste d'autorisation pour contrôler l'accès aux domaines externes. Contactez votre administrateur pour ajouter l'URL à la liste d'autorisation.

Débogage

Certaines erreurs sont subtiles et ne déclenchent pas de messages. Par exemple, votre code peut s'exécuter, mais les résultats sont inattendus. Utilisez les stratégies suivantes pour examiner les scripts qui se comportent de manière inattendue.

Journalisation

Enregistrez des informations lors de l'exécution d'un script à l'aide du service Cloud Logging ou des services Logger et Console dans l'éditeur de script.

Error Reporting

Pour utiliser Error Reporting dans Google Cloud, utilisez un projet standard géré par l'utilisateur au lieu d'un projet par défaut.

Lorsque vous utilisez un projet standard, les erreurs d'exécution sont automatiquement enregistrées dans Google Cloud Error Reporting. Afficher les journaux Cloud et les rapports d'erreur dans la console Google Cloud

Exécutions

Google Apps Script enregistre chaque exécution, y compris les journaux Cloud. Pour afficher les exécutions, cliquez sur Exécutions .

Vérifier l'état du service

Vérifiez si des pannes de service Google Workspace sont en cours sur le Google Workspace Status Dashboard.

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 :

Ajouter un point d&#39;arrêt

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 "Pas à pas détaillé", "Pas à pas principal" et "Sortir" en haut du panneau "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

Le code source de la ligne en cours n&#39;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 se produit.

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. Sinon, 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 "Entrer dans", "Sortir de" ou "Reprendre 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

Consultez notre page d'assistance pour poser des questions ou signaler des bugs.