-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgroups-members.js
More file actions
65 lines (58 loc) · 2.11 KB
/
groups-members.js
File metadata and controls
65 lines (58 loc) · 2.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/*
Requeriments:
- Go to "Resources" > "Advanced Google Services" and enable "Admin Directory API".
- A white sheet called 'members';
- A sheet called '_groups' with all the groups you want to list, in column A, starting in the first row
- Update the "@archdaily.com" in the following script
- Run the "main" function
*/
function main(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('members');
sheet.clear();
sheet.getRange(1,1).setValue("Loading...");
var groupsData = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('_groups').getDataRange().getValues();
var groups = [];
for( var g = 0 ; g < groupsData.length ; g++ ){
groups.push(groupsData[g][0]);
}
groups.sort();
for( var i = 0 ; i < groups.length ; i++ ){
Logger.log("Listing group: " + groups[i]);
sheet.getRange(1, i + 1).setValue(groups[i]).setFontWeight("bold");
sheet.getRange(1, i + 1).clearNote();
var aliases = AdminDirectory.Groups.Aliases.list(groups[i] + '@archdaily.com').aliases;
if( typeof(aliases) != 'undefined' ){
var notes = ["Aliases:"];
for( var n = 0 ; n < aliases.length ; n++ ){
notes.push(aliases[n].alias.replace("@archdaily.com",""));
}
sheet.getRange(1, i + 1).setNote(notes.join("\n"));
}
var finalMembers = [];
finalUsers(AdminDirectory.Members.list(groups[i] + '@archdaily.com').members, finalMembers);
finalMembers = arrUnique(finalMembers).sort();
for( var j = 0 ; j < finalMembers.length ; j++ ){
var range = sheet.getRange(j + 2, i + 1);
range.setValue(finalMembers[j].replace("@archdaily.com",""));
}
}
}
function finalUsers(members, finalMembers){
for( var i = 0 ; i < members.length ; i++ ){
if( members[i].type == 'USER' ){
finalMembers.push(members[i].email);
} else {
var subMembers = AdminDirectory.Members.list(members[i].email).members;
if( subMembers.length > 0 ){
finalUsers(subMembers, finalMembers);
}
}
}
}
function arrUnique(a){
var t = [];
for( var x = 0; x < a.length; x++ ){
if( t.indexOf(a[x]) == -1 )t.push(a[x]);
}
return t;
}