如何在R的团队驱动器中阅读Google电子表格?

时间:2018-12-07 02:15:25

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

这可能是一个非常简单的问题,但我似乎无法弄清楚。 最近,我们将一个项目从Google云端硬盘上的共享文件夹移到了团队云端硬盘。我曾经使用以下代码直接从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云端硬盘目录。我找到了一个用于访问我的Team 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()那样的实际电子表格。必须有一个函数来执行此操作吗?

2 个答案:

答案 0 :(得分:4)

目前,有关重新启动名为googlesheets4的googlesheets软件包的工作正在进行中,该软件包尚未在CRAN上发布。

但是,如上所述,您目前可以结合使用googlesheets软件包和googledrive软件包来实现所需的功能。

首先,您必须使用drive_get获取特定电子表格的元数据,并通过名称,ID或URL指定团队合作精神。然后,使用googlesheets软件包中的任何功能注册电子表格,即gs_titlegs_keygs_url

此处的解决方法是在lookup = FALSE中设置参数visibility = "private"gs_key

我更喜欢使用团队驱动器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

答案 1 :(得分:0)

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