使用taskscheduleR设置环境变量进行计划

问题描述 投票:0回答:1

使用taskscheduleR安排任务时遇到一些麻烦。具体来说,我在计划任务时没有问题,但是,当我尝试设置环境变量时,代码将失败。

我尝试在计划任务开始时显式调用Sys.getenv(),但无济于事。

我想我可以做类似的事情

out <- readLines("path to my .Renviorn")

但是这似乎不是正确的方法。

这是我想计划的内容,当我传递完整参数而不是Sys.getenv()时,它可以很好地运行(即使在计划时)。

library(RODBC)
library(slackr)
library(tidyverse)

Sys.getenv()

dbhandle <- odbcDriverConnect(connection = Sys.getenv("CWDSN"))

proj <- sqlQuery(dbhandle, "SELECT * FROM v_rpt_Project WHERE Date_required > '2018'", 
stringsAsFactors = FALSE) %>% 
  as_tibble()

RODBC::odbcCloseAll()

slackr(proj, channel = "test-r-1", api_token = Sys.getenv("SLACK_API_TOKEN"))

write.csv("C:/Users/bill/Desktop/output.csv")

我想避免传递可能被推送到github的登录信息。

[如果有其他方法,例如设置.config文件以从中提取登录信息,我很乐意。只是在这里寻找最佳实践。

谢谢。

这是我的计划方式:

library(taskscheduleR)


taskscheduler_create(taskname = "DELETE-TEST", 
                     rscript = "C:/Users/bill/Desktop/simple-test.R", 
                     schedule = "MINUTE", 
                     startdate = "01/01/2019", 
                     modifier = 1)

taskscheduler_delete("DELETE-TEST")

sessionInfo()

R version 3.6.1 (2019-07-05)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18362)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] forcats_0.4.0   stringr_1.4.0   dplyr_0.8.3     purrr_0.3.2     readr_1.3.1     tidyr_0.8.3     tibble_2.1.3   
 [8] ggplot2_3.2.0   tidyverse_1.2.1 slackr_1.4.2    RODBC_1.3-16   

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.2       cellranger_1.1.0 pillar_1.4.2     compiler_3.6.1   tools_3.6.1      zeallot_0.1.0   
 [7] jsonlite_1.6     lubridate_1.7.4  gtable_0.3.0     nlme_3.1-140     lattice_0.20-38  pkgconfig_2.0.3 
[13] rlang_0.4.0      cli_1.1.0        rstudioapi_0.10  curl_4.2         haven_2.1.1      withr_2.1.2     
[19] xml2_1.2.0       httr_1.4.1       generics_0.0.2   vctrs_0.2.0      hms_0.5.0        grid_3.6.1      
[25] tidyselect_0.2.5 glue_1.3.1       R6_2.4.0         fansi_0.4.0      readxl_1.3.1     modelr_0.1.4    
[31] magrittr_1.5     scales_1.0.0     backports_1.1.5  rvest_0.3.4      assertthat_0.2.1 colorspace_1.4-1
[37] utf8_1.1.4       stringi_1.4.3    lazyeval_0.2.2   munsell_0.5.0    broom_0.5.2      crayon_1.3.4    

r taskscheduler
1个回答
0
投票

当然有readRenviorn()功能。

readRenviron("path to environment variables")

Sys.getenv("access token")

现在可以在不调用敏感信息的情况下安排任务了。

信用:https://stackoverflow.com/a/56262739/8364971

© www.soinside.com 2019 - 2024. All rights reserved.