Servizio chat avanzato

Il servizio Advanced Chat ti consente di utilizzare l'API Google Chat in Apps Script. Questa API consente agli script di trovare, creare e modificare gli spazi di Chat, aggiungere o rimuovere membri dagli spazi e leggere o pubblicare messaggi con testo, schede, allegati e reazioni.

Prerequisiti

Riferimento

Per saperne di più su questo servizio, consulta la documentazione di riferimento dell'API Chat. Come tutti i servizi avanzati in Apps Script, il servizio Chat utilizza gli stessi oggetti, metodi e parametri dell'API pubblica.

Codice di esempio

Questi esempi mostrano come eseguire azioni comuni dell'API Google Chat utilizzando il servizio avanzato.

Pubblicare un messaggio con le credenziali utente

L'esempio seguente mostra come pubblicare un messaggio in uno spazio Chat per conto dell'utente.

  1. Aggiungi l'ambito di autorizzazione chat.messages.create al file appsscript.json del progetto Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.messages.create"
    ]
    
  2. Aggiungi una funzione come questa al codice del progetto 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);
      }
    }

Pubblicare un messaggio con le credenziali dell'app

Il seguente esempio mostra come pubblicare un messaggio in uno spazio Chat per conto dell'app. L'utilizzo del servizio Chat avanzato con un service account non richiede la specifica degli ambiti di autorizzazione in appsscript.json. Per informazioni dettagliate sull'autenticazione con i service account, consulta Autenticarsi come app 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);
  }
}

Ottenere uno spazio

Il seguente esempio mostra come ottenere informazioni su uno spazio Chat.

  1. Aggiungi l'ambito di autorizzazione chat.spaces.readonly al file appsscript.json del progetto Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.spaces.readonly"
    ]
    
  2. Aggiungi una funzione come questa al codice del progetto 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);
      }
    }

Crea uno spazio

Il seguente esempio mostra come creare uno spazio di Chat.

  1. Aggiungi l'ambito di autorizzazione chat.spaces.create al file appsscript.json del progetto Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.spaces.create"
    ]
    
  2. Aggiungi una funzione come questa al codice del progetto 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);
      }
    }

Elenco appartenenze

L'esempio seguente mostra come elencare tutti i membri di uno spazio di Chat.

  1. Aggiungi l'ambito di autorizzazione chat.memberships.readonly al file appsscript.json del progetto Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.memberships.readonly"
    ]
    
  2. Aggiungi una funzione come questa al codice del progetto 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);
      }
    }

Risoluzione dei problemi

Se riscontri Error 400: invalid_scope con il messaggio di errore Some requested scopes cannot be shown, significa che non hai specificato ambiti di autorizzazione nel file appsscript.json del progetto Apps Script. Nella maggior parte dei casi, Apps Script determina automaticamente gli ambiti necessari a uno script, ma quando utilizzi il servizio avanzato Chat, devi aggiungere manualmente gli ambiti di autorizzazione utilizzati dallo script al file manifest del progetto Apps Script. Consulta Impostazione di ambiti espliciti.

Per risolvere l'errore, aggiungi gli ambiti di autorizzazione appropriati al file appsscript.json del progetto Apps Script come parte dell'array oauthScopes. Ad esempio, per chiamare il metodo spaces.messages.create, aggiungi quanto segue:

"oauthScopes": [
  "https://www.googleapis.com/auth/chat.messages.create"
]

Limiti e considerazioni

Il servizio Advanced Chat non supporta:

Per scaricare un allegato del messaggio o chiamare un metodo di anteprima per sviluppatori, utilizza UrlFetchApp.