Created
October 1, 2014 13:24
-
-
Save sebnash/65cd1b75e11fe3566309 to your computer and use it in GitHub Desktop.
Google Apps Group memberships
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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