2016-07-21 70 views
1

我试图自动运行一个r脚本来每小时下载一个私人Google表格。当我交互式使用R时,它总是可以正常工作。在我使用launchd自动化脚本后的第一个小时内,它也可以正常工作。非交互式自动刷新过期的OAuth令牌与Google表格包

在我用launchd开始自动化后,它停止工作一个小时。我认为问题在于一小时后访问令牌发生变化,而非交互式版本不会等待OAuth令牌的自动刷新。以下是我从错误报告中获得的错误:

自动刷新失效的OAuth令牌。 错误gzfile(文件模式):无法打开连接 电话:gs_auth ... - > - > cache_token - > saveRDS - > gzfile 另外:警告消息: 在gzfile(文件模式): 不能打开压缩文件“.httr-OAuth的”,可能的原因‘权限被拒绝’ 执行暂停

我用珍妮布莱恩的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

我不知道launchd,但当我想从Windows任务刨床自动运行R脚本时遇到了同样的问题。 “高速缓存”属性值更改为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)