当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R googledrive drive_get 按路径或 ID 获取云端硬盘文件


检索通过 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() 进行处理)。如果 pathid 都不是 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

[Deprecated]这种对各个 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 的文件可以作为 bravoalfa/bravo~/alfa/bravo 找到。如果所有这 3 个都包含在输入 path 中,则它们将在输出中由一行表示。

使用文件路径时,最好将 drive_get() 视为设置操作。不要假设第 i 输入路径对应于输出中的行 i(尽管经常如此!)。如果输入和输出之间不存在一对一的关系,则会在消息中宣布。

drive_get() 执行足够的路径解析来唯一标识与每个输入 path 兼容的文件,对于所有 path 一次。如果您绝对想要完整的规范路径,请运行 drive_get()drive_reveal(d, "path") ` 的输出。

不属于您的文件

如果您想通过 path 获取文件,并且该文件不一定位于您的“我的云端硬盘”上,则您可能需要指定 shared_drivecorpus 参数来搜索其他项目集合。了解更多关于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/drive_get.R

相关用法


注:本文由纯净天空筛选整理自Jennifer Bryan等大神的英文原创作品 Get Drive files by path or id。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。