Auto Unassign Google Workspace License from your users

Reference script to un-assign Google Workspace licenses from users:


function removeLicense() {

   // You can also tweak the script to rather run it based on user suspention staus (by checking user.suspended property from Directory API) instead of OrgUnit membership

   // Please be careful before running this script, if run, it'll remove the license from your Google Workspace user.

   // I just created this for a quick reference, so feel free to polish it as required.

   // You would need to provide Google Workspace product name and SKU id which is currently assigned to suspended user or you can first make a get call to read license information for the user and then make delete call with it.
   // You can get this information from License Manager API documentation here
   // I will be using Google Workspace Enterprise Product Name and SKU ID as my suspended users are assigned Google Workspace enterprise license


   // Step 1. Get All users from suspended_users Organization Unit, Please change the org unit path to yours.

   var productId = "Google-Apps"
   var skuId = 1010020020

   var pageToken;
   do {
       var suspendedOu = AdminDirectory.Users.list({
           customer: "my_customer",
           query: 'orgUnitPath=/suspended_users', // change OU path here as required
           maxResults: 100,
           pageToken: pageToken

       var suspendedOuUsers = suspendedOu.users

       // Step 2. (Optional but recommended) Make sure to only suspend users from this OU who are in suspended state by checking their suspension status

       for (i = 0; i < suspendedOuUsers.length; i++) {

           if (suspendedOuUsers[i].suspended == true) {
               var suspendedUserEmail = suspendedOuUsers[i].primaryEmail

               // Step 3. Delete the license from users in our above defined suspended OU who are also in suspended user state.

               try {
                   var licenseRemovalStatus = AdminLicenseManager.LicenseAssignments.remove(productId, skuId, suspendedUserEmail)
               } catch (e) {


       pageToken = suspendedOu.nextPageToken;

       // Run the script till the time we have next set of users available as per pakeToken

   } while (pageToken);


Related Posts