Google Apps Script exige l'autorisation de l'utilisateur pour accéder aux données privées des services Google intégrés ou des services Google avancés.
Fonctionnement de l'autorisation pour les services Google
Lorsqu'un script nécessite d'accéder aux services Google, il suit le processus général suivant :
- Détection : Apps Script analyse le script pour identifier les services qu'il utilise (par exemple,
SpreadsheetAppouGmailApp). - Détermination du champ d'application : en fonction de l'analyse, Apps Script identifie un ensemble de scopes OAuth nécessaires à l'exécution du script.
- Vérification de l'autorisation : lorsque le script est exécuté, il vérifie si l'utilisateur a déjà autorisé ces niveaux d'accès.
- Invite utilisateur : si l'autorisation est manquante, une boîte de dialogue s'affiche pour demander à l'utilisateur d'accorder l'autorisation.
- Exécution : une fois le script autorisé, il peut accéder aux données demandées pour cet utilisateur.
Autorisations et types de scripts
L'identité de l'utilisateur avec laquelle un script s'exécute (et donc les données auxquelles il peut accéder) varie en fonction du scénario dans lequel le script est exécuté, comme indiqué dans le tableau suivant.
| Type de script | Le script s'exécute en tant que… |
|---|---|
| Application autonome, Module complémentaire Google Workspace ou lié à Google Docs, Google Sheets, Google Slides ou Google Forms | Utilisateur au clavier |
| Fonction personnalisée dans une feuille de calcul | Utilisateur anonyme ; toutefois, les limites de quota sont comptabilisées pour l'utilisateur au clavier. |
| Application Web ou gadget Google Sites | Utilisateur au clavier ou propriétaire du script, selon les options sélectionnées lors du déploiement de l'application |
| Déclencheur installable | Utilisateur ayant créé le déclencheur |
Accorder des droits d'accès
Apps Script détermine automatiquement les niveaux d'autorisation (comme l'accès à vos fichiers Sheets ou à Gmail) en analysant le code. Le code mis en commentaire peut toujours générer une demande d'autorisation. Si un script nécessite une autorisation, une boîte de dialogue d'autorisation s'affiche lorsqu'il est exécuté.
Les scripts que vous avez déjà autorisés demandent également une autorisation supplémentaire si une modification du code ajoute de nouveaux services. Les scripts ne peuvent pas demander d'autorisation si vous y accédez en tant qu'application Web s'exécutant sous l'identité utilisateur du propriétaire du script.
Révoquer les droits d'accès
Pour révoquer l'accès d'un script à vos données, procédez comme suit :
- Accédez à la section "Sécurité" de votre compte Google.
- Sous Vos connexions à des applis et services tiers, cliquez sur Voir toutes les connexions.
- Sélectionnez le script ou l'application pour lesquels vous souhaitez révoquer l'accès.
- Cliquez sur Supprimer toutes les connexions que vous avez avec APP_NAME, puis sur Confirmer.
Limiter le champ d'application au document actuel
Si vous créez un module complémentaire ou un autre script qui utilise les services Spreadsheet, Document, Slides ou Forms, vous pouvez forcer la boîte de dialogue d'autorisation à ne demander l'accès qu'aux fichiers dans lesquels le module complémentaire ou le script sont utilisés, plutôt qu'à toutes les feuilles de calcul, tous les documents ou tous les formulaires d'un utilisateur. Pour ce faire, incluez l'annotation JSDoc suivante dans un commentaire au niveau du fichier :
/**
* @OnlyCurrentDoc
*/
Une annotation opposée, @NotOnlyCurrentDoc, est disponible si votre script inclut une bibliothèque qui déclare @OnlyCurrentDoc, mais que le script principal nécessite en fait d'accéder à plus que le fichier actuel.
Cycle de vie de l'autorisation pour les modules complémentaires
Les modules complémentaires pour Sheets, Docs, Slides et Forms suivent généralement le même modèle d'autorisation que les scripts associés à un document. Toutefois, dans certaines circonstances, leurs fonctions onOpen(e) et onEdit(e) s'exécutent en mode sans autorisation, ce qui présente quelques complications supplémentaires. Pour en savoir plus, consultez le guide sur le cycle de vie de l'autorisation des modules complémentaires.
Limites d'utilisateurs pour les applications OAuth
Les applications qui utilisent OAuth pour accéder aux données utilisateur Google, y compris les projets Apps Script, sont soumises à des limites d'autorisation. Pour en savoir plus, consultez Limites d'utilisateurs pour les applications OAuth.
Comportement de la réauthentification avec Apps Script
Apps Script n'applique pas la fréquence de réauthentification configurée dans les paramètres des services Google Cloud. En effet, Apps Script peut s'exécuter automatiquement à l'aide de déclencheurs, qui fonctionnent sans interaction directe de l'utilisateur. Ces exécutions automatiques ne déclenchent pas les invites de réauthentification. Votre application Apps Script ne vous demande pas automatiquement de vous réauthentifier après la période spécifiée (par exemple, 12 heures).
Définir des niveaux d'accès explicites dans le fichier manifeste
Apps Script détermine automatiquement les niveaux d'accès requis en analysant le code pour les appels de fonction. Si vous avez besoin de plus de contrôle, vous pouvez définir explicitement les champs d'application dans le fichier manifeste du projet (appsscript.json). Nous vous recommandons de le faire pour les scripts publiés afin de vous assurer que vous utilisez les autorisations minimales requises.
Pour obtenir des instructions, consultez Définir des niveaux d'accès explicites.
Dépannage
- Erreur "Autorisation requise" lors de l'exécution d'un déclencheur : les déclencheurs doivent être autorisés par l'utilisateur qui les a créés. Si vous ajoutez du code nécessitant de nouvelles autorisations, vous devez exécuter manuellement une fonction dans l'éditeur de script une fois pour déclencher la boîte de dialogue d'autorisation.
- Les autorisations ne sont pas mises à jour : si vous avez modifié votre code, mais que la boîte de dialogue d'autorisation ne reflète pas les modifications, essayez d'enregistrer le projet et d'actualiser l'éditeur. Si vous utilisez des niveaux d'accès explicites dans le fichier manifeste, assurez-vous d'avoir ajouté le nouveau niveau d'accès au tableau
oauthScopes. - Avertissement "Cette application est bloquée" ou avertissement pour application non validée : ce message s'affiche si votre script utilise des niveaux d'accès sensibles ou restreints et n'a pas été validé par Google. Consultez Validation du client OAuth.