使用R包“googledrive”从我的googledrive加载R文件

时间:2018-03-01 16:21:09

标签: r google-drive-api

我的google驱动器中有一个xlsx文件。它太大,所以它不会自动转换为googlesheet(这就是为什么使用googlesheets包不起作用)。文件很大,我甚至无法通过在googledrive上点击它来预览它。看到它的唯一方法是下载为.xlsx。虽然我可以将其加载为xlsx文件,但我正在尝试使用googledrive软件包。

到目前为止我所拥有的是:

library(googledrive)
drive_find(n_max = 50)
drive_download("filename_without_extension.xlsx",type = "xlsx")

但我收到以下错误:

  

'file'无法识别至少一个云端硬盘文件。

也许我没有指定文件所在的路径。例如:Work \ Data \ Project1 \ filename.xlsx

你能否告诉我如何在R中加载一个嵌套在驱动器中的名为filename.xlsx的文件?

我阅读了文档,但无法弄清楚如何做到这一点。谢谢。

2 个答案:

答案 0 :(得分:2)

您应该可以通过以下方式执行此操作:

library(googledrive)
drive_download("~/Work/Data/Project1/filename.xlsx")

type参数仅适用于Google原生电子表格,不适用于原始文件。

答案 1 :(得分:0)

我想分享我的方式。
我这样做是因为我一直在更新xlsx文件。这是来自ERP的查询结果。
因此,当我尝试通过googleDrive ID进行操作时,由于每次ERP更新文件的ID更改,都会给我带来错误。
这是我的情况。您的可以完全不同。该文件每月仅更改2到3次。即使是一个“大” xlsx文件(具有19个因子的78-80K记录),我也只用了几秒钟就可以计算出一些值,然后将其丢弃。存储它没有任何意义。 (存储比上传要贵)

library(googledrive)    
library(googlesheets4) # watch out: it is not the CRAN version yet 0.1.1.9000

drive_folder_owner<-"carlos.sxxx@xxxxxx.com" # this is my account in this gDrive folder.
drive_auth(email =drive_folder_owner) # previously authorized account
googlesheets4::sheets_auth(email =drive_folder_owner) # Yes, I know, should be the same, but they are different. 


d1<-drive_find(pattern = "my_file.xlsx",type = drive_mime_type("xlsx")) # This is me finding the file created by the ERP, and I do shorten the search using the type
meta<-drive_get(id=d1$id)[["drive_resource"]] # Get the id from the file in googledrive
n_id<-glue("https://drive.google.com/open?id=",d1$id[[1]]) # here I am creating a path for reading
meta_name<- paste(getwd(),"/Files/",meta[[1]]$originalFilename,sep = "") # and a path to temporary save it.

drive_download(file=as_id(n_id),overwrite = TRUE, path = meta_name) # Now read and save locally.
V_CMV<-data.frame(read_xlsx(meta_name)) # store to data frame
file.remove(meta_name) # delete from R Server
rm(d1,n_id) # Delete temporary variables