Skip to content

Instantly share code, notes, and snippets.

@awa2
Created April 26, 2018 05:49
Show Gist options
  • Save awa2/8405320adf20d2e922fbc04dac4ec399 to your computer and use it in GitHub Desktop.
Save awa2/8405320adf20d2e922fbc04dac4ec399 to your computer and use it in GitHub Desktop.
function getSettingAryFromApi() {
Log = new LogSheet('log');
// Stat = new LogSheet('statistics');
Log.info('[ ] - Starting getSettingAryFromApi()');
try {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName('main');
var creds = {
domain : 'c-fo.com'
};
var groups = getGroupList(creds);
var settings = getGroupSetting(groups);
// Write down to Spreadsheet
s.getRange(4,2,settings.length,settings[0].length).setValues(settings);
s.getRange(1,4).setValue(new Date());
s.getRange(2,4).setValue(settings.length);
Log.success(settings.length + ' groups processed');
} catch (error) {
Log.error(error.message);
}
return 0;
}
function getGroupList(creds){
var groupList = [];
do {
var gp = AdminDirectory.Groups.list(creds);
Array.prototype.push.apply(groupList,gp.groups);
if(gp.hasOwnProperty('nextPageToken')){
creds.pageToken = gp.nextPageToken;
}
} while (gp.nextPageToken);
return groupList;
}
function getGroupSetting(groups){
var results = [];
for (var i = 0; i < groups.length; i++) {
var group = groups[i];
var gp_setting = AdminGroupsSettings.Groups.get(group.email);
results[i] = [];
results[i].push(i.toString());
results[i].push(gp_setting.email);
results[i].push(gp_setting.name);
results[i].push(gp_setting.description);
results[i].push(gp_setting.whoCanViewMembership);
results[i].push('');
results[i].push(gp_setting.whoCanViewGroup);
results[i].push(gp_setting.whoCanPostMessage);
results[i].push(gp_setting.whoCanJoin);
results[i].push(gp_setting.allowExternalMembers);
results[i].push(gp_setting.whoCanAdd);
results[i].push('');
// Risk Evaluate
risk = 0;
if(gp_setting.whoCanViewGroup.match(/ANYONE/)){ risk = risk + 3; };
if(gp_setting.whoCanPostMessage.match(/ANYONE/)){ risk = risk + 1; };
if(gp_setting.whoCanJoin.match(/ANYONE/)){ risk = risk + 3; };
results[i].push(risk);
};
return results;
}
function LogSheet(name){
var ss = SpreadsheetApp.getActiveSpreadsheet();
this.l = ss.getSheetByName(name);
return;
}
LogSheet.prototype.info = function(mes,color){
this.l.insertRows(1);
this.l.getRange('A1').setValue(new Date());
this.l.getRange('B1').setValue(mes);
color = color ? color : 'white';
this.l.getRange('A1:B1').setBackground(color);
}
LogSheet.prototype.success = function(mes){ this.info('[+] - ' + mes,'#E9FAD9') };
LogSheet.prototype.error = function(mes){ this.info('[-] - ' + mes,'#FADBDA') };
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment