Как я могу прочитать электронную таблицу Google на Team Drive в R? - PullRequest
0 голосов
/ 07 декабря 2018

это, наверное, очень простой вопрос, но я не могу понять это.Недавно мы переместили проект из общей папки на Google Диске в 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.Я нашел пакет для доступа к моему 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 голосов
/ 21 декабря 2018

В настоящее время идет работа над новой перезагрузкой пакета googlesheets, который называется googlesheets4, который еще не выпущен в CRAN.

Однако в настоящее время вы можете достичь желаемого с помощью комбинациипакет googlesheets и пакет googledrive, как вы уже упоминали выше.

Сначала вы должны получить метаданные для конкретной электронной таблицы, используя drive_get, и указать командный диск по имени, идентификатору или URL-адресу.Затем зарегистрируйте электронную таблицу с любой из функций для этого из пакета googlesheets, например gs_title, gs_key или gs_url.

Обходной путь здесь заключается в установке аргументов lookup = FALSE и visibility = "private" in gs_key.

Я предпочитаю использовать идентификаторы командных дисков и ключи электронных таблиц, а не имена.Вы можете использовать team_drive_find, чтобы получить идентификаторы своих командных дисков.

См. Ниже:

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()

Приведенный выше код читает электронную таблицу в примере с командного диска через командный диск.Я БЫ.Из метаданных, возвращаемых drive_get, он выбирает идентификатор, объединяет его в вектор и передает идентификатор в gs_key, чтобы зарегистрировать электронную таблицу.gs_read_csv затем считывает в электронную таблицу регистра и присваивает результат data.

См. Эти проблемы Github для получения дополнительной информации:

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

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

0 голосов
/ 18 декабря 2018

Выпущено , выдано , и в настоящее время решение этой проблемы пока не найдено.Обходной путь: вернитесь на свой собственный диск или создайте одну общую учетную запись gmail, доступную для всей вашей команды, а затем работайте совместно с этой учетной записью.

...