Creates a new Drive folder. To update the metadata of an existing Drive file,
including a folder, use drive_update()
.
Arguments
- name
Name for the new folder or, optionally, a path that specifies an existing parent folder, as well as the new name.
- path
Target destination for the new folder, i.e. a folder or a shared drive. Can be given as an actual path (character), a file id or URL marked with
as_id()
, or adribble
. Defaults to your "My Drive" root folder. Ifpath
is a shortcut to a folder, it is automatically resolved to its target folder.- ...
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.- overwrite
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
drive_get()
.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.
- verbose
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 helperslocal_drive_quiet()
orwith_drive_quiet()
.
Value
An object of class dribble
, a tibble with one row per file.
Examples
# Create folder named 'ghi', then another below named it 'jkl' and star it
ghi <- drive_mkdir("ghi")
#> Created Drive file:
#> • ghi <id: 1oKFLaZIh9VEsTUyzZwfpnzfdbs9ivVcP>
#> With MIME type:
#> • application/vnd.google-apps.folder
jkl <- drive_mkdir("ghi/jkl", starred = TRUE)
#> Created Drive file:
#> • jkl <id: 1ap1w-CyQKFo2uXyzHP_vjO3_S_wlpAFy>
#> With MIME type:
#> • application/vnd.google-apps.folder
# is 'jkl' really starred? YES
purrr::pluck(jkl, "drive_resource", 1, "starred")
#> [1] TRUE
# Another way to create folder 'mno' in folder 'ghi'
drive_mkdir("mno", path = "ghi")
#> Created Drive file:
#> • mno <id: 1I6Y45sl3oZNUGth3FtJNeSG1gr6N8CkF>
#> With MIME type:
#> • application/vnd.google-apps.folder
# Yet another way to create a folder named 'pqr' in folder 'ghi',
# this time with parent folder stored in a dribble,
# and setting the new folder's description
pqr <- drive_mkdir("pqr", path = ghi, description = "I am a folder")
#> Created Drive file:
#> • pqr <id: 1XY4ADte-K9DqzIWWHsPcMDP7aj4Lj3-D>
#> With MIME type:
#> • application/vnd.google-apps.folder
# Did we really set the description? YES
purrr::pluck(pqr, "drive_resource", 1, "description")
#> [1] "I am a folder"
# `overwrite = FALSE` errors if something already exists at target filepath
# THIS WILL ERROR!
drive_create("name-squatter-mkdir", path = ghi)
#> Created Drive file:
#> • name-squatter-mkdir <id: 1DEr4p-zFATFcWhx1c30mOAw9rSOjISvV>
#> With MIME type:
#> • application/octet-stream
drive_mkdir("name-squatter-mkdir", path = ghi, overwrite = FALSE)
#> Error in check_for_overwrite(params[["parents"]], params[["name"]], overwrite): 1 item already exists at the target filepath and `overwrite =
#> FALSE`:
#> • name-squatter-mkdir <id: 1DEr4p-zFATFcWhx1c30mOAw9rSOjISvV>
# `overwrite = TRUE` moves the existing item to trash, then proceeds
drive_mkdir("name-squatter-mkdir", path = ghi, overwrite = TRUE)
#> File trashed:
#> • name-squatter-mkdir <id: 1DEr4p-zFATFcWhx1c30mOAw9rSOjISvV>
#> Created Drive file:
#> • name-squatter-mkdir <id: 1a9KDiGfd_CuEcK2HzuLmZoO0jzTkFipS>
#> With MIME type:
#> • application/vnd.google-apps.folder
# list everything inside 'ghi'
drive_ls("ghi")
#> # A dribble: 4 × 3
#> name id drive_resource
#> <chr> <drv_id> <list>
#> 1 name-squatter-mkdir 1a9KDiGfd_CuEcK2HzuLmZoO0jzTkFipS <named list [33]>
#> 2 pqr 1XY4ADte-K9DqzIWWHsPcMDP7aj4Lj3-D <named list [34]>
#> 3 mno 1I6Y45sl3oZNUGth3FtJNeSG1gr6N8CkF <named list [33]>
#> 4 jkl 1ap1w-CyQKFo2uXyzHP_vjO3_S_wlpAFy <named list [33]>
# Clean up
drive_rm(ghi)
#> File deleted:
#> • ghi <id: 1oKFLaZIh9VEsTUyzZwfpnzfdbs9ivVcP>