Sample code for 30+ languages & platforms
Tcl

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

Tcl

load ./chilkat.dll

set success 0

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

set gAuth [new_CkAuthGoogle]

CkAuthGoogle_put_AccessToken $gAuth "GOOGLE-DRIVE-ACCESS-TOKEN"

set rest [new_CkRest]

# Connect using TLS.
set bAutoReconnect 1
set success [CkRest_Connect $rest "www.googleapis.com" 443 1 $bAutoReconnect]

# Provide the authentication credentials (i.e. the access token)
CkRest_SetAuthGoogle $rest $gAuth

# Get 10 results per page for testing.  (The default page size is 100, with a max of 1000.
CkRest_AddQueryParam $rest "pageSize" "10"

set json [new_CkJsonObject]

# Send the request for the 1st page.
set jsonResponse [CkRest_fullRequestNoBody $rest "GET" "/drive/v3/files"]

set pageNumber 1

set bContinueLoop [expr [CkRest_get_LastMethodSuccess $rest]  &&  [[CkRest_get_ResponseStatusCode $rest] == 200]]

set saFileIds [new_CkStringArray]

while {$bContinueLoop == 1} {

    puts "---- Page $pageNumber ----"
    CkJsonObject_Load $json $jsonResponse

    set numFiles [CkJsonObject_SizeOfArray $json "files"]
    set i 0
    while {$i < $numFiles} {
        CkJsonObject_put_I $json $i
        set fileId [CkJsonObject_stringOf $json "files[i].id"]
        puts "name: [CkJsonObject_stringOf $json {files[i].name}]"
        puts "id: $fileId"
        CkStringArray_Append $saFileIds $fileId
        set i [expr $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.
    set pageToken [CkJsonObject_stringOf $json "nextPageToken"]
    set bContinueLoop 0
    set bHasMorePages [CkJsonObject_get_LastMethodSuccess $json]
    if {$bHasMorePages == 1} then {
        CkRest_ClearAllQueryParams $rest
        CkRest_AddQueryParam $rest "pageSize" "10"
        CkRest_AddQueryParam $rest "pageToken" $pageToken
        set jsonResponse [CkRest_fullRequestNoBody $rest "GET" "/drive/v3/files"]
        set bContinueLoop [expr [CkRest_get_LastMethodSuccess $rest]  &&  [[CkRest_get_ResponseStatusCode $rest] == 200]]
        set pageNumber [expr $pageNumber + 1]
    }

}

# Before actually deleting, check for errors...
if {[CkRest_get_LastMethodSuccess $rest] != 1} then {
    puts [CkRest_lastErrorText $rest]
    delete_CkAuthGoogle $gAuth
    delete_CkRest $rest
    delete_CkJsonObject $json
    delete_CkStringArray $saFileIds
    exit
}

# A successful response will have a status code equal to 200.
if {[CkRest_get_ResponseStatusCode $rest] != 200} then {
    puts "response status code = [CkRest_get_ResponseStatusCode $rest]"
    puts "response status text = [CkRest_responseStatusText $rest]"
    puts "response header: [CkRest_responseHeader $rest]"
    puts "response JSON: $jsonResponse"
    delete_CkAuthGoogle $gAuth
    delete_CkRest $rest
    delete_CkJsonObject $json
    delete_CkStringArray $saFileIds
    exit
}

# OK, we have the full list of files.  Delete each..
set sbPath [new_CkStringBuilder]

set numFiles [CkStringArray_get_Count $saFileIds]
set i 0
while {$i < $numFiles} {
    set fileId [CkStringArray_getString $saFileIds $i]

    CkRest_ClearAllQueryParams $rest

    CkStringBuilder_Clear $sbPath
    CkStringBuilder_Append $sbPath "/drive/v3/files/"
    CkStringBuilder_Append $sbPath $fileId

    set jsonResponse [CkRest_fullRequestNoBody $rest "DELETE" [CkStringBuilder_getAsString $sbPath]]
    if {[CkRest_get_LastMethodSuccess $rest] != 1} then {
        puts [CkRest_lastErrorText $rest]
        delete_CkAuthGoogle $gAuth
        delete_CkRest $rest
        delete_CkJsonObject $json
        delete_CkStringArray $saFileIds
        delete_CkStringBuilder $sbPath
        exit
    }

    # 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 {[CkRest_get_ResponseStatusCode $rest] != 204} then {
        puts "response status code = [CkRest_get_ResponseStatusCode $rest]"
        puts "response status text = [CkRest_responseStatusText $rest]"
        puts "response header: [CkRest_responseHeader $rest]"
        puts "response JSON: $jsonResponse"
        delete_CkAuthGoogle $gAuth
        delete_CkRest $rest
        delete_CkJsonObject $json
        delete_CkStringArray $saFileIds
        delete_CkStringBuilder $sbPath
        exit
    }

    set i [expr $i + 1]
    puts "$i: Deleted $fileId"
}

puts "All Files Deleted."

delete_CkAuthGoogle $gAuth
delete_CkRest $rest
delete_CkJsonObject $json
delete_CkStringArray $saFileIds
delete_CkStringBuilder $sbPath