Même le développeur le plus expérimenté écrit rarement du 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 à trouver, 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 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 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 causes peuvent être à l'origine de 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 nouveau bug, effectuez une recherche pour voir si d'autres utilisateurs l'ont déjà signalé.
Vous devez disposer d'une autorisation 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 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 s'exécuter et provoque cette erreur, vous pouvez le supprimer en procédant comme suit:
- Sur la 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 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 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 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 à l'échelle du domaine et 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 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'utiliserSession.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 de ces méthodes.
- Si vous êtes un Google Workspace 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 à remplacer la dépendance de 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'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 > Ouvrir dans un nouvel onglet. La bibliothèque manquante affiche 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 la section Supprimer une bibliothèque.
Plus
- 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 OAuth 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 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 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 n'entraînent pas l'affichage d'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'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 quelles actions votre script a effectuées.
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 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 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 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:
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 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é à plusieurs comptes Google en même temps, vous pouvez rencontrer des difficultés pour 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 à choisir le compte 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, 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 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 des questions et signaler des bugs.