Sample code for 30+ languages & platforms
Perl

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 Perl Downloads

Perl
use chilkat();

$success = 0;

$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.

$gAuth = chilkat::CkAuthGoogle->new();
$gAuth->put_AccessToken("GOOGLE-DRIVE-ACCESS-TOKEN");

$rest = chilkat::CkRest->new();

# Connect using TLS.
$bAutoReconnect = 1;
$success = $rest->Connect("www.googleapis.com",443,1,$bAutoReconnect);

# Provide the authentication credentials (i.e. the access token)
$rest->SetAuthGoogle($gAuth);

# Get 5 results per page for testing.  (The default page size is 100, with a max of 1000.
$rest->AddQueryParam("pageSize","5");

# Our search filter is to list all files containing ".jpg" (i.e. all JPG image files)
$rest->AddQueryParam("q","name contains '.jpg'");

$json = chilkat::CkJsonObject->new();

# Send the request for the 1st page.
$jsonResponse = $rest->fullRequestNoBody("GET","/drive/v3/files");

$pageNumber = 1;

$bContinueLoop = $rest->get_LastMethodSuccess() and ($rest->get_ResponseStatusCode() == 200);

while ($bContinueLoop == 1) {

    print "---- Page " . $pageNumber . " ----" . "\r\n";

    # Iterate over each file in the response and show the name, id, and mimeType.
    $json->Load($jsonResponse);

    $numFiles = $json->SizeOfArray("files");
    $i = 0;
    while ($i < $numFiles) {
        $json->put_I($i);
        print "name: " . $json->stringOf("files[i].name") . "\r\n";
        print "id: " . $json->stringOf("files[i].id") . "\r\n";
        print "mimeType: " . $json->stringOf("files[i].mimeType") . "\r\n";
        print "-" . "\r\n";
        $i = $i + 1;
    }

    # 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.
    $pageToken = $json->stringOf("nextPageToken");
    $bContinueLoop = 0;
    $bHasMorePages = $json->get_LastMethodSuccess();
    if ($bHasMorePages == 1) {
        $rest->ClearAllQueryParams();
        $rest->AddQueryParam("pageSize","5");
        $rest->AddQueryParam("pageToken",$pageToken);
        $rest->AddQueryParam("q","name contains '.jpg'");

        $jsonResponse = $rest->fullRequestNoBody("GET","/drive/v3/files");
        $bContinueLoop = $rest->get_LastMethodSuccess() and ($rest->get_ResponseStatusCode() == 200);
        $pageNumber = $pageNumber + 1;
    }

}

if ($rest->get_LastMethodSuccess() != 1) {
    print $rest->lastErrorText() . "\r\n";
    exit;
}

# A successful response will have a status code equal to 200.
if ($rest->get_ResponseStatusCode() != 200) {
    print "response status code = " . $rest->get_ResponseStatusCode() . "\r\n";
    print "response status text = " . $rest->responseStatusText() . "\r\n";
    print "response header: " . $rest->responseHeader() . "\r\n";
    print "response JSON: " . $jsonResponse . "\r\n";
    exit;
}