Skip to content

Instantly share code, notes, and snippets.

@sebnash
Created October 1, 2014 13:24
Show Gist options
  • Save sebnash/65cd1b75e11fe3566309 to your computer and use it in GitHub Desktop.
Save sebnash/65cd1b75e11fe3566309 to your computer and use it in GitHub Desktop.
Google Apps Group memberships
/**
* This script generates a sheet for each DomainGroup and populates with the current group members
*
* Uses: 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 'Group' sheets
* '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 sheets ↓ for results']);
sheet.autoResizeColumn(1);
ss.setActiveSheet(sheet);
}
function updateGroups() {
clearSpreadsheet();
recordGroupsMembers();
}
function clearSpreadsheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
sheets.shift(); // don't delete the "META" sheet
for (var i in sheets) {
ss.deleteSheet(sheets[i]);
}
}
function recordGroupsMembers() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var groups = GroupsManager.getAllGroups();
for (var i in groups) {
ss.insertSheet(groups[i].getId().replace(/@rapha\.cc$/i, ''));
var members = groups[i].getAllMembers();
for (var j in members) {
var sheet = SpreadsheetApp.getActiveSheet();
sheet.appendRow([members[j].replace(/@rapha\.cc$/i, '')]);
}
SpreadsheetApp.getActiveSheet().deleteColumns(2, 19);
SpreadsheetApp.getActiveSheet().autoResizeColumn(1);
}
ScriptProperties.setProperty('lastUpdate', new Date());
updateMETA();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment