스페이스의 멤버 나열

이 가이드에서는 Google Chat API의 Membership 리소스에서 list() 메서드를 사용하여 스페이스의 구성원을 스페이스의 멤버십 목록으로 페이지로 나누고 필터링할 수 있는 목록으로 표시하는 방법을 설명합니다.

  • 앱 인증을 사용하여 멤버십을 표시하면 Chat 앱이 액세스할 수 있는 스페이스의 멤버십이 표시되지만 자체 멤버십을 포함한 Chat 앱 멤버십은 제외됩니다.
  • 사용자 인증으로 멤버십을 나열하면 인증된 사용자가 액세스할 수 있는 스페이스의 멤버십이 나열됩니다.
  • 관리자 권한을 사용하여 사용자 인증을 통해 Google Workspace 관리자로 멤버십을 표시하면 Google Workspace 조직의 모든 스페이스에 있는 멤버십이 표시됩니다.

Membership 리소스는 실제 사용자 또는 Google Chat 앱이 스페이스에 초대되었는지, 스페이스의 일부인지 또는 스페이스에 없는지를 나타냅니다.

기본 요건

Node.js

Python

자바

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()

자바

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로 바꿉니다. ListSpaces() 메서드를 호출하거나 스페이스의 URL에서 ID를 가져올 수 있습니다.

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()

자바

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로 바꿉니다. ListSpaces() 메서드를 호출하거나 스페이스의 URL에서 ID를 가져올 수 있습니다.

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 참조를 참고하세요.