スペースのメンバーを一覧表示する

このガイドでは、Google Chat API の Membership リソースの list() メソッドを使用して、スペース内のメンバーをページネーションされたフィルタ可能なスペース内のメンバーシップ リストとして一覧表示する方法について説明します。

  • アプリ認証でメンバーシップを一覧表示すると、Chat アプリがアクセスできるスペースのメンバーシップが一覧表示されます。ただし、Chat アプリのメンバーシップ(自身のメンバーシップを含む)は除外されます。
  • ユーザー認証でメンバーシップを一覧表示すると、認証されたユーザーがアクセスできるスペースのメンバーシップが一覧表示されます。
  • 管理者権限を使用してユーザー認証を行う Google Workspace 管理者としてメンバーシップを一覧表示すると、Google Workspace 組織内のすべてのスペースのメンバーシップが一覧表示されます。

Membership リソースは、人間のユーザーまたは Google Chat アプリがスペースに招待されているか、スペースに参加しているか、スペースに含まれていないかを表します。

前提条件

Node.js

Python

Java

Apps Script

ユーザー認証を使用してスペース内のメンバーを一覧表示する

認証されたユーザーがアクセスできるスペース内のユーザー、Google グループ、Chat アプリを一覧表示するには、リクエストで次のように渡します。

  • ユーザー認証では、chat.memberships.readonly または chat.memberships の認可スコープを指定します。
  • ListMemberships() メソッドを呼び出します。
  • Google グループを一覧表示するには、クエリ パラメータ showGroupstrue に設定します。

次の例では、認証されたユーザーに表示される Google グループ、人間、アプリのメンバーを一覧表示します。

Node.js

chat/client-libraries/cloud/list-memberships-user-cred.js
import {createClientWithUserCredentials} from './authentication-utils.js';

const USER_AUTH_OAUTH_SCOPES = ['https://www.googleapis.com/auth/chat.memberships.readonly'];

// This sample shows how to list memberships with user credential
async function main() {
  // Create a client
  const chatClient = await createClientWithUserCredentials(USER_AUTH_OAUTH_SCOPES);

  // Initialize request argument(s)
  const request = {
    // Replace SPACE_NAME here
    parent: 'spaces/SPACE_NAME',
    // Filter membership by type (HUMAN or BOT) or role (ROLE_MEMBER or
    // ROLE_MANAGER)
    filter: 'member.type = "HUMAN"'
  };

  // Make the request
  const pageResult = chatClient.listMembershipsAsync(request);

  // Handle the response. Iterating over pageResult will yield results and
  // resolve additional pages automatically.
  for await (const response of pageResult) {
    console.log(response);
  }
}

main().catch(console.error);

Python

chat/client-libraries/cloud/list_memberships_user_cred.py
from authentication_utils import create_client_with_user_credentials
from google.apps import chat_v1 as google_chat

SCOPES = ["https://www.googleapis.com/auth/chat.memberships.readonly"]

# This sample shows how to list memberships with user credential
def list_memberships_user_cred():
    # Create a client
    client = create_client_with_user_credentials(SCOPES)

    # Initialize request argument(s)
    request = google_chat.ListMembershipsRequest(
        # Replace SPACE_NAME here
        parent = 'spaces/SPACE_NAME',
        # Filter membership by type (HUMAN or BOT) or role (ROLE_MEMBER or
        # ROLE_MANAGER)
        filter = 'member.type = "HUMAN"',
        # Number of results that will be returned at once
        page_size = 100
    )

    # Make the request
    page_result = client.list_memberships(request)

    # Handle the response. Iterating over page_result will yield results and
    # resolve additional pages automatically.
    for response in page_result:
        print(response)

list_memberships_user_cred()

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/ListMembershipsUserCred.java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.ListMembershipsRequest;
import com.google.chat.v1.ListMembershipsResponse;
import com.google.chat.v1.Membership;

// This sample shows how to list memberships with user credential.
public class ListMembershipsUserCred {

  private static final String SCOPE =
    "https://www.googleapis.com/auth/chat.memberships.readonly";

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithUserCredentials(
          ImmutableList.of(SCOPE))) {
      ListMembershipsRequest.Builder request = ListMembershipsRequest.newBuilder()
        // Replace SPACE_NAME here.
        .setParent("spaces/SPACE_NAME")
        // Filter membership by type (HUMAN or BOT) or role
        // (ROLE_MEMBER or ROLE_MANAGER).
        .setFilter("member.type = \"HUMAN\"")
        // Number of results that will be returned at once.
        .setPageSize(10);

      // Iterating over results and resolve additional pages automatically.
      for (Membership response :
          chatServiceClient.listMemberships(request.build()).iterateAll()) {
        System.out.println(JsonFormat.printer().print(response));
      }
    }
  }
}

Apps Script

chat/advanced-service/Main.gs
/**
 * This sample shows how to list memberships with user credential
 * 
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.memberships.readonly'
 * referenced in the manifest file (appsscript.json).
 */
function listMembershipsUserCred() {
  // Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME here
  const parent = 'spaces/SPACE_NAME';
  // Filter membership by type (HUMAN or BOT) or role (ROLE_MEMBER or
  // ROLE_MANAGER)
  const filter = 'member.type = "HUMAN"';

  // Iterate through the response pages using page tokens
  let responsePage;
  let pageToken = null;
  do {
    // Request response pages
    responsePage = Chat.Spaces.Members.list(parent, {
      filter: filter,
      pageSize: 10,
      pageToken: pageToken
    });
    // Handle response pages
    if (responsePage.memberships) {
      responsePage.memberships.forEach((membership) => console.log(membership));
    }
    // Update the page token to the next one
    pageToken = responsePage.nextPageToken;
  } while (pageToken);
}

このサンプルを実行するには、SPACE_NAME をスペースの name フィールドの ID に置き換えます。ID は、ListSpaces() メソッドを呼び出すか、スペースの URL から取得できます。

Google Chat API は、指定されたスペースの Google グループ、ユーザー、アプリのメンバーのリストを返します。

アプリ認証を使用してスペース内のメンバーを一覧表示する

認証済みアプリがアクセスできるスペース内のユーザーと Chat アプリを一覧表示するには、リクエストで次のように渡します。

  • アプリ認証では、chat.bot 認可スコープを指定します。
  • ListMemberships() メソッドを呼び出します。
  • Google グループを一覧表示するには、クエリ パラメータ showGroupstrue に設定します。

次の例では、Chat アプリに表示される人間のスペース メンバー(スペース管理者ではない)を一覧表示します。

Node.js

chat/client-libraries/cloud/list-memberships-app-cred.js
import {createClientWithAppCredentials} from './authentication-utils.js';

// This sample shows how to list memberships with app credential
async function main() {
  // Create a client
  const chatClient = createClientWithAppCredentials();

  // Initialize request argument(s)
  const request = {
    // Replace SPACE_NAME here
    parent: 'spaces/SPACE_NAME',
    // Filter membership by type (HUMAN or BOT) or role (ROLE_MEMBER or
    // ROLE_MANAGER)
    filter: 'member.type = "HUMAN"'
  };

  // Make the request
  const pageResult = chatClient.listMembershipsAsync(request);

  // Handle the response. Iterating over pageResult will yield results and
  // resolve additional pages automatically.
  for await (const response of pageResult) {
    console.log(response);
  }
}

main().catch(console.error);

Python

chat/client-libraries/cloud/list_memberships_app_cred.py
from authentication_utils import create_client_with_app_credentials
from google.apps import chat_v1 as google_chat

# This sample shows how to list memberships with app credential
def list_memberships_app_cred():
    # Create a client
    client = create_client_with_app_credentials()

    # Initialize request argument(s)
    request = google_chat.ListMembershipsRequest(
        # Replace SPACE_NAME here
        parent = 'spaces/SPACE_NAME',
        # Filter membership by type (HUMAN or BOT) or role (ROLE_MEMBER or
        # ROLE_MANAGER)
        filter = 'member.type = "HUMAN"',
        # Number of results that will be returned at once
        page_size = 100
    )

    # Make the request
    page_result = client.list_memberships(request)

    # Handle the response. Iterating over page_result will yield results and
    # resolve additional pages automatically.
    for response in page_result:
        print(response)

list_memberships_app_cred()

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/ListMembershipsAppCred.java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.ListMembershipsRequest;
import com.google.chat.v1.ListMembershipsResponse;
import com.google.chat.v1.Membership;

// This sample shows how to list memberships with app credential.
public class ListMembershipsAppCred {

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithAppCredentials()) {
      ListMembershipsRequest.Builder request = ListMembershipsRequest.newBuilder()
        // Replace SPACE_NAME here.
        .setParent("spaces/SPACE_NAME")
        // Filter membership by type (HUMAN or BOT) or role
        // (ROLE_MEMBER or ROLE_MANAGER).
        .setFilter("member.type = \"HUMAN\"")
        // Number of results that will be returned at once.
        .setPageSize(10);

      // Iterate over results and resolve additional pages automatically.
      for (Membership response :
          chatServiceClient.listMemberships(request.build()).iterateAll()) {
        System.out.println(JsonFormat.printer().print(response));
      }
    }
  }
}

Apps Script

chat/advanced-service/Main.gs
/**
 * This sample shows how to list memberships with app credential
 * 
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.bot'
 * used by service accounts.
 */
function listMembershipsAppCred() {
// Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME here
  const parent = 'spaces/SPACE_NAME';
  // Filter membership by type (HUMAN or BOT) or role (ROLE_MEMBER or
  // ROLE_MANAGER)
  const filter = 'member.type = "HUMAN"';

  // Iterate through the response pages using page tokens
  let responsePage;
  let pageToken = null;
  do {
    // Request response pages
    responsePage = Chat.Spaces.Members.list(parent, {
      filter: filter,
      pageSize: 10,
      pageToken: pageToken
    }, getHeaderWithAppCredentials());
    // Handle response pages
    if (responsePage.memberships) {
      responsePage.memberships.forEach((membership) => console.log(membership));
    }
    // Update the page token to the next one
    pageToken = responsePage.nextPageToken;
  } while (pageToken);
}

このサンプルを実行するには、SPACE_NAME をスペースの name フィールドの ID に置き換えます。ID は、ListSpaces() メソッドを呼び出すか、スペースの URL から取得できます。

Google Chat API は、指定されたスペースの人間のメンバー(スペース管理者を除く)のリストを返します。

Google Workspace 管理者としてメンバーを一覧表示する

Google Workspace 管理者は、ListMemberships() メソッドを呼び出して、Google Workspace 組織内の任意のスペースのメンバーシップを一覧表示できます。Chat API は、組織内のユーザー(内部と外部の両方)または Google グループに関するメンバーシップのみを返します。そのため、Chat アプリのメンバーシップは返されません。

Google Workspace 管理者としてこのメソッドを呼び出す手順は次のとおりです。

  • ユーザー認証を使用してメソッドを呼び出し、管理者権限を使用してメソッドの呼び出しをサポートする認可スコープを指定します。
  • リクエストで、次のクエリ パラメータを指定します。
    • useAdminAccesstrue に設定する。
    • ユーザーのみを返すには、member.typefilterHUMAN に設定します。
    • ユーザーとグループを返すには、member.typefilterBOT AND showGroupstrue と等しくないように設定します。

詳細と例については、Google Workspace 管理者として Google Chat スペースを管理するをご覧ください。

ページネーションをカスタマイズする、リストをフィルタする

メンバーシップを一覧表示するには、次のクエリ パラメータを渡して、表示されるメンバーシップのページネーションをカスタマイズするか、メンバーシップをフィルタします。

  • pageSize: 返されるメンバーシップの最大数。サービスが返す値はこれよりも少ないことがあります。指定しなかった場合、最大で 100 個のスペースが返されます。最大値は 1,000 です。1,000 を超える値は自動的に 1,000 に変更されます。
  • pageToken: 前回の list spaces 呼び出しから受け取ったページトークン。後続のページを取得するには、このトークンを指定します。ページネーションを行う場合、フィルタ値はページトークンを提供した呼び出しと一致している必要があります。別の値を渡すと、予期しない結果になる可能性があります。
  • filter: クエリフィルタ。ユーザー認証が必要です。サポートされているクエリの詳細については、ListMembershipsRequest のリファレンスをご覧ください。