Sample code for 30+ languages & platforms
PowerBuilder

Delete All Files

See more Google Drive Examples

Permanently deletes all files owned by the user without moving it to the trash.

This example works by first getting a list of all fileIds, and then iterating over the list to delete each file.

See Google Drive Files delete for more information.

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_GAuth
oleobject loo_Rest
integer li_BAutoReconnect
oleobject loo_Json
integer i
integer li_NumFiles
string ls_JsonResponse
integer li_PageNumber
string ls_PageToken
integer li_BContinueLoop
string ls_FileId
oleobject loo_SaFileIds
integer li_BHasMorePages
oleobject loo_SbPath

li_Success = 0

li_Success = 1

// It requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

// This example uses a previously obtained access token having permission for the 
// Google Drive scope.

loo_GAuth = create oleobject
li_rc = loo_GAuth.ConnectToNewObject("Chilkat.AuthGoogle")
if li_rc < 0 then
    destroy loo_GAuth
    MessageBox("Error","Connecting to COM object failed")
    return
end if
loo_GAuth.AccessToken = "GOOGLE-DRIVE-ACCESS-TOKEN"

loo_Rest = create oleobject
li_rc = loo_Rest.ConnectToNewObject("Chilkat.Rest")

// Connect using TLS.
li_BAutoReconnect = 1
li_Success = loo_Rest.Connect("www.googleapis.com",443,1,li_BAutoReconnect)

// Provide the authentication credentials (i.e. the access token)
loo_Rest.SetAuthGoogle(loo_GAuth)

// Get 10 results per page for testing.  (The default page size is 100, with a max of 1000.
loo_Rest.AddQueryParam("pageSize","10")

loo_Json = create oleobject
li_rc = loo_Json.ConnectToNewObject("Chilkat.JsonObject")

// Send the request for the 1st page.
ls_JsonResponse = loo_Rest.FullRequestNoBody("GET","/drive/v3/files")

li_PageNumber = 1

li_BContinueLoop = loo_Rest.LastMethodSuccess AND (loo_Rest.ResponseStatusCode = 200)

loo_SaFileIds = create oleobject
li_rc = loo_SaFileIds.ConnectToNewObject("Chilkat.StringArray")

do while li_BContinueLoop = 1

    Write-Debug "---- Page " + string(li_PageNumber) + " ----"
    loo_Json.Load(ls_JsonResponse)

    li_NumFiles = loo_Json.SizeOfArray("files")
    i = 0
    do while i < li_NumFiles
        loo_Json.I = i
        ls_FileId = loo_Json.StringOf("files[i].id")
        Write-Debug "name: " + loo_Json.StringOf("files[i].name")
        Write-Debug "id: " + ls_FileId
        loo_SaFileIds.Append(ls_FileId)
        i = i + 1
    loop

    // Get the next page of files.
    // If the "nextPageToken" is present in the JSON response, then use it in the "pageToken" parameter
    // for the next request.   If no "nextPageToken" was present, then this was the last page of files.
    ls_PageToken = loo_Json.StringOf("nextPageToken")
    li_BContinueLoop = 0
    li_BHasMorePages = loo_Json.LastMethodSuccess
    if li_BHasMorePages = 1 then
        loo_Rest.ClearAllQueryParams()
        loo_Rest.AddQueryParam("pageSize","10")
        loo_Rest.AddQueryParam("pageToken",ls_PageToken)
        ls_JsonResponse = loo_Rest.FullRequestNoBody("GET","/drive/v3/files")
        li_BContinueLoop = loo_Rest.LastMethodSuccess AND (loo_Rest.ResponseStatusCode = 200)
        li_PageNumber = li_PageNumber + 1
    end if

loop

// Before actually deleting, check for errors...
if loo_Rest.LastMethodSuccess <> 1 then
    Write-Debug loo_Rest.LastErrorText
    destroy loo_GAuth
    destroy loo_Rest
    destroy loo_Json
    destroy loo_SaFileIds
    return
end if

// A successful response will have a status code equal to 200.
if loo_Rest.ResponseStatusCode <> 200 then
    Write-Debug "response status code = " + string(loo_Rest.ResponseStatusCode)
    Write-Debug "response status text = " + loo_Rest.ResponseStatusText
    Write-Debug "response header: " + loo_Rest.ResponseHeader
    Write-Debug "response JSON: " + ls_JsonResponse
    destroy loo_GAuth
    destroy loo_Rest
    destroy loo_Json
    destroy loo_SaFileIds
    return
end if

// OK, we have the full list of files.  Delete each..
loo_SbPath = create oleobject
li_rc = loo_SbPath.ConnectToNewObject("Chilkat.StringBuilder")

li_NumFiles = loo_SaFileIds.Count
i = 0
do while i < li_NumFiles
    ls_FileId = loo_SaFileIds.GetString(i)

    loo_Rest.ClearAllQueryParams()

    loo_SbPath.Clear()
    loo_SbPath.Append("/drive/v3/files/")
    loo_SbPath.Append(ls_FileId)

    ls_JsonResponse = loo_Rest.FullRequestNoBody("DELETE",loo_SbPath.GetAsString())
    if loo_Rest.LastMethodSuccess <> 1 then
        Write-Debug loo_Rest.LastErrorText
        destroy loo_GAuth
        destroy loo_Rest
        destroy loo_Json
        destroy loo_SaFileIds
        destroy loo_SbPath
        return
    end if

    // A successful response will have a status code equal to 204 and the response body is empty.
    // (If not successful, then there should be a JSON response body with information..)
    if loo_Rest.ResponseStatusCode <> 204 then
        Write-Debug "response status code = " + string(loo_Rest.ResponseStatusCode)
        Write-Debug "response status text = " + loo_Rest.ResponseStatusText
        Write-Debug "response header: " + loo_Rest.ResponseHeader
        Write-Debug "response JSON: " + ls_JsonResponse
        destroy loo_GAuth
        destroy loo_Rest
        destroy loo_Json
        destroy loo_SaFileIds
        destroy loo_SbPath
        return
    end if

    i = i + 1
    Write-Debug string(i) + ": Deleted " + ls_FileId
loop

Write-Debug "All Files Deleted."


destroy loo_GAuth
destroy loo_Rest
destroy loo_Json
destroy loo_SaFileIds
destroy loo_SbPath