회의 스페이스 구성원은 회의 스페이스에서 역할을 갖도록 구성된 사용자입니다. 이러한 사용자는 연결 권한을 요청하지 않고도 회의 스페이스에 참여할 수 있습니다('노크'라고도 함).
회의 주최자는 회의 스페이스에 자동으로 입장할 수 있지만, 노크 없이 회의에 참여할 수 있는 회의 스페이스 멤버를 추가로 구성할 수도 있습니다.
또한 회의에서 Role를 갖도록 구성할 수 있습니다(예: COHOST). 이를 통해 회의 중에 회의를 공동 관리할 수 있지만 자동 아티팩트를 구성하거나 조정 설정을 변경할 수는 없습니다. 노크 없이 회의실에 액세스하는 방법에 대한 자세한 내용은 AccessType를 참고하세요.
spaces.members 리소스에는 name, email, role 필드가 포함됩니다.
회의 스페이스 구성원은 참여자와 다릅니다. 참여자는 통화에 참여한 사람 또는 컴패니언 모드를 사용하여 참관자로 시청하는 사람, 통화에 연결된 회의실 기기입니다. 각 사용자에 대해 하나의 conferenceRecords.participants 리소스가 있습니다.
일반적인 메서드 동작
Meet REST API를 사용하여 회의실 구성원을 관리할 때 메서드는 다음 규칙을 공유합니다.
경로 매개변수: 각 메서드는 경로 매개변수를 사용합니다.
create,list,batchUpdate메서드는parent필드를 사용하여 회의 스페이스 (spaces/{space})를 참조합니다.delete,get,patch메서드는name필드를 사용하여 회의 스페이스 및 회원 이름(spaces/{space}/members/{member})별로 결과를 필터링합니다.반환 유형:
create,get,patch메서드는Member리소스의 인스턴스를 반환합니다.list및batchUpdate메서드는Member리소스 목록을 반환합니다 (delete는 빈 응답 본문을 반환함).필드 마스크:
delete를 제외한 모든 메서드는 필드 마스크를 지원합니다.create,get,list메서드의 경우 SystemParameterContext에서fields매개변수를 사용하여 반환할 필드를 지정할 수 있습니다.fields매개변수를 생략하면 API 응답이 기본적으로"name,email,role,user"로 설정됩니다.patch및batchUpdate메서드의 경우updateMask를 사용하여 변경할 필드를 지정합니다.FieldMask 사용:
FieldMask는 API 호출자가 요청에서 반환하거나 수정해야 하는 필드를 나열하는 방법입니다. 객체의 특정 필드만 사용하고 다른 필드는 변경하지 않도록 지정하는 쉼표로 구분된 필드 목록입니다.FieldMask를 사용하면 API가 불필요한 작업을 방지하고 성능을 개선할 수 있습니다. 필드 마스크에 대한 자세한 내용은 Google Sheets API의 필드 마스크 사용을 참고하세요.
구성원 만들기
회의 스페이스에 구성원을 추가하려면 spaces.members 리소스에서 create 메서드를 사용합니다.
다음 코드 샘플은 구성원을 만드는 방법을 보여줍니다.
자바
import com.google.apps.meet.v2.Member;
import com.google.apps.meet.v2.SpacesServiceClient;
public class CreateMember {
public static void main(String[] args) throws Exception {
try (SpacesServiceClient client = SpacesServiceClient.create()) {
Member member = Member.newBuilder()
.setEmail("user@example.com")
.setRole(Member.Role.COHOST)
.build();
Member response = client.createMember("spaces/SPACE_NAME", member);
System.out.println("Member created: " + response.getName());
}
}
}
Node.js
const {SpacesServiceClient} = require('@google-apps/meet').v2;
async function createMember(spaceName, email) {
const client = new SpacesServiceClient();
const [response] = await client.createMember({
parent: spaceName,
member: {
email: email,
role: 'COHOST',
},
});
console.log(`Member created: ${response.name}`);
return response;
}
Python
from google.apps import meet_v2
def create_member(space_name, email):
client = meet_v2.SpacesServiceClient()
member = meet_v2.Member(
email=email,
role=meet_v2.Member.Role.COHOST,
)
response = client.create_member(parent=space_name, member=member)
print(f"Member created: {response.name}")
return response
Apps Script
function createMember(spaceName, email) {
const response = UrlFetchApp.fetch(
`https://meet.googleapis.com/v2/${spaceName}/members`,
{
method: 'post',
contentType: 'application/json',
headers: {
Authorization: 'Bearer ' + ScriptApp.getOAuthToken(),
},
payload: JSON.stringify({
email: email,
role: 'COHOST',
}),
}
);
const member = JSON.parse(response.getContentText());
Logger.log('Member created: ' + member.name);
return member;
}
cURL
curl -X POST \
"https://meet.googleapis.com/v2/spaces/SPACE_NAME/members" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"role": "COHOST"
}'
ACCESS_TOKEN를 API에 대한 액세스 권한을 부여하는 액세스 토큰으로 바꿉니다.
스페이스 이름 값을 회의 스페이스의 고유 서버 생성 ID로 바꿉니다.
회원 세부정보 가져오기
특정 구성원에 대한 세부정보를 가져오려면 spaces.members 리소스에서 get 메서드를 사용합니다.
다음 코드 샘플은 회원을 가져오는 방법을 보여줍니다.
자바
import com.google.apps.meet.v2.Member;
import com.google.apps.meet.v2.SpacesServiceClient;
public class GetMember {
public static void main(String[] args) throws Exception {
try (SpacesServiceClient client = SpacesServiceClient.create()) {
Member response =
client.getMember("spaces/SPACE_NAME/members/MEMBER_NAME");
System.out.println("Member role: " + response.getRole());
}
}
}
Node.js
const {SpacesServiceClient} = require('@google-apps/meet').v2;
async function getMember(memberName) {
const client = new SpacesServiceClient();
const [response] = await client.getMember({name: memberName});
console.log(`Member role: ${response.role}`);
return response;
}
Python
from google.apps import meet_v2
def get_member(member_name):
client = meet_v2.SpacesServiceClient()
response = client.get_member(name=member_name)
print(f"Member role: {response.role.name}")
return response
Apps Script
function getMember(memberName) {
// memberName format: "spaces/{space}/members/{member}"
const response = UrlFetchApp.fetch(
`https://meet.googleapis.com/v2/${memberName}`,
{
method: 'get',
headers: {
Authorization: 'Bearer ' + ScriptApp.getOAuthToken(),
},
}
);
const member = JSON.parse(response.getContentText());
Logger.log('Member role: ' + member.role);
return member;
}
cURL
curl -X GET \
"https://meet.googleapis.com/v2/spaces/SPACE_NAME/members/MEMBER_NAME" \
-H "Authorization: Bearer ACCESS_TOKEN"
ACCESS_TOKEN를 API에 대한 액세스 권한을 부여하는 액세스 토큰으로 바꿉니다.
스페이스 이름 및 회원 이름 값을 회의 스페이스 및 회원의 고유한 서버 생성 ID로 바꿉니다.
회원 목록 만들기
회의 스페이스의 모든 구성원을 나열하려면 spaces.members 리소스에서 list 메서드를 사용합니다.
다음 코드 샘플은 구성원을 나열하는 방법을 보여줍니다.
자바
import com.google.apps.meet.v2.Member;
import com.google.apps.meet.v2.SpacesServiceClient;
public class ListMembers {
public static void main(String[] args) throws Exception {
try (SpacesServiceClient client = SpacesServiceClient.create()) {
for (Member member :
client.listMembers("spaces/SPACE_NAME").iterateAll()) {
System.out.println("Member: " + member.getName() + " (" +
member.getEmail() + ")");
}
}
}
}
Node.js
const {SpacesServiceClient} = require('@google-apps/meet').v2;
async function listMembers(spaceName) {
const client = new SpacesServiceClient();
const [members] = await client.listMembers({parent: spaceName});
members.forEach((member) => {
console.log(`Member: ${member.name} (${member.email})`);
});
return members;
}
Python
from google.apps import meet_v2
def list_members(space_name):
client = meet_v2.SpacesServiceClient()
response = client.list_members(parent=space_name)
for member in response:
print(f"Member: {member.name} ({member.email})")
Apps Script
function listMembers(spaceName) {
const response = UrlFetchApp.fetch(
`https://meet.googleapis.com/v2/${spaceName}/members`,
{
method: 'get',
headers: {
Authorization: 'Bearer ' + ScriptApp.getOAuthToken(),
},
}
);
const data = JSON.parse(response.getContentText());
(data.members || []).forEach((member) => {
Logger.log(`Member: ${member.name} (${member.email})`);
});
return data.members;
}
cURL
curl -X GET \
"https://meet.googleapis.com/v2/spaces/SPACE_NAME/members" \
-H "Authorization: Bearer ACCESS_TOKEN"
ACCESS_TOKEN를 API에 대한 액세스 권한을 부여하는 액세스 토큰으로 바꿉니다.
스페이스 이름 값을 회의 스페이스의 고유 서버 생성 ID로 바꿉니다.
구성원 업데이트
회의 스페이스에서 구성원의 역할을 업데이트하려면 spaces.members 리소스에서 patch 메서드를 사용합니다.
다음 코드 샘플은 회원을 업데이트하는 방법을 보여줍니다.
자바
import com.google.apps.meet.v2.Member;
import com.google.apps.meet.v2.SpacesServiceClient;
import com.google.protobuf.FieldMask;
public class UpdateMember {
public static void main(String[] args) throws Exception {
try (SpacesServiceClient client = SpacesServiceClient.create()) {
Member member = Member.newBuilder()
.setName("spaces/SPACE_NAME/members/MEMBER_NAME")
.setRole(Member.Role.ROLE_UNSPECIFIED)
.build();
FieldMask updateMask =
FieldMask.newBuilder().addPaths("role").build();
Member response = client.updateMember(member, updateMask);
System.out.println("Updated member: " + response.getName());
}
}
}
Node.js
const {SpacesServiceClient} = require('@google-apps/meet').v2;
async function updateMember(memberName) {
const client = new SpacesServiceClient();
const [response] = await client.updateMember({
member: {
name: memberName,
role: 'ROLE_UNSPECIFIED',
},
updateMask: {
paths: ['role'],
},
});
console.log(`Updated member: ${response.name}`);
return response;
}
Python
from google.apps import meet_v2
from google.protobuf import field_mask_pb2
def update_member(member_name):
client = meet_v2.SpacesServiceClient()
member = meet_v2.Member(
name=member_name,
role=meet_v2.Member.Role.ROLE_UNSPECIFIED,
)
update_mask = field_mask_pb2.FieldMask(paths=["role"])
response = client.update_member(member=member, update_mask=update_mask)
print(f"Updated member: {response.name}")
return response
Apps Script
function updateMember(memberName) {
// memberName format: "spaces/{space}/members/{member}"
const baseUrl = 'https://meet.googleapis.com/v2/';
const url = `${baseUrl}${memberName}?updateMask=role`;
const response = UrlFetchApp.fetch(url, {
method: 'patch',
contentType: 'application/json',
headers: {
Authorization: 'Bearer ' + ScriptApp.getOAuthToken(),
},
payload: JSON.stringify({
role: 'ROLE_UNSPECIFIED',
}),
});
const member = JSON.parse(response.getContentText());
Logger.log('Updated member: ' + member.name);
return member;
}
cURL
curl -X PATCH \
"https://meet.googleapis.com/v2/spaces/SPACE_NAME/members/MEMBER_NAME?updateMask=role" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"role": "ROLE_UNSPECIFIED"
}'
ACCESS_TOKEN를 API에 대한 액세스 권한을 부여하는 액세스 토큰으로 바꿉니다.
스페이스 이름 및 회원 이름 값을 회의 스페이스 및 회원의 고유한 서버 생성 ID로 바꿉니다.
회원 일괄 업데이트
단일 요청에서 여러 구성원의 역할을 업데이트하려면 spaces.members 리소스에서 batchUpdate 메서드를 사용합니다.
다음 코드 샘플은 회원을 일괄 업데이트하는 방법을 보여줍니다.
자바
import com.google.apps.meet.v2.BatchUpdateMembersRequest;
import com.google.apps.meet.v2.BatchUpdateMembersResponse;
import com.google.apps.meet.v2.Member;
import com.google.apps.meet.v2.SpacesServiceClient;
import com.google.apps.meet.v2.UpdateMemberRequest;
import com.google.protobuf.FieldMask;
import java.util.Arrays;
public class BatchUpdateMembers {
public static void main(String[] args) throws Exception {
try (SpacesServiceClient client = SpacesServiceClient.create()) {
UpdateMemberRequest req1 = UpdateMemberRequest.newBuilder()
.setMember(Member.newBuilder()
.setName("spaces/SPACE_NAME/members/MEMBER_1")
.setRole(Member.Role.COHOST)
.build())
.build();
UpdateMemberRequest req2 = UpdateMemberRequest.newBuilder()
.setMember(Member.newBuilder()
.setName("spaces/SPACE_NAME/members/MEMBER_2")
.setRole(Member.Role.ROLE_UNSPECIFIED)
.build())
.build();
BatchUpdateMembersRequest request =
BatchUpdateMembersRequest.newBuilder()
.setParent("spaces/SPACE_NAME")
.addAllRequests(Arrays.asList(req1, req2))
.setUpdateMask(
FieldMask.newBuilder().addPaths("role").build())
.build();
BatchUpdateMembersResponse response =
client.batchUpdateMembers(request);
System.out.println(
"Updated " + response.getMembersCount() + " members.");
}
}
}
Node.js
const {SpacesServiceClient} = require('@google-apps/meet').v2;
async function batchUpdateMembers(spaceName, member1, member2) {
const client = new SpacesServiceClient();
const [response] = await client.batchUpdateMembers({
parent: spaceName,
requests: [
{
member: {name: member1, role: 'COHOST'},
},
{
member: {name: member2, role: 'ROLE_UNSPECIFIED'},
},
],
updateMask: {
paths: ['role'],
},
});
console.log(`Updated ${response.members.length} members.`);
return response;
}
Python
from google.apps import meet_v2
from google.protobuf import field_mask_pb2
def batch_update_members(space_name, member_1, member_2):
client = meet_v2.SpacesServiceClient()
requests = [
meet_v2.UpdateMemberRequest(
member=meet_v2.Member(
name=member_1, role=meet_v2.Member.Role.COHOST
)
),
meet_v2.UpdateMemberRequest(
member=meet_v2.Member(
name=member_2, role=meet_v2.Member.Role.ROLE_UNSPECIFIED
)
),
]
update_mask = field_mask_pb2.FieldMask(paths=["role"])
response = client.batch_update_members(
parent=space_name, requests=requests, update_mask=update_mask
)
print(f"Updated {len(response.members)} members.")
return response
Apps Script
function batchUpdateMembers(spaceName, member1, member2) {
const url =
`https://meet.googleapis.com/v2/${spaceName}/members:batchUpdate`;
const response = UrlFetchApp.fetch(url, {
method: 'post',
contentType: 'application/json',
headers: {
Authorization: 'Bearer ' + ScriptApp.getOAuthToken(),
},
payload: JSON.stringify({
requests: [
{member: {name: member1, role: 'COHOST'}},
{member: {name: member2, role: 'ROLE_UNSPECIFIED'}},
],
updateMask: 'role',
}),
});
const data = JSON.parse(response.getContentText());
Logger.log(`Updated ${data.members.length} members.`);
return data.members;
}
cURL
curl -X POST \
"https://meet.googleapis.com/v2/spaces/SPACE_NAME/members:batchUpdate" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"requests": [
{
"member": {
"name": "spaces/SPACE_NAME/members/MEMBER_1",
"role": "COHOST"
}
},
{
"member": {
"name": "spaces/SPACE_NAME/members/MEMBER_2",
"role": "ROLE_UNSPECIFIED"
}
}
],
"updateMask": "role"
}'
ACCESS_TOKEN를 API에 대한 액세스 권한을 부여하는 액세스 토큰으로 바꿉니다.
스페이스 이름 및 회원 이름 값을 회의 스페이스 및 회원의 고유한 서버 생성 ID로 바꿉니다.
구성원 삭제
회의 스페이스에서 구성원을 삭제하려면 spaces.members 리소스에서 delete 메서드를 사용합니다.
다음 코드 샘플은 회원을 삭제하는 방법을 보여줍니다.
자바
import com.google.apps.meet.v2.SpacesServiceClient;
public class DeleteMember {
public static void main(String[] args) throws Exception {
try (SpacesServiceClient client = SpacesServiceClient.create()) {
client.deleteMember("spaces/SPACE_NAME/members/MEMBER_NAME");
System.out.println("Member deleted.");
}
}
}
Node.js
const {SpacesServiceClient} = require('@google-apps/meet').v2;
async function deleteMember(memberName) {
const client = new SpacesServiceClient();
await client.deleteMember({name: memberName});
console.log('Member deleted.');
}
Python
from google.apps import meet_v2
def delete_member(member_name):
client = meet_v2.SpacesServiceClient()
client.delete_member(name=member_name)
print("Member deleted.")
Apps Script
function deleteMember(memberName) {
// memberName format: "spaces/{space}/members/{member}"
UrlFetchApp.fetch(`https://meet.googleapis.com/v2/${memberName}`, {
method: 'delete',
headers: {
Authorization: 'Bearer ' + ScriptApp.getOAuthToken(),
},
});
Logger.log('Member deleted.');
}
cURL
curl -X DELETE \
"https://meet.googleapis.com/v2/spaces/SPACE_NAME/members/MEMBER_NAME" \
-H "Authorization: Bearer ACCESS_TOKEN"
ACCESS_TOKEN를 API에 대한 액세스 권한을 부여하는 액세스 토큰으로 바꿉니다.
스페이스 이름 및 회원 이름 값을 회의 스페이스 및 회원의 고유한 서버 생성 ID로 바꿉니다.