Champs d'application

Les utilisateurs doivent autoriser les modules complémentaires et autres applications qui accèdent à leurs données ou agissent en leur nom. Lorsqu'un utilisateur exécute un module complémentaire pour la première fois, l'interface utilisateur du module complémentaire affiche une invite d'autorisation pour démarrer le flux d'autorisation.

Au cours de ce processus, l'invite indique à l'utilisateur ce que l'application souhaite faire avec l'autorisation. Par exemple, un module complémentaire peut demander l'autorisation de lire les e-mails d'un utilisateur ou de créer des événements dans son agenda. Le projet de script du module complémentaire définit ces autorisations individuelles en tant que scopes OAuth.

Vous déclarez les niveaux d'accès dans votre fichier manifeste à l'aide de chaînes d'URL. Pendant le flux d'autorisation, Apps Script présente à l'utilisateur une description du champ d'application lisible par un humain. Par exemple, votre module complémentaire Google Workspace peut utiliser le champ d'application "Lire le message actuel", qui est écrit dans votre fichier manifeste sous la forme https://www.googleapis.com/auth/gmail.addons.current.message.readonly. Lors du flux d'autorisation, un module complémentaire avec ce champ d'application demande à l'utilisateur d'autoriser le module complémentaire à consulter ses e-mails lorsque le module complémentaire est en cours d'exécution.

Les niveaux d'accès utilisés par Apps Script pour ses différents services chevauchent ceux utilisés par l'API associée. Par exemple, le service Agenda d'Apps Script utilise de nombreux niveaux d'accès identiques à ceux de l'API Calendar. Vous pouvez rechercher les niveaux d'accès requis par les méthodes de service Apps Script spécifiques dans la documentation de référence d'Apps Script.

Afficher les champs d'application

Pour afficher les champs d'application actuellement requis par votre projet de script, procédez comme suit :

  1. Ouvrez le projet de script.
  2. Sur la gauche, cliquez sur Vue d'ensemble .
  3. Affichez les habilitations sous "Project OAuth Scopes" (Habilitations OAuth du projet).

Vous pouvez également afficher les portées actuelles du projet de script dans le fichier manifeste du projet, sous le champ oauthScopes, mais uniquement si vous avez défini ces portées explicitement.

Définir des niveaux d'accès explicites

Apps Script détermine automatiquement les autorisations dont un script a besoin en analysant son code pour identifier les appels de fonction qui les requièrent. Pour la plupart des scripts, cela suffit et vous fait gagner du temps, mais pour les modules complémentaires publiés, vous devez exercer un contrôle plus direct sur les niveaux d'accès.

Par exemple, Apps Script peut attribuer par défaut au projet de script d'un module complémentaire le champ d'application très permissif https://mail.google.com. Lorsqu'un utilisateur autorise un projet de script avec ce champ d'application, le projet obtient un accès complet au compte Gmail de l'utilisateur. Pour les modules complémentaires publiés, vous devez remplacer ce champ d'application par un ensemble plus limité qui couvre les besoins du module complémentaire, et rien de plus.

Vous pouvez définir explicitement les autorisations utilisées par votre projet de script en modifiant son fichier manifeste. Le champ de fichier manifeste oauthScopes est un tableau de tous les champs d'application utilisés par le module complémentaire. Pour définir les niveaux d'accès de votre projet, procédez comme suit :

  1. Affichez les niveaux d'accès utilisés par votre module complémentaire. Déterminez les modifications à apporter, par exemple en utilisant un champ d'application plus étroit.
  2. Ouvrez le fichier manifeste de votre module complémentaire.
  3. Recherchez le champ de premier niveau intitulé oauthScopes. Si elle n'est pas présente, vous pouvez l'ajouter.
  4. Le champ oauthScopes spécifie un tableau de chaînes. Pour définir les niveaux d'accès utilisés par votre projet, remplacez le contenu de ce tableau par les niveaux d'accès que vous souhaitez utiliser. Par exemple, pour un module complémentaire Google Workspace qui étend Gmail, vous pouvez avoir les éléments suivants :

     {
       ...
       "oauthScopes": [
         "https://www.googleapis.com/auth/gmail.addons.current.message.metadata",
         "https://www.googleapis.com/auth/userinfo.email"
       ],
       ...
     }
    
  5. Enregistrez les modifications apportées au fichier manifeste.

Validation OAuth

L'utilisation de certains niveaux d'accès OAuth sensibles peut nécessiter que votre module complémentaire passe par la validation du client OAuth avant de pouvoir être publié. Pour en savoir plus, consultez les guides suivants :

Niveaux d'accès restreints

Certains niveaux d'accès sont restreints et soumis à des règles supplémentaires qui permettent de protéger les données utilisateur. Si vous prévoyez de publier un module complémentaire Gmail ou de l'éditeur qui utilise un ou plusieurs champs d'application restreints, il doit respecter toutes les restrictions spécifiées avant de pouvoir être publié.

Consultez la liste complète des champs d'application restreints avant de tenter de publier. Si votre module complémentaire en utilise, vous devez respecter les exigences supplémentaires pour les champs d'application d'API spécifiques avant de le publier.

L'extension Google Workspace Developer Tools pour Visual Studio Code fournit des informations de diagnostic pour tous les champs d'application, y compris la description du champ d'application et indique s'il est sensible ou limité.

Choisir des habilitations pour les modules complémentaires Google Workspace

Les sections suivantes fournissent des niveaux d'accès couramment utilisés pour les modules complémentaires Google Workspace.

Niveaux d'accès de l'éditeur

Les niveaux d'accès suivants, fréquemment utilisés pour les modules complémentaires Google Workspace, étendent Google Docs, Google Sheets et Google Slides.

Champ d'application
Accès actuel aux fichiers Docs https://www.googleapis.com/auth/documents.currentonly

Obligatoire si le module complémentaire accède à l'API Google Apps Script Docs. Accorde un accès temporaire au contenu du document ouvert.

Accès actuel aux fichiers Sheets https://www.googleapis.com/auth/spreadsheets.currentonly

Obligatoire si le module complémentaire accède à l'API Apps Script Sheets. Accorde un accès temporaire au contenu de la feuille de calcul ouverte.

Accès actuel aux fichiers Slides https://www.googleapis.com/auth/presentations.currentonly

Obligatoire si le module complémentaire accède à l'API Apps Script Slides. Accorde un accès temporaire au contenu de la présentation ouverte.

Accès par fichier https://www.googleapis.com/auth/drive.file

Obligatoire pour que le module complémentaire utilise onFileScopeGrantedTrigger et si le module complémentaire accède aux API Docs, Sheets, Slides ou Drive. Accorde un accès par fichier aux fichiers créés ou ouverts par l'application à l'aide du service Google Drive avancé Apps Script. Cela n'autorise pas les actions similaires utilisant le service Drive de base. L'autorisation d'accès aux fichiers est accordée fichier par fichier et est révoquée lorsque l'utilisateur supprime l'autorisation de l'application.

Gmail

Des niveaux d'accès ont été créés spécifiquement pour les modules complémentaires Google Workspace afin de protéger les données Gmail des utilisateurs. Ajoutez explicitement ces champs d'application au fichier manifeste de votre module complémentaire, ainsi que tous les autres champs d'application requis.

Le tableau suivant répertorie les niveaux d'accès fréquemment utilisés pour les modules complémentaires Google Workspace qui étendent Gmail. Si votre module complémentaire étend Gmail, vous devez ajouter tous les champs d'application marqués Required (Obligatoire) au fichier manifeste de votre module complémentaire Google Workspace.

Remplacez le champ d'application étendu https://mail.google.com par un ensemble de champs d'application plus restreint qui autorisent les interactions dont votre module complémentaire a besoin.

Champ d'application
Créer des suggestions https://www.googleapis.com/auth/gmail.addons.current.action.compose

Obligatoire si le module complémentaire utilise des déclencheurs d'action de rédaction. Permet au module complémentaire de créer temporairement des brouillons de messages et de réponses. Pour en savoir plus, consultez Rédiger des brouillons de messages. Ce champ d'application est souvent utilisé avec les [actions de rédaction] (/workspace/add-ons/gmail/extending-compose-ui). Nécessite un jeton d'accès.

Lire les métadonnées des messages ouverts https://www.googleapis.com/auth/gmail.addons.current.message.metadata

Accorde un accès temporaire aux métadonnées du message ouvert (comme l'objet ou les destinataires). Ne permet pas de lire le contenu des messages et nécessite un jeton d'accès.

Obligatoire si le module complémentaire utilise des métadonnées dans les déclencheurs d'actions de rédaction. Pour les actions de composition, ce champ d'application est requis si un déclencheur de composition a besoin d'accéder aux métadonnées. En pratique, ce champ d'application permet à un déclencheur de composition d'accéder aux listes de destinataires (à, cc et cci) d'un brouillon d'e-mail de réponse.

Lire le contenu des messages ouverts https://www.googleapis.com/auth/gmail.addons.current.message.action

Accorde l'accès au contenu du message ouvert lors de l'interaction de l'utilisateur, par exemple lorsqu'il sélectionne un élément de menu de module complémentaire. Nécessite un jeton d'accès.

Lire le contenu d'un fil de discussion ouvert https://www.googleapis.com/auth/gmail.addons.current.message.readonly

Accorde un accès temporaire aux métadonnées et au contenu du message ouvert. Accorde également l'accès au contenu des autres messages du fil de discussion ouvert. Nécessite un jeton d'accès.

lire le contenu et les métadonnées de n'importe quel message ; https://www.googleapis.com/auth/gmail.readonly

lire les métadonnées et le contenu des e-mails, y compris les messages ouverts ; Obligatoire si vous devez lire des informations sur d'autres messages, par exemple lorsque vous effectuez une requête de recherche ou lisez un fil de discussion complet.

Niveaux d'accès Google Agenda

Le tableau suivant répertorie les portées fréquemment utilisées pour les modules complémentaires Google Workspace qui étendent Google Agenda.

Champ d'application
Accéder aux métadonnées des événements https://www.googleapis.com/auth/calendar.addons.execute

Obligatoire si le module complémentaire accède aux métadonnées des événements d'agenda. Permet au module complémentaire d'accéder aux métadonnées des événements.

Lire les données d'événements générées par les utilisateurs https://www.googleapis.com/auth/calendar.addons.current.event.read

Obligatoire si le module complémentaire doit lire les données d'événements générées par l'utilisateur. Permet au module complémentaire d'accéder aux données d'événements générées par l'utilisateur. Ces données ne sont disponibles que si le champ de fichier manifeste addOns.calendar.eventAccess est défini sur READ ou READ_WRITE.

Écrire des données d'événements générés par les utilisateurs https://www.googleapis.com/auth/calendar.addons.current.event.write

Obligatoire si le module complémentaire doit écrire des données d'événements générées par l'utilisateur. Permet au module complémentaire de modifier les données d'événements générées par les utilisateurs. Ces données ne sont disponibles que si le champ de fichier manifeste addOns.calendar.eventAccess est défini sur WRITE ou READ_WRITE.

Champs d'application Google Chat

Pour appeler l'API Google Chat, authentifiez-vous en tant qu'utilisateur Google Chat ou en tant qu'application Google Chat. Chaque type d'authentification nécessite des habilitations différentes, et toutes les méthodes de l'API Chat ne sont pas compatibles avec l'authentification d'application.

Pour en savoir plus sur les types d'authentification et les habilitations Chat, consultez la présentation de l'authentification et de l'autorisation de l'API Chat.

Le tableau suivant présente les méthodes et les niveaux d'accès de l'API Chat fréquemment utilisés, en fonction des types d'authentification acceptés :

Méthode Authentification des utilisateurs prise en charge L'authentification par l'application est prise en charge. Niveaux d'accès des autorisations acceptés
Envoyer un message Avec l'authentification des utilisateurs :
  • chat.messages.create
  • chat.messages
  • chat.import
Avec l'authentification de l'application :
  • chat.bot
Créer un espace Avec l'authentification des utilisateurs :
  • chat.spaces.create
  • chat.spaces
  • chat.import
Avec l'authentification des applications et l'approbation de l'administrateur (disponibles dans la Preview développeur) :
  • chat.app.spaces.create
  • chat.app.spaces
Créer un espace et y ajouter des membres Avec l'authentification des utilisateurs :
  • chat.spaces.create
  • chat.spaces
Ajouter un utilisateur à un espace Avec l'authentification des utilisateurs :
  • chat.memberships
  • chat.memberships.app
  • chat.import
Avec l'authentification des applications et l'approbation de l'administrateur (disponibles dans la Preview développeur) :
  • chat.app.memberships
Lister les activités ou les événements d'un espace Chat Avec l'authentification des utilisateurs, vous devez utiliser un champ d'application pour chaque type d'événement inclus dans la requête :
  • Pour les événements concernant les messages :
    • chat.messages
    • chat.messages.readonly
  • Pour les événements concernant les réactions :
    • chat.messages.reactions
    • chat.messages.reactions.readonly
    • chat.messages
    • chat.messages.readonly
  • Pour les événements concernant les souscriptions :
    • chat.memberships
    • chat.memberships.readonly
  • Pour les événements concernant l'espace :
    • chat.spaces
    • chat.spaces.readonly

Champs d'application Google Drive

Le tableau suivant liste les portées fréquemment utilisées pour les modules complémentaires Google Workspace qui étendent Google Drive.

Champ d'application
Lire les métadonnées de l'élément sélectionné https://www.googleapis.com/auth/drive.addons.metadata.readonly

Obligatoire si le module complémentaire implémente une interface contextuelle déclenchée lorsque l'utilisateur sélectionne des éléments dans Drive. Permet au module complémentaire de lire des métadonnées limitées sur les éléments qu'un utilisateur a sélectionnés dans Google Drive. Les métadonnées sont limitées à l'ID, au titre, au type MIME et à l'URL de l'icône de l'élément, ainsi qu'à l'indication de savoir si le module complémentaire est autorisé à accéder à l'élément.

Accès par fichier https://www.googleapis.com/auth/drive.file

Recommandé si le module complémentaire doit accéder à des fichiers Drive individuels. Accorde un accès par fichier aux fichiers créés ou ouverts par l'application à l'aide du service Drive avancé Apps Script. Cela n'autorise pas les actions similaires utilisant le service Drive de base. L'autorisation d'accès aux fichiers est accordée fichier par fichier et est révoquée lorsque l'utilisateur désautorise l'application. Consultez l' exemple de demande d'accès aux fichiers sélectionnés.

Jetons d'accès

Pour protéger les données utilisateur, les niveaux d'accès Gmail utilisés dans les modules complémentaires Google Workspace accordent un accès temporaire aux données utilisateur. Pour activer l'accès temporaire, appelez GmailApp.setCurrentMessageAccessToken à l'aide d'un jeton d'accès provenant d'un objet d'événement d'action.

Le jeton d'accès qui permet les champs d'application Gmail n'est pas le même que celui renvoyé par ScriptApp.getOAuthToken. Utilisez le jeton fourni dans l'objet d'événement d'action.

L'exemple suivant montre comment définir un jeton d'accès pour autoriser l'accès aux métadonnées d'un message. La seule portée nécessaire pour cet exemple est https://www.googleapis.com/auth/gmail.addons.current.message.metadata.

function readSender(e) {
  var accessToken = e.gmail.accessToken;
  var messageId = e.gmail.messageId;

  // The following function enables short-lived access to the current
  // message in Gmail. Access to other Gmail messages or data isn't
  // permitted.
  GmailApp.setCurrentMessageAccessToken(accessToken);
  var mailMessage = GmailApp.getMessageById(messageId);
  return mailMessage.getFrom();
}

Autres niveaux d'accès Google Workspace

Votre module complémentaire peut nécessiter des autorisations supplémentaires s'il utilise d'autres services Google Workspace ou Apps Script. Dans la plupart des cas, Apps Script détecte ces autorisations et met à jour le fichier manifeste automatiquement. Lorsque vous modifiez la liste des portées de votre fichier manifeste, ne supprimez aucune portée, sauf si vous la remplacez par une alternative plus étroite.

Le tableau suivant présente les niveaux d'accès souvent utilisés par les modules complémentaires Google Workspace :

Champ d'application
Lire l'adresse e-mail de l'utilisateur https://www.googleapis.com/auth/userinfo.email

Autorise le projet à lire l'adresse e-mail de l'utilisateur actuel.

Autoriser les appels vers des services externes https://www.googleapis.com/auth/script.external_request

Permet au projet d'effectuer des requêtes UrlFetch. Cette étape est également obligatoire si le projet utilise la bibliothèque OAuth2 pour Apps Script.

Lire les paramètres régionaux et le fuseau horaire de l'utilisateur https://www.googleapis.com/auth/script.locale

Permet au projet de connaître les paramètres régionaux et le fuseau horaire de l'utilisateur actuel. Pour en savoir plus, consultez Accéder aux paramètres régionaux et au fuseau horaire de l'utilisateur.

Créer des déclencheurs https://www.googleapis.com/auth/script.scriptapp

Permet au projet de créer des déclencheurs.

Prévisualiser les liens tiers https://www.googleapis.com/auth/workspace.linkpreview

Obligatoire si le module complémentaire prévisualise des liens provenant d'un service tiers. Permet au projet de voir un lien dans une application Google Workspace pendant que l'utilisateur interagit avec celui-ci. Pour en savoir plus, consultez Prévisualiser un lien avec les chips intelligents.

Créer des ressources tierces https://www.googleapis.com/auth/workspace.linkcreate

Obligatoire si le module complémentaire crée des ressources dans un service tiers. Permet au projet de lire les informations que les utilisateurs envoient dans le formulaire de création de ressources et d'insérer un lien vers la ressource dans une application Google Workspace. Pour en savoir plus, consultez Créer des ressources tierces à partir du menu @.