下载googlesheet并在特定路径中创建文件夹进行保存

时间:2018-03-31 07:07:33

标签: r matrix dplyr tidyverse

我有下面提到的代码,可以下载谷歌表并将其存储在Documents

library(dplyr)
library(data.table)
library(googlesheets)
library(rJava)

t.start<-Sys.Date()
t.start<-as.character(t.start)

#gs_auth(new_user = TRUE) 
#gs_ls()
#gs_auth()
as<-gs_title("XYZ")
gs_download(as, overwrite = TRUE)

我希望工作表XYZ存储到具有下述条件的特定位置(即E:\My_data\File)。

  • 我想每天运行此脚本2次,我希望根据Sys.Date()和时间条件重命名文件XYZ。 (例如,如果Sys.Date = 01/01 / 2017且时间<15:00,则名称应为01/01/2017_A_XYZ.xlsx' for >15:00 hrs it should be 01/01 / 2017_B_XYZ.xlsx')
  • 我想根据Sys.Date()(即Year&amp; Month)自动在E:\My_data\File创建文件夹。如果Sys.Date()= 01/01/2017,那么会有一个名为2017的文件夹和一个名为Jan-17的子文件夹,并且在子文件夹中会有2个子文件夹{{1} (对于特定年份/月份的文件&lt; 15:00小时)和A(对于特定年份/月份的文件&gt; 15:00小时)。
  • 如果年/月更改,则新文件夹创建的结构相同。

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码执行此操作:

# To handle the googlesheets
require(googlesheets)

# For easier date manipulation
require(lubridate)

# Get current time
t <- Sys.time()

# Set your base path and create the basic file structure
base_path <- "E:/My_data/File"
dir.create(paste0(base_path, year(t)))
sub_folder_path <- paste0(base_path, year(t), "/", month(t, label = TRUE), "-", day(t))
dir.create(sub_folder_path)

AB_split <- ifelse(hour(t)<15, "A", "B")
dir.create(paste0(sub_folder_path, "/", AB_split))

# Set your gsheet title and the wanted file-name
ws_title <- "XYZ"
ws_file_name <- paste0(date(t), "_", AB_split, "_", ws_title, ".xlsx")
ws_file_path <- paste0(sub_folder_path, "/", AB_split, "/", ws_file_name)

# Download it
as<-gs_title(ws_title)
gs_download(as, to = ws_file_path, overwrite = TRUE)

如果出现警告,尝试创建现有文件夹。如果您想要压制警告,请在create.dir

中打包suppressWarnings(create.dir(...))次来电

我强烈建议使用 NOT 来处理工作表标题,而是使用密钥。见?gs_key