Erweiterter Chatdienst

Mit dem Advanced Chat-Dienst können Sie die Google Chat API in Apps Script verwenden. Mit dieser API können Skripts Chatbereiche finden, erstellen und ändern, Mitglieder zu Gruppenbereichen hinzufügen oder daraus entfernen sowie Nachrichten mit Text, Karten, Anhängen und Reaktionen lesen oder posten.

Voraussetzungen

  • Eine Apps Script-App für Google Chat, die auf der Konfigurationsseite der Chat API in der Google Cloud Console konfiguriert wurde. Das Apps Script-Projekt der Anwendung muss ein Google Cloud-Standardprojekt verwenden, nicht das automatisch für Apps Script-Projekte automatisch erstellte Standardprojekt. Informationen zum Erstellen einer kompatiblen Google Chat-App finden Sie unter Google Chat-App mit Apps Script erstellen.
  • Für die Chat-App konfigurierte Authentifizierung. Für die Durchführung einer Aktion im Namen eines Nutzers ist die Nutzerauthentifizierung erforderlich. Wenn Sie eine Aktion in der Chat-Anwendung ausführen möchten, ist eine Anwendungsauthentifizierung mit einem Dienstkonto erforderlich. Informationen dazu, welche Form der Authentifizierung von einer Chat API-Methode unterstützt wird, finden Sie unter Arten erforderlicher Authentifizierung für Google Chat API-Aufrufe.

Referenz

Weitere Informationen zu diesem Dienst finden Sie in der Referenzdokumentation zur Chat API. Wie alle erweiterten Dienste in Apps Script verwendet der Chat-Dienst dieselben Objekte, Methoden und Parameter wie die öffentliche API.

Beispielcode

In diesen Beispielen wird gezeigt, wie Sie gängige Google Chat API-Aktionen mit dem erweiterten Dienst ausführen.

Nachricht mit Nutzeranmeldedaten posten

Das folgende Beispiel zeigt, wie Sie im Namen des Nutzers eine Nachricht in einem Chatbereich posten.

  1. Fügen Sie der Datei appsscript.json des Apps Script-Projekts den Autorisierungsbereich chat.messages.create hinzu:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.messages.create"
    ]
    
  2. Fügen Sie dem Code des Apps Script-Projekts eine Funktion wie diese hinzu:

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

Nachricht mit App-Anmeldedaten posten

Das folgende Beispiel zeigt, wie Sie im Namen der Anwendung eine Nachricht in einem Chatbereich posten. Wenn Sie den erweiterten Chat-Dienst mit einem Dienstkonto verwenden, müssen Sie keine Autorisierungsbereiche in appsscript.json angeben. Weitere Informationen zur Authentifizierung mit Dienstkonten finden Sie unter Als Google Chat-App authentifizieren.

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

Gruppenbereich anfordern

Im folgenden Beispiel wird gezeigt, wie Sie Informationen zu einem Chatbereich abrufen.

  1. Fügen Sie der Datei appsscript.json des Apps Script-Projekts den Autorisierungsbereich chat.spaces.readonly hinzu:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.spaces.readonly"
    ]
    
  2. Fügen Sie dem Code des Apps Script-Projekts eine Funktion wie diese hinzu:

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

Gruppenbereich erstellen

Im folgenden Beispiel wird gezeigt, wie Sie einen Chatbereich erstellen.

  1. Fügen Sie der Datei appsscript.json des Apps Script-Projekts den Autorisierungsbereich chat.spaces.create hinzu:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.spaces.create"
    ]
    
  2. Fügen Sie dem Code des Apps Script-Projekts eine Funktion wie diese hinzu:

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

Mitgliedschaften auflisten

Das folgende Beispiel zeigt, wie alle Mitglieder eines Chatbereichs aufgelistet werden.

  1. Fügen Sie der Datei appsscript.json des Apps Script-Projekts den Autorisierungsbereich chat.memberships.readonly hinzu:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.memberships.readonly"
    ]
    
  2. Fügen Sie dem Code des Apps Script-Projekts eine Funktion wie diese hinzu:

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

Fehlerbehebung

Wenn Error 400: invalid_scope mit der Fehlermeldung Some requested scopes cannot be shown angezeigt wird, haben Sie in der Datei appsscript.json des Apps Script-Projekts keine Autorisierungsbereiche angegeben. In den meisten Fällen ermittelt Apps Script automatisch, welche Bereiche ein Skript benötigt. Wenn Sie jedoch den erweiterten Chat-Dienst verwenden, müssen Sie die Autorisierungsbereiche, die Ihr Skript verwendet, manuell der Manifestdatei Ihres Apps Script-Projekts hinzufügen. Siehe Explizite Bereiche festlegen.

Fügen Sie der Datei appsscript.json des Apps Script-Projekts die entsprechenden Autorisierungsbereiche als Teil des Arrays oauthScopes hinzu, um den Fehler zu beheben. Um beispielsweise die Methode spaces.messages.create aufzurufen, fügen Sie Folgendes hinzu:

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

Limits und Überlegungen

Folgende Funktionen werden vom erweiterten Chat-Dienst nicht unterstützt:

Wenn Sie einen Nachrichtenanhang herunterladen oder eine Entwicklervorschaumethode aufrufen möchten, verwenden Sie stattdessen UrlFetchApp.