2016-07-21 16 views
1

Я пытаюсь автоматически запускать r-скрипт для загрузки личного листа Google каждый час. Он всегда отлично работает, когда я интерактивно использую R. Он также отлично работает в течение первого часа после того, как я автоматизирую сценарий с launchd.Неинтерактивный автообновление устаревшего токена OAuth с пакетом Googlesheets

Он прекращает работу через час после того, как я начал автоматизировать его с помощью launchd. Я думаю, проблема заключается в том, что через час изменяется токен доступа, а неинтерактивная версия не ждет автоматического обновления токена OAuth. Вот ошибка, которую я получаю из отчета об ошибке:

Авто-освежающий устаревший токен OAuth. Ошибки в gzfile (файл, режим): не может открыть соединение вызовов: gs_auth ... -> -> cache_token -> saveRDS -> gzfile Дополнительно: предупреждение: В gzfile (файл, режим): не может открыть сжатый файл '.httr-OAuth', вероятная причина 'отказано в' Execution остановил

Я использую пакет googlesheets Jenny Брайана. Вот код, который я первоначально использовать для регистрации листа, а затем сохраните маркер 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, но у меня была такая же проблема, когда я хотел запустить R-скрипт автоматически из строгального устройства Windows. Изменение значения атрибута «кэша» ЛОЖЬ сделал трюк для меня [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) 

 Смежные вопросы

  • Нет связанных вопросов^_^