-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathgoogle_pull.gs
More file actions
83 lines (63 loc) · 3.2 KB
/
google_pull.gs
File metadata and controls
83 lines (63 loc) · 3.2 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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/*******************************************************************************************************************************************
Lists all non-suspended users in your Google Workspace
You will need to enable at least Directory API and admin SDK
https://developers.google.com/admin-sdk/directory/v1/reference/users/list
*/
// Pulls User data from the Workspace
function google_pull() {
var pageToken;
var page;
// Position in sheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var Google_pull = SpreadsheetApp.setActiveSheet(ss.getSheetByName("Google_pull"));
// Clear content except header all the way to "K" column.
Google_pull.getRange('A2:O').clear();
var lastRow = Google_pull.getRange('A1:A').getValues().filter(String).length + 1;
var index = 0;
var query = 'isSuspended=False';
// Run the request
do {
page = AdminDirectory.Users.list({
customer: 'my_customer',
query: query,
projection: 'FULL',
maxResults: 50,
orderBy: 'email',
pageToken: pageToken
});
//************************
// Assemble User's data
var params = JSON.stringify(page.users);
var data = JSON.parse(params);
// Populate sheet
if (data) {
for (var i = 0; i < data.length; i++) {
// Sheet var name, get last lost + previous content, column. Set value based on position in JSON
Google_pull.getRange(index + lastRow + i, 1).setValue(data[i].orgUnitPath);
Google_pull.getRange(index + lastRow + i, 2).setValue(data[i].name.fullName);
Google_pull.getRange(index + lastRow + i, 3).setValue(data[i].primaryEmail);
var title = (data[i] && data[i].organizations && data[i].organizations[0] && data[i].organizations[0].title) || "";
Google_pull.getRange(index + lastRow + i, 4).setValue(title);
var department = (data[i] && data[i].organizations && data[i].organizations[0] && data[i].organizations[0].department) || "";
Google_pull.getRange(index + lastRow + i, 5).setValue(department);
var manager = (data[i] && data[i].relations && data[i].relations[0] && data[i].relations[0].value) || "";
Google_pull.getRange(index + lastRow + i, 6).setValue(manager);
var Pronoun = (data[i] && data[i].customSchemas && data[i].customSchemas.Info && data[i].customSchemas.Info.Gender_pronoun) || "";
Google_pull.getRange(index + lastRow + i, 7).setValue(Pronoun);
var Building = (data[i] && data[i].locations && data[i].locations[0] && data[i].locations[0].buildingId) || "";
Google_pull.getRange(index + lastRow + i, 8).setValue(Building);
Google_pull.getRange(index + lastRow + i, 9).setValue(data[i].id);
var description = (data[i] && data[i].organizations && data[i].organizations[0] && data[i].organizations[0].description) || "";
Google_pull.getRange(index + lastRow + i, 10).setValue(description);
Google_pull.getRange(index + lastRow + i, 11).setValue(data[i].archived);
}
index += data.length;
} else {
Logger.info('No users found.');
}
pageToken = page.nextPageToken;
} while (pageToken);
// This actually posts data when it's ready sorting by 1st column
Google_pull.sort(1);
SpreadsheetApp.flush();
}