2016-07-21 73 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)