会議スペースのメンバーは、会議スペースでロールを持つように構成されたユーザーです。これらのユーザーは、接続の許可をリクエスト(ノック)することなく会議スペースに参加できます。
会議の主催者は会議スペースに自動的に入室できますが、参加リクエストなしで会議に参加できる会議スペースのメンバーを追加で設定することもできます。また、会議で Role(COHOST など)を持つようにメンバーを構成することもできます。これにより、会議中に会議を共同管理できますが、アーティファクトの自動生成やモデレーション設定の変更はできません。ノックせずに会議スペースにアクセスする方法について詳しくは、AccessType をご覧ください。
spaces.members リソースには、name、email、role の各フィールドが含まれます。
なお、会議スペースのメンバーは参加者とは異なります。参加者とは、通話に参加しているユーザー、コンパニオン モードを使用しているユーザー、閲覧者として視聴しているユーザー、通話に接続されている会議室デバイスのことです。ユーザーごとに 1 つの 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 メソッドを使用します。
次のコードサンプルは、メンバーの作成方法を示しています。
Java
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 メソッドを使用します。
次のコードサンプルは、メンバーを取得する方法を示しています。
Java
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 メソッドを使用します。
次のコードサンプルは、メンバーを一覧表示する方法を示しています。
Java
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 メソッドを使用します。
次のコードサンプルは、メンバーを更新する方法を示しています。
Java
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 に置き換えます。
メンバーをバッチ アップデートする
1 つのリクエストで複数のメンバーのロールを更新するには、spaces.members リソースの batchUpdate メソッドを使用します。
次のコードサンプルは、メンバーを一括更新する方法を示しています。
Java
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 メソッドを使用します。
次のコードサンプルは、メンバーを削除する方法を示しています。
Java
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 に置き換えます。