Created
October 1, 2020 18:04
-
-
Save northwestcoder/2ff8aaaabeb268bb7fc5ac513404d598 to your computer and use it in GitHub Desktop.
G Suite Admin Functions
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
/* | |
Collection of apps script functions that trigger G Suite administrative calls | |
good backgrounder: | |
https://stackoverflow.com/questions/60960260/google-scripts-api-call-to-directory-members-failed-with-error-resource-not-fou | |
Appsheet companion app for this solution: | |
https://www.appsheet.com/samples/An-app-to-manage-G-Suite-users-and-group-Meant-to-be-used-in-conjunction-with-a-provided-Google-App-Script?appGuidString=7ab88075-a91c-4898-8a4f-1ca6ce2fca93 | |
*/ | |
function main(e) { | |
var theSource = e.source; | |
var theSheet = theSource.getActiveSheet(); | |
var theActiveRange = theSheet.getActiveRange(); | |
var theActiveRow = theActiveRange.getRow(); | |
requestType = theSheet.getRange(theActiveRow,4).getValue(); | |
userEmail = theSheet.getRange(theActiveRow,5).getValue(); | |
groupName = theSheet.getRange(theActiveRow,6).getValue(); | |
firstName = theSheet.getRange(theActiveRow,7).getValue(); | |
lastName = theSheet.getRange(theActiveRow,8).getValue(); | |
switch(requestType) { | |
case "Create New User": | |
// Logger.log("got to creating a new user case"); | |
passwordCreated = createNewUser(userEmail, firstName, lastName); | |
setResponse = theSheet.getRange(theActiveRow,9).setValue(passwordCreated[1]); | |
setPassword = theSheet.getRange(theActiveRow,10).setValue(passwordCreated[0]); | |
break; | |
case "Create New Group": | |
groupCreated = createNewGroup(groupName); | |
setResponse = theSheet.getRange(theActiveRow,9).setValue(groupCreated); | |
break; | |
case "Add User to Group as MEMBER": | |
membershipCreated = addGroupMember(groupName, userEmail); | |
setResponse = theSheet.getRange(theActiveRow,9).setValue(membershipCreated); | |
break; | |
case "Add User to Group as MANAGER": | |
managershipCreated = addGroupManager(groupName, userEmail); | |
setResponse = theSheet.getRange(theActiveRow,9).setValue(managershipCreated); | |
break; | |
case "Remove User from Group": | |
membershipRemoved = removeGroupMember(groupName, userEmail); | |
setResponse = theSheet.getRange(theActiveRow,9).setValue(membershipRemoved); | |
break; | |
case "Suspend User Account": | |
userSuspended = suspendUserAccount(userEmail); | |
setResponse = theSheet.getRange(theActiveRow,9).setValue(userSuspended); | |
break; | |
} | |
} | |
function createNewUser(userEmail, firstName, lastName) { | |
var response = []; | |
// Generate a random password string. | |
var password = Math.random().toString(36); | |
var user = { | |
primaryEmail: userEmail, | |
name: { | |
givenName: firstName, | |
familyName: lastName | |
}, | |
password: password | |
}; | |
try { | |
AdminDirectory.Users.insert(user) | |
logged = 'User email ' + user.primaryEmail + ' created with temp password'; | |
} catch (e) { | |
password = ""; | |
logged = e; | |
} | |
response.push(password); | |
response.push(logged); | |
return response; | |
} | |
function createNewGroup(groupName) { | |
var logged = ""; | |
var group = { | |
email: groupName | |
}; | |
try { | |
AdminDirectory.Groups.insert(group) | |
logged = 'group email ' + group.email + ' created'; | |
} catch (e) { | |
logged = e; | |
} | |
return logged; | |
} | |
function addGroupMember(groupemail, useremail) { | |
var member = { | |
email: useremail, | |
role: 'MEMBER' | |
}; | |
try { | |
member = AdminDirectory.Members.insert(member, groupemail); | |
logged = 'user ' + member.email + ' added to group ' + groupemail; | |
} | |
catch (e) { | |
logged = e; | |
} | |
return logged; | |
} | |
function addGroupManager(groupemail, useremail) { | |
var member = { | |
email: useremail, | |
role: 'MANAGER' | |
}; | |
try { | |
member = AdminDirectory.Members.insert(member, groupemail); | |
logged = 'user ' + member.email + ' added to group ' + groupemail + ' as a MANAGER'; | |
} | |
catch (e) { | |
logged = e; | |
} | |
return logged; | |
} | |
function removeGroupMember(groupemail, useremail) { | |
var removal = { | |
groupKey: groupemail, | |
memberKey: useremail | |
}; | |
try { | |
removal = AdminDirectory.Members.remove(groupemail, useremail); | |
logged = 'user ' + useremail + ' removed from group ' + groupemail; | |
} catch (e) { | |
logged = e; | |
} | |
return logged; | |
} | |
function suspendUserAccount(userEmail) { | |
var logged = ""; | |
var suspension = { | |
suspended: true | |
}; | |
try { | |
AdminDirectory.Users.update(suspension,userEmail) | |
logged = 'user ' + userEmail + ' suspended'; | |
} catch (e) { | |
logged = e; | |
} | |
return logged; | |
} | |
/* | |
// we will NOT be implementing this at present time | |
function deleteUser(useremail) { | |
try { | |
userdeletion = AdminDirectory.Users.remove(useremail); | |
Logger.log('User %s removed from domain.', useremail); | |
} catch(e) { | |
Logger.log(e); | |
} | |
} | |
*/ | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment