Servizio chat avanzato

Il servizio Chat avanzata 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 ulteriori informazioni su questo servizio, consulta la documentazione di riferimento dell'API Chat. Come tutti i servizi avanzati di 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

L'esempio seguente mostra come pubblicare un messaggio in uno spazio Chat per conto dell'app. L'utilizzo del servizio Chat avanzato con un account di servizio non richiede di specificare gli ambiti di autorizzazione in appsscript.json. Per maggiori dettagli sull'autenticazione con gli account di servizio, 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);
  }
}

Crea uno spazio

L'esempio seguente 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 alcun ambito di autorizzazione nel file appsscript.json del progetto di Apps Script. Nella maggior parte dei casi, Apps Script determina automaticamente gli ambiti di cui uno script ha bisogno, ma quando utilizzi il servizio avanzato di Chat, devi aggiungere manualmente gli ambiti di autorizzazione utilizzati dallo script al file manifest del progetto Apps Script. Consulta Impostare ambiti espliciti.

Per risolvere l'errore, aggiungi gli ambiti di autorizzazione appropriati al file appsscript.json del progetto Apps Script nell'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 Chat avanzata non supporta:

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