Service de chat avancé

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

Prérequis

Référence

Pour en savoir plus 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 avec 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'autorisation 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 avec des identifiants d'application

L'exemple suivant montre comment publier un message dans un espace Chat au nom de l'application. L'utilisation du service Chat avancé avec un compte de service ne nécessite pas de spécifier de champs d'autorisation dans appsscript.json. Pour en savoir plus sur l'authentification avec des comptes de service, consultez la section 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'autorisation 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'autorisation 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 abonnements

L'exemple suivant montre comment lister tous les membres d'un espace Chat.

  1. Ajoutez le champ d'autorisation 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);
      }
    }

Résoudre les problèmes

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"
]

Limites et considérations

Le service Chat avancé n'est pas compatible avec les éléments suivants:

Pour télécharger une pièce jointe de message ou appeler une méthode Preview développeur, utilisez plutôt UrlFetchApp.