【问题标题】:How can I read a Google spreadsheet in a Team Drive in R?如何在 R 的团队云端硬盘中读取 Google 电子表格?
【发布时间】:2019-05-08 19:04:05
【问题描述】:

这可能是一个非常简单的问题,但我似乎无法弄清楚。 我们最近将一个项目从 Google Drive 上的共享文件夹移到了 Team Drive。我曾经使用此代码直接从 R 访问电子表格:

library(googlesheets)
mydir <- gs_ls() #authenticate to google list sheets
mydir$sheet_title
mygs <- gs_title(x = "FileName", verbose = F) #read file
mygs <- gs_read(ss = mygs, ws = "SheetName", skip=1) # get specific worksheet

但是现在我们移动了项目,它不再工作了,因为 googlesheets 包只适用于我的 Google Drive 目录。我找到了一个用于访问我的团队驱动器(googledrive)的包,并且我设法在目录中找到了该文件,但我似乎无法弄清楚如何阅读我的特定工作表:

library(googledrive)
td <- team_drive_find()
myfile <- drive_find(team_drive = as_id(td$id[td$name=="TDriveName"]),
                     pattern = "FileName")
myfile <- drive_get(id = as_id(myfile$id), verbose = TRUE)

这给了我一个电子表格元数据的小标题,而不是像 gs_title() 那样的实际电子表格。必须有一个函数才能做到这一点?

【问题讨论】:

标签: r google-drive-shared-drive r-googlesheets


【解决方案1】:

一直是issued,目前还没有解决此问题的方法。解决方法:移回您自己的驱动器或创建一个可供所有团队访问的共享 gmail 帐户,然后与该帐户协作。

【讨论】:

    【解决方案2】:

    目前正在进行一项重新启动 googlesheets 包(称为 googlesheets4)的工作,该包尚未在 CRAN 上发布。

    但是,您目前可以通过结合使用 googlesheets 包和 googledrive 包来实现您想要的,正如您在上面所忽略的那样。

    首先,您必须使用 drive_get 获取特定电子表格的元数据,并通过名称、ID 或 URL 指定团队驱动器。然后,使用 googlesheets 包中的任何函数注册电子表格,即gs_titlegs_keygs_url

    这里的解决方法是在gs_key 中设置参数lookup = FALSEvisibility = "private"

    我更喜欢使用团队驱动器 ID 和电子表格密钥,而不是名称。您可以使用team_drive_find 获取团队驱动器的 ID。

    见下文:

    library(dplyr)   # For pipe operator, %>%
    library(googledrive)
    library(googlesheets)
    
    data <- 
      drive_get(path = "example-googlesheet-name",
              team_drive = as_id("0ABCDefGH2jK_Lm3NPA")) %>% 
      select(id) %>% 
      combine() %>% 
      gs_key(lookup = FALSE, 
             visibility = "private") %>% 
      gs_read_csv()
    

    以上代码通过团队驱动器的 ID 从团队驱动器中读取示例电子表格。从drive_get返回的元数据中,它选择ID,将其组合成一个向量,并将ID传递给gs_key以注册电子表格。 gs_read_csv 然后读入寄存器电子表格并将结果分配给data

    有关更多信息,请参阅这些 Github 问题:

    https://github.com/jennybc/googlesheets/issues/327

    https://github.com/jennybc/googlesheets/pull/318

    【讨论】:

    • @chrowe googlesheets4 软件包已经发布了一段时间。所以我敢打赌会有更新(以及解决这个问题的更好方法),但我不确定自己。如果您探索并发现,我很想在这里知道。
    猜你喜欢
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    • 2019-02-26
    • 2017-09-21
    相关资源
    最近更新 更多