如何在 R 中的团队云端硬盘中读取 Google 电子表格?
How can I read a Google spreadsheet in a Team Drive in R?
这可能是一个非常简单的问题,但我似乎无法弄清楚。
我们最近将一个项目从 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 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() 那样的实际电子表格。必须有一个函数来执行此操作吗?
已经issued,目前还没有解决这个问题。解决方法:移回您自己的驱动器或创建一个可供所有团队访问的共享 gmail 帐户,然后使用该帐户协作。
目前正在重新启动名为 googlesheets4 的 googlesheets 包,该包尚未在 CRAN 上发布。
但是,您目前可以结合使用 googlesheets 包和 googledrive 包来实现您想要的效果,正如您在上面所回避的那样。
首先,您必须使用 drive_get
获取特定电子表格的元数据,并通过名称或 ID 或 URL 指定团队驱动器。然后,使用 googlesheets 包中的任何函数注册电子表格,即 gs_title
、gs_key
或 gs_url
.
这里的解决方法是在 gs_key
.
中设置参数 lookup = FALSE
和 visibility = "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 问题以获取更多信息:
这可能是一个非常简单的问题,但我似乎无法弄清楚。 我们最近将一个项目从 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 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() 那样的实际电子表格。必须有一个函数来执行此操作吗?
已经issued,目前还没有解决这个问题。解决方法:移回您自己的驱动器或创建一个可供所有团队访问的共享 gmail 帐户,然后使用该帐户协作。
目前正在重新启动名为 googlesheets4 的 googlesheets 包,该包尚未在 CRAN 上发布。
但是,您目前可以结合使用 googlesheets 包和 googledrive 包来实现您想要的效果,正如您在上面所回避的那样。
首先,您必须使用 drive_get
获取特定电子表格的元数据,并通过名称或 ID 或 URL 指定团队驱动器。然后,使用 googlesheets 包中的任何函数注册电子表格,即 gs_title
、gs_key
或 gs_url
.
这里的解决方法是在 gs_key
.
lookup = FALSE
和 visibility = "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 问题以获取更多信息: