Servizio chat avanzato

Il servizio Advanced Chat consente di utilizzare l'API Google Chat in Apps Script. Questa API consente agli script di trovare, creare e modificare spazi di Chat, aggiungere o rimuovere membri negli 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 campione

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 di Chat per conto dell'utente.

  1. Aggiungi l'ambito dell'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 di 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 Autenticare 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);
  }
}

Ottieni uno spazio

L'esempio seguente mostra come ottenere informazioni su uno spazio di Chat.

  1. Aggiungi l'ambito dell'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

L'esempio seguente mostra come creare uno spazio di Chat.

  1. Aggiungi l'ambito dell'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);
      }
    }

Appartenenze agli elenchi

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

  1. Aggiungi l'ambito dell'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);
      }
    }

Risolvi il problema

Se vedi 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 di Chat, devi aggiungere manualmente gli ambiti di autorizzazione utilizzati dallo script al file manifest del tuo progetto Apps Script. Consulta la pagina Impostare 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 chat avanzato non supporta:

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