Dépannage

Même le développeur le plus expérimenté écrit rarement du code correctement du premier coup, 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 à 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és de cette manière: les erreurs de syntaxe et les erreurs d'exécution.

Erreurs de syntaxe

Les erreurs de syntaxe sont causées par l'écriture d'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('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. Lorsque vous essayez d'enregistrer le script, l'erreur suivante s'affiche:

Il manque un ) 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. Par conséquent, 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 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 lorsque nous appelons MailApp.sendEmail. Comme il ne s'agit pas d'une adresse e-mail valide, l'erreur suivante s'affiche lors de l'exécution du script:

Adresse e-mail incorrecte: john (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 de leurs causes.

Service appelé trop de fois: <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 personnel, de domaine et Premier, et peuvent être modifiés à tout moment sans annonce préalable 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 momentanément indisponible. Patientez quelques instants, puis réessayez d'exécuter le script.
  • Votre script comporte 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.
  • Un bug dans Google Apps Script est à l'origine de cette erreur. Pour savoir comment rechercher et envoyer des rapports de bug, consultez la section Bugs. Avant de signaler un bug, effectuez une recherche pour voir s'il n'a pas déjà été signalé.

Vous devez disposer d'une autorisation 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 script ou à partir d'un élément de menu personnalisé, une boîte de dialogue d'autorisation s'affiche à 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 (par exemple, si l'erreur se produit pour un module complémentaire que vous utilisez), vous pouvez généralement autoriser le script en réutilisant le module complémentaire. Si un déclencheur continue de se déclencher et de générer 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 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 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, 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(). Il 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, en fonction du mode d'autorisation sous lequel le script s'exécute. 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 plutôt d'utiliser 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 qui rencontre pour la première fois cet avertissement à partir d'un déclencheur installable, assurez-vous que le déclencheur s'exécute en tant qu'utilisateur de votre organisation.

La bibliothèque est 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 listée comme 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 depuis votre compte. Veillez à mettre à jour la dépendance dans votre script d'origine avec 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'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 Modifier un déploiement avec version.
  • 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 affiche 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 que votre script utilise 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 la section Supprimer une bibliothèque.

Erreur 400: invalid_scope lors de l'appel de l'API Google Chat avec le service avancé

Si vous rencontrez Error 400: invalid_scope avec le message d'erreur Some requested scopes cannot be shown, cela signifie que vous n'avez pas spécifié de champs d'application d'autorisation dans le fichier appsscript.json du projet Apps Script. Dans la plupart des cas, Apps Script détermine automatiquement les portées dont un script a besoin, mais lorsque vous utilisez le service avancé Chat, vous devez ajouter manuellement les portées d'autorisation utilisées 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'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 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 génèrent pas un message d'erreur. Il peut y avoir une erreur plus subtile, où 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 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 pendant l'exécution d'un projet de script. Google Apps Script propose deux méthodes de journalisation des informations: le service de journalisation Cloud 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 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'erreur 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 quelles actions votre script a effectuées.

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 des services Google Workspace spécifiques (tels que Gmail ou Drive) rencontrent des problèmes temporaires pouvant entraîner des pannes de service. Dans ce cas, les projets Apps Script qui interagissent avec ces services peuvent ne pas fonctionner comme prévu.

Pour vérifier si un service Google Workspace est en panne, consultez le Google Workspace Status Dashboard. Si une panne est actuellement en cours, vous pouvez attendre qu'elle soit résolue ou obtenir de l'aide supplémentaire dans le Centre d'aide Google Workspace ou dans la documentation sur les problèmes connus dans 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, c'est-à-dire une ligne que vous avez mise en surbrillance dans votre script et qui, selon vous, peut présenter un problème. Lorsqu'un script est mis 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 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 auquel 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 que le script n'exécute la ligne avec le point d'arrêt, il s'arrête 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 des objets.

Pour contrôler l'exécution du script, utilisez les boutons "Étape", "Ignorer" et "Sortir" en haut du panneau du débogueur. Ils vous permettent d'exécuter le script une ligne à la fois et d'examiner l'évolution des valeurs au fil du temps.

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

Si vous êtes connecté simultanément à plusieurs comptes Google, vous risquez de rencontrer des difficultés pour accéder à 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 avec lequel vous souhaitez continuer.

  • 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 que vous souhaitez utiliser.
    • 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 associé au module complémentaire ou à l'application Web que vous souhaitez utiliser.

Obtenir de l'aide

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