Zaawansowana usługa czatu

Usługa Google Chat zaawansowany umożliwia korzystanie z interfejsu Google Chat API w Apps Script. Ten interfejs API umożliwia skryptom znajdowanie, tworzenie i modyfikowanie pokoi Google Chat, dodawanie i usuwanie użytkowników z pokoi oraz czytanie lub publikowanie wiadomości z tekstem, kartami, załącznikami i reakcjami.

Wymagania wstępne

Dokumentacja

Więcej informacji o tej usłudze znajdziesz w dokumentacji interfejsu Chat API. Podobnie jak wszystkie usługi zaawansowane w Apps Script, usługa Chat używa tych samych obiektów, metod i parametrów co publiczny interfejs API.

Przykładowy kod

Te przykłady pokazują, jak wykonywać typowe działania za pomocą interfejsu Google Chat API przy użyciu zaawansowanej usługi.

Publikowanie wiadomości z danymi logowania użytkownika

Ten przykład pokazuje, jak opublikować wiadomość w pokoju czatu w imieniu użytkownika.

  1. Dodaj zakres autoryzacji chat.messages.create do pliku appsscript.json projektu Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.messages.create"
    ]
    
  2. Dodaj do kodu projektu Apps Script funkcję podobną do tej:

    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);
      }
    }

Publikowanie wiadomości z danymi logowania do aplikacji

Ten przykład pokazuje, jak opublikować wiadomość w pokoju Google Chat w imieniu aplikacji. Korzystanie z zaawansowanej usługi Google Chat z kontem usługi nie wymaga określania zakresów autoryzacji w appsscript.json. Szczegółowe informacje o uwierzytelnianiu za pomocą kont usługi znajdziesz w artykule Uwierzytelnianie jako aplikacja 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);
  }
}

Uzyskaj miejsce

Ten przykład pokazuje, jak uzyskać informacje o pokoju czatu.

  1. Dodaj zakres autoryzacji chat.spaces.readonly do pliku appsscript.json projektu Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.spaces.readonly"
    ]
    
  2. Dodaj do kodu projektu Apps Script funkcję podobną do tej:

    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);
      }
    }

Utwórz pokój

Ten przykład pokazuje, jak utworzyć pokój czatu.

  1. Dodaj zakres autoryzacji chat.spaces.create do pliku appsscript.json projektu Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.spaces.create"
    ]
    
  2. Dodaj do kodu projektu Apps Script funkcję podobną do tej:

    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);
      }
    }

Wyświetlanie listy członków

Ten przykład pokazuje, jak wyświetlić listę wszystkich użytkowników pokoju czatu.

  1. Dodaj zakres autoryzacji chat.memberships.readonly do pliku appsscript.json projektu Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.memberships.readonly"
    ]
    
  2. Dodaj do kodu projektu Apps Script funkcję podobną do tej:

    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);
      }
    }

Rozwiązywanie problemów

Jeśli napotkasz błąd Error 400: invalid_scope z komunikatem Some requested scopes cannot be shown, oznacza to, że w pliku appsscript.json projektu Apps Script nie masz określonych żadnych zakresów autoryzacji. W większości przypadków Apps Script automatycznie określa zakresy uprawnień potrzebne do działania skryptu, ale jeśli używasz zaawansowanej usługi Chat, musisz ręcznie dodać do pliku manifestu projektu Apps Script zakresy uprawnień, których potrzebuje skrypt. Zobacz Ustawianie zakresów jednoznacznych.

Aby naprawić błąd, dodaj odpowiednie zakresy autoryzacji do pliku appsscript.json projektu Apps Script jako element tablicy oauthScopes. Aby na przykład wywołać metodę spaces.messages.create, dodaj:

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

Ograniczenia i uwagi

Usługa Google Chat nie obsługuje:

Aby pobrać załącznik wiadomości lub wywołać metodę podglądu dla dewelopera, użyj zamiast tego UrlFetchApp.