检索通过 path
或通过文件 id
指定的文件的元数据。如果您通过 id
指定文件,则此函数非常简单。但是,当您通过 path
指定目标文件时,有一些重要的注意事项。请参阅下文了解更多信息。如果通过 path
指定目标文件,则返回的 dribble
将包含 path
列。
用法
drive_get(
path = NULL,
id = NULL,
shared_drive = NULL,
corpus = NULL,
verbose = deprecated(),
team_drive = deprecated()
)
参数
- path
-
要获取的路径的字符向量。使用尾部斜杠明确指示路径是文件夹,如果存在同名文件,可以消除歧义(是的,这在云端硬盘上是可能的!)。如果
path
似乎包含云端硬盘 URL 或显式标记为as_id()
,则将其视为通过id
参数提供。 - id
-
云端硬盘文件 ID 或 URL 的字符向量(首先使用
as_id()
进行处理)。如果path
和id
都不是NULL
,则id
将被静默忽略。 - shared_drive
-
标识一个特定共享驱动器的任何内容:其名称、其 ID 或标有
as_id()
或dribble
的 URL。提供给shared_drive
的值使用as_shared_drive()
进行预处理。了解更多关于shared drives的信息。 - corpus
-
字符,指定要搜索的项目集合。与使用共享云端硬盘和/或 Google Workspace 网域的人员相关。如果指定,则必须是
"user"
、"drive"
(要求还指定shared_drive
)、"allDrives"
或"domain"
之一。了解更多关于shared drives的信息。 - verbose
-
这种对各个 googledrive 函数的逻辑论证已被弃用。要全局禁止 googledrive 消息传递,请使用
options(googledrive_quiet = TRUE)
(默认行为是发出信息性消息)。要以更有限的方式抑制消息传递,请使用帮助程序local_drive_quiet()
或者with_drive_quiet()
. - team_drive
-
Google Drive 和 Drive API 已用共享云端硬盘取代了团队云端硬盘。
值
dribble
类的对象,每个文件一行的 tibble。如果通过 path
指定目标文件,则会有 path
列。
通过获取path
Google Drive 的行为方式与您的本地文件系统不同!文件和文件夹名称不必是唯一的,即使在给定的层次结构级别也是如此。这意味着单个路径可以说明多个文件(或 0 个或恰好 1 个)。
单个文件还可以与多个路径兼容,即一个路径可以比另一个路径更具体。位于 ~/alfa/bravo
的文件可以作为 bravo
、 alfa/bravo
和 ~/alfa/bravo
找到。如果所有这 3 个都包含在输入 path
中,则它们将在输出中由一行表示。
使用文件路径时,最好将 drive_get()
视为设置操作。不要假设第 i
输入路径对应于输出中的行 i
(尽管经常如此!)。如果输入和输出之间不存在一对一的关系,则会在消息中宣布。
drive_get()
执行足够的路径解析来唯一标识与每个输入 path
兼容的文件,对于所有 path
一次。如果您绝对想要完整的规范路径,请运行 drive_get()
到 drive_reveal(d, "path")
` 的输出。
不属于您的文件
如果您想通过 path
获取文件,并且该文件不一定位于您的“我的云端硬盘”上,则您可能需要指定 shared_drive
或 corpus
参数来搜索其他项目集合。了解更多关于shared drives的信息。
也可以看看
要将路径信息添加到任何缺少路径信息的 dribble
,请使用 drive_reveal(d, "path")
。要列出文件夹的内容,请使用 drive_ls()
。对于一般搜索,请使用 drive_find()
。
包装 files.get
端点,如果您按名称或路径指定文件,还会调用 files.list
:
例子
# get info about your "My Drive" root folder
drive_get("~/")
#> ✔ The input `path` resolved to exactly 1 file.
#> # A dribble: 1 × 4
#> name path id drive_resource
#> <chr> <chr> <drv_id> <list>
#> 1 My Drive ~/ 0AO_RMaBzcP63Uk9PVA <named list [31]>
# the API reserves the file id "root" for your root folder
drive_get(id = "root")
#> # A dribble: 1 × 3
#> name id drive_resource
#> <chr> <drv_id> <list>
#> 1 My Drive 0AO_RMaBzcP63Uk9PVA <named list [31]>
drive_get(id = "root") %>% drive_reveal("path")
#> # A dribble: 1 × 4
#> name path id drive_resource
#> <chr> <chr> <drv_id> <list>
#> 1 My Drive ~/ 0AO_RMaBzcP63Uk9PVA <named list [31]>
# set up some files to get by path
alfalfa <- drive_mkdir("alfalfa")
#> Created Drive file:
#> • alfalfa <id: 1ihWThx8L2kRtnhLAIuN9fX2QV1_qnrdR>
#> With MIME type:
#> • application/vnd.google-apps.folder
broccoli <- drive_upload(
drive_example_local("chicken.txt"),
name = "broccoli", path = alfalfa
)
#> Local file:
#> • /home/runner/work/_temp/Library/googledrive/extdata/example_files/chicken.txt
#> Uploaded into Drive file:
#> • broccoli <id: 191yJH2qNolW8EG5dtnny-P4AgVOCV_q->
#> With MIME type:
#> • text/plain
drive_get("broccoli")
#> ! Problem with 1 path: path is compatible with more than 1 file
#> broccoli
#> ! No path resolved to exactly 1 file.
#> # A dribble: 2 × 4
#> name path id drive_resource
#> <chr> <chr> <drv_id> <list>
#> 1 broccoli broccoli 191yJH2qNolW8EG5dtnny-P4AgVOCV_q- <named list [41]>
#> 2 broccoli broccoli 1aNh9_YiunRSwgmopO5hZJgusiZQh1Ii7 <named list [42]>
drive_get("alfalfa/broccoli")
#> ✔ The input `path` resolved to exactly 1 file.
#> # A dribble: 1 × 4
#> name path id drive_resource
#> <chr> <chr> <drv_id> <list>
#> 1 broccoli ~/alfalfa/broccoli 191yJH2… <named list [41]>
drive_get("~/alfalfa/broccoli")
#> ✔ The input `path` resolved to exactly 1 file.
#> # A dribble: 1 × 4
#> name path id drive_resource
#> <chr> <chr> <drv_id> <list>
#> 1 broccoli ~/alfalfa/broccoli 191yJH2… <named list [42]>
drive_get(c("broccoli", "alfalfa/", "~/alfalfa/broccoli"))
#> ! Problem with 1 path: path is compatible with more than 1 file
#> broccoli
#> ! 1 file in the output is associated with more than 1 input `path`
#> broccoli <id: 191yJH2qNolW8EG5dtnny-P4AgVOCV_q->
#> ! 2 out of 3 input paths resolved to exactly 1 file.
#> # A dribble: 3 × 4
#> name path id drive_resource
#> <chr> <chr> <drv_id> <list>
#> 1 broccoli ~/alfalfa/broccoli 191yJH2… <named list [42]>
#> 2 broccoli ~/broccoli 1aNh9_Y… <named list [42]>
#> 3 alfalfa ~/alfalfa/ 1ihWThx… <named list [33]>
# Clean up
drive_rm(alfalfa)
#> File deleted:
#> • alfalfa <id: 1ihWThx8L2kRtnhLAIuN9fX2QV1_qnrdR>
if (FALSE) {
# 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")
}
相关用法
- R googledrive drive_cp 复制云端硬盘文件
- R googledrive drive_mime_type 查找 MIME 类型
- R googledrive drive_reveal 添加新的云端硬盘文件信息列
- R googledrive drive_rm 从云端硬盘删除文件
- R googledrive drive_id 驱动器 ID 类
- R googledrive drive_auth_configure 编辑和查看身份验证配置
- R googledrive drive_upload 上传到新的云端硬盘文件
- R googledrive drive_mv 移动云端硬盘文件
- R googledrive drive_put 将新媒体放入云端硬盘文件中
- R googledrive drive_has_token 手上有令牌吗?
- R googledrive drive_user 获取当前用户的信息
- R googledrive drive_rename 重命名云端硬盘文件
- R googledrive drive_trash 将云端硬盘文件移入或移出回收站
- R googledrive drive_share 共享云端硬盘文件
- R googledrive drive_about 获取有关云端硬盘函数的信息
- R googledrive drive_update 更新现有云端硬盘文件
- R googledrive drive_mkdir 创建云端硬盘文件夹
- R googledrive drive_fields 请求部分资源
- R googledrive drive_endpoints 列出驱动器端点
- R googledrive drive_deauth 暂停授权
- R googledrive drive_link 检索云端硬盘文件链接
- R googledrive drive_find 在 Google 云端硬盘上查找文件
- R googledrive drive_create 创建一个新的空白云端硬盘文件
- R googledrive drive_examples 示例文件
- R googledrive drive_browse 在浏览器中访问云端硬盘文件
注:本文由纯净天空筛选整理自Jennifer Bryan等大神的英文原创作品 Get Drive files by path or id。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。