Copy a Drive fileSource:
Copies an existing Drive file into a new file id.
drive_cp( file, path = NULL, name = NULL, ..., overwrite = NA, verbose = deprecated() )
pathis a shortcut to a folder, it is automatically resolved to its target folder.
pathis given as a path (as opposed to a
dribbleor an id), it is best to explicitly indicate if it's a folder by including a trailing slash, since it cannot always be worked out from the context of the call. By default, the new file has the same parent folder as the source file.
Character, new file name if not specified as part of
path. This will force
pathto be interpreted as a folder, even if it is character and lacks a trailing slash. Defaults to "Copy of
Named parameters to pass along to the Drive API. Has dynamic dots semantics. You can affect the metadata of the target file by specifying properties of the Files resource via
.... Read the "Request body" section of the Drive API docs for the associated endpoint to learn about relevant parameters.
Logical, indicating whether to check for a pre-existing file at the targetted "filepath". The quotes around "filepath" refer to the fact that Drive does not impose a 1-to-1 relationship between filepaths and files, like a typical file system; read more about that in
NA(default): Just do the operation, even if it results in multiple files with the same filepath.
TRUE: Check for a pre-existing file at the filepath. If there is zero or one, move a pre-existing file to the trash, then carry on. Note that the new file does not inherit any properties from the old one, such as sharing or publishing settings. It will have a new file ID. An error is thrown if two or more pre-existing files are found.
FALSE: Error if there is any pre-existing file at the filepath.
Note that existence checks, based on filepath, are expensive operations, i.e. they require additional API calls.
This logical argument to individual googledrive functions is deprecated. To globally suppress googledrive messaging, use
options(googledrive_quiet = TRUE)(the default behaviour is to emit informational messages). To suppress messaging in a more limited way, use the helpers
An object of class
dribble, a tibble with one row per file.
# Target one of the official example files (src_file <- drive_example_remote("chicken.txt")) #> # A dribble: 1 × 3 #> name id drive_resource #> <chr> <drv_id> <list> #> 1 chicken.txt 1wOLeWVRkTb6lDmLRiOhg9iKM7DlN762Y <named list > # Make a "Copy of" copy in your My Drive cp1 <- drive_cp(src_file) #> Original file: #> • chicken.txt <id: 1wOLeWVRkTb6lDmLRiOhg9iKM7DlN762Y> #> Copied to file: #> • Copy of chicken.txt <id: 1uVTsDjuUK_tVd26TtwkPueF-2sRfbVI5> # Make an explicitly named copy, in a different folder, and star it. # The starring is an example of providing metadata via `...`. # `starred` is not an actual argument to `drive_cp()`, # it just gets passed through to the API. folder <- drive_mkdir("drive-cp-folder") #> Created Drive file: #> • drive-cp-folder <id: 1YgGe6wiU0p7Kh4BDZLuPKNrxapctf2x2> #> With MIME type: #> • application/vnd.google-apps.folder cp2 <- drive_cp( src_file, path = folder, name = "chicken-cp.txt", starred = TRUE ) #> Original file: #> • chicken.txt <id: 1wOLeWVRkTb6lDmLRiOhg9iKM7DlN762Y> #> Copied to file: #> • drive-cp-folder/chicken-cp.txt <id: 1HOXUN7dptiLJoYz52G4eXx5HuETxJDVS> drive_reveal(cp2, "starred") #> # A dribble: 1 × 4 #> name starred id drive_resource #> <chr> <lgl> <drv_id> <list> #> 1 chicken-cp.txt TRUE 1HOXUN7dptiLJoYz52G4eXx5HuETxJDVS <named list> # `overwrite = FALSE` errors if file already exists at target filepath # THIS WILL ERROR! # drive_cp(src_file, name = "Copy of chicken.txt", overwrite = FALSE) # `overwrite = TRUE` moves an existing file to trash, then proceeds cp3 <- drive_cp(src_file, name = "Copy of chicken.txt", overwrite = TRUE) #> File trashed: #> • Copy of chicken.txt <id: 1uVTsDjuUK_tVd26TtwkPueF-2sRfbVI5> #> Original file: #> • chicken.txt <id: 1wOLeWVRkTb6lDmLRiOhg9iKM7DlN762Y> #> Copied to file: #> • Copy of chicken.txt <id: 1JKQk1smc5VK_GAXH-nRHlXz_Hi61VYG2> # Delete all of our copies and the new folder! drive_rm(cp1, cp2, cp3, folder) #> Files deleted: #> • Copy of chicken.txt <id: 1uVTsDjuUK_tVd26TtwkPueF-2sRfbVI5> #> • chicken-cp.txt <id: 1HOXUN7dptiLJoYz52G4eXx5HuETxJDVS> #> • Copy of chicken.txt <id: 1JKQk1smc5VK_GAXH-nRHlXz_Hi61VYG2> #> • drive-cp-folder <id: 1YgGe6wiU0p7Kh4BDZLuPKNrxapctf2x2> # Target an official example file that's a csv file (csv_file <- drive_example_remote("chicken.csv")) #> # A dribble: 1 × 3 #> name id drive_resource #> <chr> <drv_id> <list> #> 1 chicken.csv 1VOh6wWbRfuQLxbLg87o58vxJt95SIiZ7 <named list > # copy AND AT THE SAME TIME convert it to a Google Sheet chicken_sheet <- drive_cp( csv_file, name = "chicken-sheet-copy", mime_type = drive_mime_type("spreadsheet") ) #> Original file: #> • chicken.csv <id: 1VOh6wWbRfuQLxbLg87o58vxJt95SIiZ7> #> Copied to file: #> • chicken-sheet-copy <id: 1y6-wucM12p90yt-6CXHJedPmOqk2noQZWYNKW2h-IAo> # is it really a Google Sheet? drive_reveal(chicken_sheet, "mime_type")$mime_type #>  "application/vnd.google-apps.spreadsheet" # go see the new Sheet in the browser # drive_browse(chicken_sheet) # clean up drive_rm(chicken_sheet) #> File deleted: #> • chicken-sheet-copy <id: 1y6-wucM12p90yt-6CXHJedPmOqk2noQZWYNKW2h-IAo>