使用Googlesheets包

时间:2016-07-21 23:34:55

标签: launchd r-googlesheets non-interactive

我尝试每小时自动运行一个r脚本来下载私有Google表格。当我以交互方式使用R时,它总能正常工作。在使用launchd自动化脚本后的第一个小时内,它也能正常工作。

我开始使用launchd自动启动后一小时停止工作。我认为问题是一小时后访问令牌发生变化,非交互式版本不等待自动刷新OAuth令牌。这是我从错误报告中得到的错误:

  

自动刷新陈旧的OAuth令牌。   gzfile(文件,模式)出错:无法打开连接   电话:gs_auth ... - > - > cache_token - > saveRDS - > gzfile   另外:警告信息:   在gzfile(文件,模式)中:     无法打开压缩文件' .httr-oauth',可能的原因'权限被拒绝'   执行暂停

我使用的是Jenny Bryan的googlesheets包。这是我最初用于注册工作表的代码,然后保存oAuth令牌:

gToken <- gs_auth() # Run this the first time to get the oAuth information
saveRDS(gToken, "/Users/…/gToken.rds") # Save the oAuth information for non-interactive use

然后,我在使用launchd自动执行的文件中使用以下脚本:

gs_auth(token = "/Users/…/gToken.rds")

使用launchd自动运行脚本时,如何避免此错误?

1 个答案:

答案 0 :(得分:0)

我不知道launchd但是当我想从Windows任务计划器自动运行R脚本时遇到了同样的问题。将'cache'属性值更改为FALSE对我来说很有用[1]:https://i.stack.imgur.com/pprlC.png

您可以在此处找到解决方案:https://github.com/jennybc/googlesheets/issues/262

要在浏览器中进行一次身份验证以获取令牌文件,我就这样做了:

token_file <- gs_auth(new_user = TRUE, cache = FALSE)
saveRDS(token_file, "googlesheets_token.rds")

之后通过以下方式自动登录:

gs_auth(token = paste0(path_scripts, "googlesheets_token.rds"), 
verbose = TRUE, cache = FALSE)