我尝试每小时自动运行一个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
自动运行脚本时,如何避免此错误?
答案 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)