Retrieves metadata for files specified via path
or via file id
. This
function is quite straightforward if you specify files by id
. But there are
some important considerations when you specify your target files by path
.
See below for more. If the target files are specified via path
, the
returned dribble
will include a path
column.
drive_get(
path = NULL,
id = NULL,
shared_drive = NULL,
corpus = NULL,
verbose = deprecated(),
team_drive = deprecated()
)
Character vector of path(s) to get. Use a trailing slash to
indicate explicitly that a path is a folder, which can disambiguate if
there is a file of the same name (yes this is possible on Drive!). If
path
appears to contain Drive URLs or is explicitly marked with
as_id()
, it is treated as if it was provided via the id
argument.
Character vector of Drive file ids or URLs (it is first processed
with as_id()
). If both path
and id
are non-NULL
, id
is silently
ignored.
Anything that identifies one specific shared drive: its
name, its id or URL marked with as_id()
, or a dribble
. The value
provided to shared_drive
is pre-processed with as_shared_drive()
. Read
more about shared drives.
Character, specifying which collections of items to search.
Relevant to those who work with shared drives and/or Google Workspace
domains. If specified, must be one of "user"
, "drive"
(requires that
shared_drive
also be specified), "allDrives"
, or "domain"
. Read more
about shared drives.
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 local_drive_quiet()
or
with_drive_quiet()
.
Google Drive and the
Drive API have replaced Team Drives with shared drives.
An object of class dribble
, a tibble with one row per file.
If the target files were specified via path
,
there will be a path
column.
path
Google Drive does NOT behave like your local file system! File and folder names need not be unique, even at a given level of the hierarchy. This means that a single path can describe multiple files (or 0 or exactly 1).
A single file can also be compatible with multiple paths, i.e. one path
could be more specific than the other. A file located at ~/alfa/bravo
can
be found as bravo
, alfa/bravo
, and ~/alfa/bravo
. If all 3 of those
were included in the input path
, they would be represented by a
single row in the output.
It's best to think of drive_get()
as a setwise operation when using file
paths. Do not assume that the i
-th input path corresponds to row i
in
the output (although it often does!). If there's not a 1-to-1 relationship
between the input and output, this will be announced in a message.
drive_get()
performs just enough path resolution to uniquely identify a
file compatible with each input path
, for all path
s at once. If you
absolutely want the full canonical path, run the output of drive_get()
through drive_reveal(d, "path")
`.
If you want to get a file via path
and it's not necessarily on your My
Drive, you may need to specify the shared_drive
or corpus
arguments to
search other collections of items. Read more about shared drives.
To add path information to any dribble
that lacks it, use
drive_reveal(d, "path")
. To list the contents of a
folder, use drive_ls()
. For general searching, use drive_find()
.
Wraps the files.get
endpoint and, if you specify files by name or
path, also calls files.list
:
if (FALSE) { # drive_has_token()
# get info about your "My Drive" root folder
drive_get("~/")
# the API reserves the file id "root" for your root folder
drive_get(id = "root")
drive_get(id = "root") %>% drive_reveal("path")
# set up some files to get by path
alfalfa <- drive_mkdir("alfalfa")
broccoli <- drive_upload(
drive_example_local("chicken.txt"),
name = "broccoli", path = alfalfa
)
drive_get("broccoli")
drive_get("alfalfa/broccoli")
drive_get("~/alfalfa/broccoli")
drive_get(c("broccoli", "alfalfa/", "~/alfalfa/broccoli"))
# Clean up
drive_rm(alfalfa)
if (FALSE) { # \dontrun{
# The examples below are indicative of correct syntax.
# But note these will generally result in an error or a
# 0-row dribble, unless you replace the inputs with paths
# or file ids that exist in your Drive.
# multiple names
drive_get(c("abc", "def"))
# multiple names, one of which must be a folder
drive_get(c("abc", "def/"))
# query by file id(s)
drive_get(id = "abcdefgeh123456789")
drive_get(as_id("abcdefgeh123456789"))
drive_get(id = c("abcdefgh123456789", "jklmnopq123456789"))
# apply to a browser URL for, e.g., a Google Sheet
my_url <- "https://docs.google.com/spreadsheets/d/FILE_ID/edit#gid=SHEET_ID"
drive_get(my_url)
drive_get(as_id(my_url))
drive_get(id = my_url)
# access the shared drive named "foo"
# shared_drive params must be specified if getting by path
foo <- shared_drive_get("foo")
drive_get(c("this.jpg", "that-file"), shared_drive = foo)
# shared_drive params are not necessary if getting by id
drive_get(as_id("123456789"))
# search all shared drives and other files user has accessed
drive_get(c("this.jpg", "that-file"), corpus = "allDrives")
} # }
}