PowerBuilder
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
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