グループ管理したい(GroupsApp
)
1const group = GroupsApp.getGroupByEmail("Googleグループのアドレス");
2const users = group.getUsers();
3console.log("メンバー数 = " + users.length);
GroupsAppクラスを使って、Googleグループを管理できます。 ただし、無料のGoogleグループでは、グループメンバーの追加/削除などはできません。
メンバーを確認したい
1function getGroupMembers(groupMail) {
2 const group = GroupsApp.getGroupByEmail(groupMail);
3 const users = group.getUsers();
4 const n = users.length;
5 Logger.log(`Found ${n} members`);
6 if (n === 0 ) return [];
7
8 const members = users.map(user => {
9 Utilities.sleep(500);
10 return {
11 email: user.getEmail(),
12 role: group.getRole(user),
13 }
14 })
15
16 return members;
17}
18
19function logGroupMembers(members) {
20 Logger.log(JSON.stringify(members, null, 2));
21}
22
23function showGroupMembers() {
24 const members = getGroupMembers();
25 logGroupMembers(members);
26}
グループに追加したい
1function addUserToGroup(email, options) {
2 const {
3 group = "group-name@example.com", // googlegroupsのドメイン
4 } = options;
5
6 const group = GroupApp.getGroupByEmail(group);
7
8 const isRegistered = group.hasUser(email);
9 if (isRegistered) {
10 Logger.log(`${email}はグループに登録されています`)
11 return
12 }
13
14 group.addUser(email);
15 Logger.log(`${email}をグループに追加しました`)
16}
グループから削除したい
1function removeUserFromGroup(email, options) {
2 const {
3 group = "group-name@example.com"
4 } = options;
5 const group = GroupApp.getGroupByEmail(group);
6 const isRegistered = group.hasUser(email);
7 if (!isRegistered) {
8 Logger.log(`${email}はグループに登録されていません`)
9 }
10
11 group.removeUser(email);
12 Logger.log(`${email}をグループから削除しました`)
13}
メンバー一覧をシートに保存したい
1// ページ上部のサンプルを再利用する
2function getGroupMembers() {...};
3
4function writeGroupMembersToSheet(members, spreadsheetId, sheetName) {
5 const sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sheetName);
6 sheet.clear();
7
8 const now = Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy-MM-dd HH:mm:ss");
9 Logger.log(`Start at ${now}`);
10
11 // Update last-updated date
12 sheet.getRange("A1").setValue("Last Updated");
13 sheet.getRange("B1").setValue(now);
14
15 // Headers
16 sheet.appendRow(["users", members.length]);
17 sheet.appendRow(["Role", "Email"]);
18
19 // Data
20 for (const member of members) {
21 sheet.appendRow([member.role, member.email]);
22 }
23
24 // Sort
25 sheet.sort(1, false);
26
27 const end = Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy-MM-dd HH:mm:ss");
28 Logger.log(`End at ${end}`);
29 sheet.getRange("A1").setValue("Last Updated");
30 sheet.getRange("B1").setValue(end);
31
32 return sheet;
33}
34
35function exportGroupMembers() {
36 const groupMail = "group-name@example.com";
37 const bookId = "スプレッドシートのID";
38 const sheetName = "シートの名前";
39
40 const members = getGroupMembers(groupMail);
41 writeGroupMembersToSheet(members, bookId, sheetName);
42}