Search code examples
google-admin-sdkchromebookgoogle-admin-settings-api

Reset a Managed Chrome Device with SDK using Google Apps Script


I'm attempting to create a dashboard for admins to allow them to reset a chrome device managed by GoogleAdmin using google apps script.

I don't see any way to perform a reset using Admin SDK API. Can this be done?


Solution

  • If you want to deprovision and/or disable a ChromeOS device

    The supported actions when using the Directory API, according to the documentation here are:

    deprovision: Remove a device from management that is no longer active, being resold, or is being submitted for return / repair, use the deprovision action to dissociate it from management.

    disable: If you believe a device in your organization has been lost or stolen, you can disable the device so that no one else can use it. When a device is disabled, all the user can see when turning on the Chrome device is a screen telling them that it’s been disabled, and your desired contact information of where to return the device.

    Taking this into account, this is how the request would look like:

    POST https://admin.googleapis.com/admin/directory/v1/customer/{customerId}/devices/chromeos/{resourceId}/action
    

    If you want to reboot and/or remote powerwash a ChromeOS device

    However, if you simply plan on doing a powerwash or a reboot, you can make use of the below information:

    REBOOT: Reboot the device. Can only be issued to Kiosk and managed guest session devices.

    REMOTE_POWERWASH: Wipes the device by performing a power wash. Executing this command in the device will remove all data including user policies, device policies and enrollment policies. Warning: This will revert the device back to a factory state with no enrollment unless the device is subject to forced or auto enrollment. Use with caution, as this is an irreversible action!

    Taking this into account, this is how the request would look like:

    POST https://admin.googleapis.com/admin/directory/v1/customer/{customerId}/devices/chromeos/{deviceId}:issueCommand
    

    Apps Script

    As for applying any of these in Apps Script, you will have to add the Admin SDK API advanced service and choose the directory _v1 version and simulate any of the above requests.

    directory api advanced service

    Code

    Assuming you want to remote powerwash a device, you will have to write something similar to this:

    let resource = {
        YOUR_RESOURCE_HERE;
        "commandType": "REMOTE_POWERWASH"
    };
    let customerId = 'CUSTOMER_ID';
    let deviceId = 'DEVICE_ID';
    AdminDirectory.Customer.Devices.Chromeos.issueCommand(resource, customerId, deviceId);
    

    Not what you are looking for?

    You can simply create a feature request on Google's Issue Tracker and provide the details with regards to your task by filling in the form here.

    Reference