Google Workspace Unassign License Script
Play Video

Watch the video to understand how the script works
(then copy the script below)

Reference Script to unassign Google Workspace license from your 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 
    // https://developers.google.com/admin-sdk/directory/v1/reference/users
    // 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) {
                    Logger.log(e.message)
                }

            }

        }
        pageToken = suspendedOu.nextPageToken;


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

    } while (pageToken);
}				
			

You can learn more about Google License Manager API at https://developers.google.com/admin-sdk/licensing/v1/reference