Dépannage

Même le développeur le plus expérimenté écrit rarement du code correctement au premier essai, ce qui fait du dépannage une partie importante du processus de développement. Dans cette section, nous aborderons quelques 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. Il existe deux types d'erreurs de base affichés de cette manière: les erreurs de syntaxe et les erreurs d'exécution.

Erreurs de syntaxe

Les erreurs de syntaxe sont dues à l'é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);
}

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

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

Ces types d'erreurs sont généralement simples à dépanner, 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, ce qui 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 lorsque vous appelez 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)

Ce qui rend ces erreurs plus difficiles à résoudre, c'est que souvent les données que vous transmettez à une fonction ne sont pas écrites dans le code, mais extraites d'une feuille de calcul, d'un formulaire ou d'une autre source de données externe. L'utilisation des techniques de débogage ci-dessous peut vous aider à identifier la cause de ces erreurs.

Erreurs fréquentes

Vous trouverez ci-dessous la liste des erreurs courantes et leurs causes.

Service invoqué à de trop nombreuses reprises: <action name>

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 au cours d'une même journée. Les quotas sont définis à différents niveaux pour les comptes personnels, de domaine et 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 d'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 système ou un serveur Google est temporairement indisponible. Attendez quelques instants, puis réessayez d'exécuter le script.
  • Votre script comporte une erreur sans message d'erreur correspondant. Essayez de déboguer votre script et voyez si vous pouvez isoler le problème.
  • Cette erreur est due à un bug dans Google Apps Script. Pour découvrir comment rechercher et remplir des rapports de bugs, consultez la section Bugs. Avant de signaler un nouveau bug, recherchez 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 de l'autorisation nécessaire 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 s'afficher 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 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 fréquemment causée par des déclencheurs qui se déclenchent avant que l'utilisateur ne les autorise. 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 l'utilisant à nouveau. Si un déclencheur continue de s'activer et provoque cette erreur, vous pouvez supprimer vos déclencheurs en procédant comme suit:

  1. À 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 problématiques de modules complémentaires 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 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 Advanced Drive (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 est installée par l'administrateur pour tout ou partie des 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 le script ne peut pas accéder à l'identité et à l'adresse e-mail de l'utilisateur actif. 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 est exécuté. Le mode d'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 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 Google Workspace client que vous recevez récemment cet avertissement d'un déclencheur installable, assurez-vous que le déclencheur 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 elle est répertoriée en tant que dépendance pour votre script. La raison peut être que trop de personnes accèdent à la bibliothèque en même temps. Pour éviter cette erreur, essayez l'une des solutions suivantes:

  • Copiez le code de la bibliothèque et collez-le dans votre script, puis supprimez la dépendance de la bibliothèque.
  • Copiez le script de 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 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 introuvable

Ce message d'erreur indique l'un des éléments suivants:

  • 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 versions gérées.
  • La version d'une bibliothèque utilisée par le script a été supprimée. Pour vérifier 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 génère un message d'erreur. Une fois que vous avez trouvé la bibliothèque que vous devez mettre à jour, effectuez l'une des actions suivantes :
  • Le script d'une bibliothèque utilisée par votre script inclut une autre bibliothèque qui exploite 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 la section 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 lors de l'appel de l'API Google Chat avec le service avancé

Si Error 400: invalid_scope affiche 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 champs d'application dont un script a besoin. Toutefois, lorsque vous utilisez le service avancé de 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 champs d'application 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ébogage

Toutes les erreurs n'entraînent pas l'affichage d'un message d'erreur. Il se peut qu'une erreur plus subtile se produise lorsque le code est techniquement correct et peut s'exécuter, mais que les résultats ne correspondent pas à vos attentes. Voici quelques stratégies pour gérer ces 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 lors de l'exécution d'un projet de script. Google Apps Script propose deux méthodes de journalisation 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 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 la section Afficher les journaux Cloud et les rapports d'erreurs dans la console Google Cloud Platform.

Executions

Chaque fois que vous exécutez un script, Apps Script enregistre l'exécution d'un script, 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 rares, des services Google Workspace spécifiques (tels que Gmail ou Drive) rencontrent des problèmes temporaires susceptibles d'entraîner des interruptions de service. Dans ce cas, les projets Apps Script qui interagissent avec ces services risquent de ne pas fonctionner comme prévu.

Pour vérifier si le service Google Workspace est indisponible, consultez le Google Workspace Status Dashboard. En cas de panne, vous pouvez attendre qu'elle soit résolue ou obtenir de l'aide dans le Centre d'aide Google Workspace ou la documentation sur les 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. En mode débogage, un script se met en pause 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, peut présenter un problème. Lorsqu'un script se met en pause, il affiche la valeur de chaque variable à ce moment-là, ce qui vous permet d'inspecter le fonctionnement interne d'un script sans avoir à ajouter un grand nombre d'instructions de journalisation.

Ajouter un point d'arrêt

Pour ajouter un point d'arrêt, passez la souris sur le numéro de la 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 Debug (Déboguer) en haut de l'éditeur.

Avant que le script exécute la ligne avec le point d'arrêt, il met en pause et affiche un tableau contenant des 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 les objets.

Pour contrôler l'exécution du script, utilisez les boutons "Entrer", "Passer" et "Sortir" en haut du panneau "Debugger". Celles-ci 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 à plusieurs comptes Google

Si vous êtes connecté à plusieurs comptes Google en même temps, vous aurez peut-être des difficultés à accéder à vos modules complémentaires et à vos 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 à sélectionner 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 associé au module complémentaire ou à l'application Web auquel 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

Si vous déboguez un problème à l'aide des outils et techniques listés ci-dessus, vous pouvez résoudre de nombreux problèmes. Toutefois, vous pouvez être amené à résoudre certains d'entre eux nécessitant une aide supplémentaire. Consultez notre page d'assistance pour savoir où poser vos questions et signaler des bugs.