Service de chat avancé

Le service Advanced Chat vous permet d'utiliser l'API Google Chat dans Apps Script. Cette API permet aux scripts de rechercher, créer et modifier des espaces Chat, d'ajouter des membres à des espaces ou d'en supprimer, et de lire ou publier des messages avec du texte, des cartes, des pièces jointes et des réactions.

Prérequis

Reference

Pour plus d'informations sur ce service, consultez la documentation de référence de l'API Chat. Comme tous les services avancés d'Apps Script, le service Chat utilise les mêmes objets, méthodes et paramètres que l'API publique.

Exemple de code

Ces exemples vous montrent comment effectuer des actions courantes de l'API Google Chat à l'aide du service avancé.

Publier un message contenant des identifiants utilisateur

L'exemple suivant montre comment publier un message dans un espace Chat au nom de l'utilisateur.

  1. Ajoutez le champ d'application des autorisations chat.messages.create au fichier appsscript.json du projet Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.messages.create"
    ]
    
  2. Ajoutez une fonction comme celle-ci au code du projet Apps Script:

    advanced/chat.gs
    /**
     * Posts a new message to the specified space on behalf of the user.
     * @param {string} spaceName The resource name of the space.
     */
    function postMessageWithUserCredentials(spaceName) {
      try {
        const message = {'text': 'Hello world!'};
        Chat.Spaces.Messages.create(message, spaceName);
      } catch (err) {
        // TODO (developer) - Handle exception
        console.log('Failed to create message with error %s', err.message);
      }
    }

Publier un message contenant les identifiants de l'application

L'exemple suivant montre comment publier un message dans un espace Chat pour le compte de l'application. L'utilisation du service Chat avancé avec un compte de service ne vous oblige pas à spécifier des champs d'application d'autorisation dans appsscript.json. Pour en savoir plus sur l'authentification avec des comptes de service, consultez S'authentifier en tant qu'application Google Chat.

advanced/chat.gs
/**
 * Posts a new message to the specified space on behalf of the app.
 * @param {string} spaceName The resource name of the space.
 */
function postMessageWithAppCredentials(spaceName) {
  try {
    // See https://developers.google.com/chat/api/guides/auth/service-accounts
    // for details on how to obtain a service account OAuth token.
    const appToken = getToken_();
    const message = {'text': 'Hello world!'};
    Chat.Spaces.Messages.create(
        message,
        spaceName,
        {},
        // Authenticate with the service account token.
        {'Authorization': 'Bearer ' + appToken});
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log('Failed to create message with error %s', err.message);
  }
}

Obtenir un espace

L'exemple suivant montre comment obtenir des informations sur un espace Chat.

  1. Ajoutez le champ d'application des autorisations chat.spaces.readonly au fichier appsscript.json du projet Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.spaces.readonly"
    ]
    
  2. Ajoutez une fonction comme celle-ci au code du projet Apps Script:

    advanced/chat.gs
    /**
     * Gets information about a Chat space.
     * @param {string} spaceName The resource name of the space.
     */
    function getSpace(spaceName) {
      try {
        const space = Chat.Spaces.get(spaceName);
        console.log('Space display name: %s', space.displayName);
        console.log('Space type: %s', space.spaceType);
      } catch (err) {
        // TODO (developer) - Handle exception
        console.log('Failed to get space with error %s', err.message);
      }
    }

Créer un espace

L'exemple suivant montre comment créer un espace Chat.

  1. Ajoutez le champ d'application des autorisations chat.spaces.create au fichier appsscript.json du projet Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.spaces.create"
    ]
    
  2. Ajoutez une fonction comme celle-ci au code du projet Apps Script:

    advanced/chat.gs
    /**
     * Creates a new Chat space.
     */
    function createSpace() {
      try {
        const space = {'displayName': 'New Space', 'spaceType': 'SPACE'};
        Chat.Spaces.create(space);
      } catch (err) {
        // TODO (developer) - Handle exception
        console.log('Failed to create space with error %s', err.message);
      }
    }

Répertorier les adhésions

L'exemple suivant montre comment répertorier tous les membres d'un espace Chat.

  1. Ajoutez le champ d'application des autorisations chat.memberships.readonly au fichier appsscript.json du projet Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.memberships.readonly"
    ]
    
  2. Ajoutez une fonction comme celle-ci au code du projet Apps Script:

    advanced/chat.gs
    /**
     * Lists all the members of a Chat space.
     * @param {string} spaceName The resource name of the space.
     */
    function listMemberships(spaceName) {
      let response;
      let pageToken = null;
      try {
        do {
          response = Chat.Spaces.Members.list(spaceName, {
            pageSize: 10,
            pageToken: pageToken
          });
          if (!response.memberships || response.memberships.length === 0) {
            pageToken = response.nextPageToken;
            continue;
          }
          response.memberships.forEach((membership) => console.log(
              'Member resource name: %s (type: %s)',
              membership.name,
              membership.member.type));
          pageToken = response.nextPageToken;
        } while (pageToken);
      } catch (err) {
        // TODO (developer) - Handle exception
        console.log('Failed with error %s', err.message);
      }
    }

Dépannage

Si Error 400: invalid_scope s'affiche avec 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é Chat, vous devez ajouter manuellement les champs d'application des autorisations 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"
]

Limites et considérations

Le service de chat avancé n'est pas compatible avec:

Pour télécharger une pièce jointe de message ou appeler une méthode d'aperçu pour les développeurs, utilisez plutôt UrlFetchApp.