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