PowerBuilder
PowerBuilder
Search for Files in Google Drive
See more Google Drive Examples
This example follows the same methodology for listing all files in Google Drive in pages, but applies a search filter. It shows how to apply a query parameter for filtering the file results. See the Google Drive Files list for more optional HTTP parameters.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
integer li_BHasMorePages
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 5 results per page for testing. (The default page size is 100, with a max of 1000.
loo_Rest.AddQueryParam("pageSize","5")
// Our search filter is to list all files containing ".jpg" (i.e. all JPG image files)
loo_Rest.AddQueryParam("q","name contains '.jpg'")
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)
do while li_BContinueLoop = 1
Write-Debug "---- Page " + string(li_PageNumber) + " ----"
// Iterate over each file in the response and show the name, id, and mimeType.
loo_Json.Load(ls_JsonResponse)
li_NumFiles = loo_Json.SizeOfArray("files")
i = 0
do while i < li_NumFiles
loo_Json.I = i
Write-Debug "name: " + loo_Json.StringOf("files[i].name")
Write-Debug "id: " + loo_Json.StringOf("files[i].id")
Write-Debug "mimeType: " + loo_Json.StringOf("files[i].mimeType")
Write-Debug "-"
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","5")
loo_Rest.AddQueryParam("pageToken",ls_PageToken)
loo_Rest.AddQueryParam("q","name contains '.jpg'")
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
if loo_Rest.LastMethodSuccess <> 1 then
Write-Debug loo_Rest.LastErrorText
destroy loo_GAuth
destroy loo_Rest
destroy loo_Json
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
return
end if
destroy loo_GAuth
destroy loo_Rest
destroy loo_Json