Dépannage

Même le développeur le plus expérimenté écrit rarement le code correctement lors de la première tentative, ce qui fait du dépannage une partie importante du processus de développement. Dans cette section, nous allons aborder certaines techniques qui peuvent vous aider à détecter, comprendre et déboguer les erreurs dans vos scripts.

Messages d'erreur

Lorsque votre 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. Deux types d'erreurs de base s'affichent de cette manière: les erreurs de syntaxe et les erreurs d'exécution.

Erreurs de syntaxe

Les erreurs de syntaxe sont dues à une écriture de code qui ne suit 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('john@example.com',
                    'Data in row ' + rowNumber,
                    rowData);
}

Ici, le problème de syntaxe est un caractère ) manquant à la fin de la quatrième ligne. Si vous essayez d'enregistrer le script, l'erreur suivante s'affiche:

Signe ) manquant après la liste d'arguments. (ligne 4)

Ces types d'erreurs sont généralement faciles à résoudre, car ils sont détectés 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 causées par 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 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);
}

Le code est correctement formaté, 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: jean (ligne 5)

Ces erreurs sont plus difficiles à résoudre, car 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 leurs causes.

Service invoqué à de trop nombreuses reprises: <nom de l'action>

Cette erreur indique que vous avez dépassé votre quota quotidien pour une action donnée. Par exemple, vous pouvez rencontrer cette erreur si vous envoyez trop d'e-mails en une seule journée. Les quotas sont définis à différents niveaux pour les comptes personnels, les comptes de domaine et les comptes Premier, et sont susceptibles d'être modifiés à tout moment sans annonce préalable de Google. Vous pouvez consulter les limites de quota pour différentes actions dans la documentation sur les quotas Apps Script.

Serveur non disponible. ou Une erreur de serveur s'est produite. Veuillez réessayer.

Plusieurs causes peuvent être à l'origine de ces erreurs:

  • Un serveur ou un système Google est temporairement indisponible. Attendez quelques instants, puis réessayez d'exécuter le script.
  • Votre script comporte une erreur qui n'est associée à aucun message d'erreur. Essayez de déboguer votre script et voyez si vous pouvez isoler le problème.
  • Un bug dans Google Apps Script est à l'origine de cette erreur. Pour savoir comment rechercher et envoyer des rapports de bugs, consultez la section Bugs. Avant de signaler un nouveau bug, effectuez une recherche pour voir si d'autres utilisateurs l'ont déjà signalé.

Une autorisation est requise pour effectuer cette action.

Cette erreur indique que le script ne dispose pas des autorisations nécessaires pour s'exécuter. Lorsqu'un script est exécuté dans l'éditeur de scripts ou à partir d'un élément de menu personnalisé, une boîte de dialogue d'autorisation s'affiche. 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 scripts et exécutez n'importe quelle fonction. L'invite d'autorisation s'affiche pour vous permettre d'autoriser le projet de script. Si le script contient de nouveaux services non autorisés, vous devez l'autoriser à nouveau.

Cette erreur est souvent causée par 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 (car 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 s'exécuter et provoque cette erreur, vous pouvez le supprimer en procédant comme suit:

  1. Sur la gauche du projet Apps Script, cliquez sur Déclencheurs .
  2. À droite du déclencheur que vous souhaitez supprimer, cliquez sur Plus > Supprimer le déclencheur.

Vous pouvez également supprimer les déclencheurs de module complémentaire problématiques en désinstallant le module complémentaire.

Accès refusé: DriveApp ou Les règles du domaine ont désactivé les applications Drive tierces

Les administrateurs de Google Workspace domaines ont la possibilité de 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 de se servir des 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 au niveau du domaine et qu'il est installé par l'administrateur pour certains ou tous les utilisateurs du domaine, le script fonctionne 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(). Elle 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 suivants à User.getEmail() ne renvoient que "".

Il existe plusieurs façons de résoudre cet avertissement, en fonction du mode d'autorisation sous lequel le script s'exécute. Le mode autorisation est exposé dans les fonctions déclenchées en tant que propriété authMode du paramètre d'événement e.

  • Dans AuthMode.FULL, envisagez d'utiliser Session.getEffectiveUser() à la place.
  • 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 de ces méthodes.
  • Si vous êtes un client Google Workspace que vous venez de recevoir cet avertissement provenant d'un déclencheur pouvant être installé, assurez-vous qu'il s'exécute en tant qu'utilisateur au sein 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 la bibliothèque est répertoriée en tant que dépendance de 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 à partir de votre compte. Veillez à mettre à jour la dépendance de votre script d'origine vers la nouvelle bibliothèque plutôt que vers 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'une des situations suivantes:

  • La version déployée du script a été supprimée. Pour mettre à jour la version déployée de votre script, consultez la section Modifier un déploiement avec gestion des versions.
  • La version d'une bibliothèque utilisée par le script a été supprimée. Pour savoir quelle bibliothèque est manquante, à côté du nom de la bibliothèque, cliquez sur Plus > Ouvrir dans un nouvel onglet. La bibliothèque manquante renvoie un message d'erreur. Une fois que vous avez trouvé la bibliothèque à mettre à jour, effectuez l'une des actions suivantes :
  • Le script d'une bibliothèque que votre script utilise inclut une autre bibliothèque qui utilise une version supprimée. Effectuez l'une des actions suivantes :
    • Si vous êtes autorisé à modifier 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.

Error 400: invalid_scope lorsque vous appelez l'API Google Chat avec le service avancé

Si Error 400: invalid_scope s'affiche avec le message d'erreur Some requested scopes cannot be shown, cela signifie que vous n'avez spécifié aucun niveau d'autorisation dans le fichier appsscript.json du projet Apps Script. Dans la plupart des cas, Apps Script détermine automatiquement les champs d'application dont un script a besoin. Toutefois, lorsque vous utilisez le service avancé Chat, vous devez ajouter manuellement les champs d'application d'autorisation utilisés par votre script au fichier manifeste de votre projet Apps Script. Consultez la section Définir des champs d'application explicites.

Pour résoudre l'erreur, ajoutez les niveaux d'autorisation appropriés au fichier appsscript.json du projet Apps Script dans le tableau oauthScopes. Par exemple, pour appeler la méthode spaces.messages.create, ajoutez les éléments suivants:

"oauthScopes": [
  "https://www.googleapis.com/auth/chat.messages.create"
]

Déboguer des modèles

Toutes les erreurs n'entraînent pas l'affichage d'un message d'erreur. Il peut y avoir une erreur plus subtile : le code est techniquement correct et peut s'exécuter, mais les résultats ne sont pas ceux attendus. Voici quelques stratégies pour gérer de telles situations et étudier 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 pendant l'exécution d'un projet de script. Google Apps Script propose deux méthodes de consignation des informations: le service Cloud Logging et les services de journalisation et de console plus basiques intégrés à l'éditeur Apps Script.

Pour en savoir plus, consultez le guide de journalisation.

Error Reporting

Les exceptions qui surviennent 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 et 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 sur la gauche.

Vérifier l'état du service Apps Script

Bien que les services Google Workspace rares et parfois spécifiques (tels que Gmail ou Drive) rencontrent des problèmes temporaires pouvant entraîner des interruptions de service, Lorsque cela se produit, les projets Apps Script qui interagissent avec ces services peuvent ne pas fonctionner comme prévu.

Pour vérifier si le service Google Workspace est indisponible, consultez le Google Workspace Status Dashboard. Si une panne est en cours, 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 sur les problèmes connus de Google Workspace.

Utiliser le débogueur et les points d'arrêt

Pour localiser 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. Il s'agit d'une ligne que vous avez mise en surbrillance dans votre script et qui, selon vous, présente un problème. Lorsqu'un script est mis en pause, il affiche la valeur de chaque variable à ce moment précis, 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 la ligne à laquelle vous souhaitez ajouter le point d'arrêt. À 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 Debug (Déboguer) en haut de l'éditeur.

Avant d'exécuter la ligne contenant le point d'arrêt, le script se met en pause et affiche une table d'informations de débogage. Vous pouvez utiliser cette table pour inspecter des données telles que les valeurs des paramètres et les informations stockées dans des objets.

Pour contrôler l'exécution du script, en haut du panneau "Debugger" (Débogueur), utilisez les boutons "Step in" (Entrer), "Step over" (Passer) et "Step out" (Sortir). Ils vous permettent d'exécuter le script une ligne à la fois et d'inspecter l'évolution des valeurs au fil du temps.

Problèmes liés à l'utilisation de plusieurs comptes Google

Si vous êtes connecté à plusieurs comptes Google en même temps, vous pouvez rencontrer des difficultés pour accéder à vos modules complémentaires et à vos applications Web. La connexion multicompte ou la connexion à plusieurs comptes Google à la fois 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 le compte avec lequel vous souhaitez continuer.

  • Si vous ouvrez une application Web ou un module complémentaire et que vous rencontrez des problèmes de connexion multicompte, essayez l'une des solutions suivantes:

    • Déconnectez-vous de tous vos comptes Google, puis connectez-vous uniquement à celui qui contient le module complémentaire ou l'application Web auxquels vous souhaitez accéder.
    • Ouvrez une fenêtre de navigation privée dans Google Chrome (ou une fenêtre de navigation privée équivalente), puis connectez-vous au compte Google contenant le module complémentaire ou l'application Web auquel vous souhaitez accéder.

Obtenir de l'aide

Le débogage d'un problème à l'aide des outils et techniques énumérés ci-dessus peut résoudre de nombreux problèmes, mais il est possible que vous rencontriez d'autres problèmes nécessitant une aide supplémentaire. Consultez notre page d'assistance pour savoir où poser des questions et signaler des bugs.