function doGet() {
return HtmlService.createHtmlOutputFromFile('index.html').setTitle('Google Group Directory Unlister');
}
function test_() {
//var groups = getAllGroups();
//console.log(JSON.stringify(groups));
//console.log(showGroupInDirectory("group@yourdomain.com", false));
//console.log(getGroupSettings("group@yourdomain.com"));
}
// https://developers.google.com/apps-script/advanced/admin-sdk-directory#list_all_groups
function getAllGroups() {
let groups = [];
let pageToken, page;
do {
page = AdminDirectory.Groups.list({
"domain": "yourdomain.com",
"pageToken": pageToken
});
if (page.groups) {
groups = groups.concat(page.groups);
} else {
throw 'No groups found on this check.'; // shouldn't be possible
}
pageToken = page.nextPageToken;
} while (pageToken);
return groups;
}
function showGroupInDirectory(groupId, showInDirectory) {
let re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
if (!groupId || typeof groupId != "string" || !re.test(groupId.toLowerCase())) {
throw 'Please call this function with a Google Group ID';
}
if (showInDirectory == null) {
showInDirectory = "true";
}
showInDirectory = showInDirectory.toString();
if (showInDirectory != "true" && showInDirectory != 'false') {
throw 'Please call this function with a boolean. Do you want this group to show in the directory or not?';
}
// okay. we now have a valid email address for the group id, and if we do or don't want it to be in the directory.
// get the group object
var group = AdminGroupsSettings.Groups.get(groupId);
// update it's "included in the list" property
group.includeInGlobalAddressList = showInDirectory;
// then patch the group with it's new setting
AdminGroupsSettings.Groups.patch(group, groupId);
return group;
}
function getGroupSettings(groupId) {
let re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
if (!groupId || typeof groupId != 'string' || !re.test(groupId.toLowerCase())) {
throw 'Please call this function with a Google Group ID';
}
return AdminGroupsSettings.Groups.get(groupId);
}