Skip to content

Instantly share code, notes, and snippets.

@sebnash
Created October 1, 2014 13:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sebnash/7b564286144daa2640e5 to your computer and use it in GitHub Desktop.
Save sebnash/7b564286144daa2640e5 to your computer and use it in GitHub Desktop.
Google Apps Users’ memberships
/**
* This script populates the "Users" sheet with all DomainUsers and Groups they are members of
*
* Uses: https://developers.google.com/apps-script/reference/domain/user-manager
* https://developers.google.com/apps-script/reference/domain/groups-manager
* https://plus.google.com/+EricKoleda/posts/ThnVjUgU3E9 (Moment.js Library)
*
* A Time-Driven Trigger (hourly, roughly top of the hour) updates the "Users" sheet
* 'On Open' the "META" sheet is updated, showing when the data was last refreshed
*/
function updateMETA() {
var moment = Moment.load();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('META');
sheet.clear();
sheet.appendRow(['This spreadsheet updates hourly'])
sheet.appendRow(['Last updated: ' + moment(ScriptProperties.getProperty('lastUpdate')).fromNow()]);
sheet.appendRow(['See "Users" ↓ sheet for results']);
sheet.autoResizeColumn(1);
ss.setActiveSheet(sheet);
}
function updateUsers() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Users').clear();
recordUserMemberships(sheet);
}
function recordUserMemberships(sheet) {
var users = UserManager.getAllUsers();
for (var i in users) {
var groups = GroupsManager.getAllGroups(users[i].getEmail());
var groupsList = [];
for (var j in groups) {
groupsList.push(groups[j].getId().replace(/@rapha\.cc$/i, ''));
}
groupsList.sort();
sheet.appendRow([users[i].getGivenName() +' '+ users[i].getFamilyName(), groupsList.join(', ')]);
}
sheet.autoResizeColumn(1);
sheet.autoResizeColumn(2);
ScriptProperties.setProperty('lastUpdate', new Date());
updateMETA();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment