Неинтерактивное автоматическое обновление устаревшего токена OAuth с пакетом Googlesheets

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

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

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

Я пользуюсь пакетом с гугл листами Дженни Брайан. Вот код, который я изначально использую для регистрации листа, а затем сохраняю токен 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 ответ

Я не знаю о запуске, но у меня возникла та же проблема, когда я хотел запустить скрипт R автоматически из планировщика задач Windows. Изменение значения атрибута 'cache' на FALSE помогло мне [1]:

Вы можете найти решение здесь: 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)
Другие вопросы по тегам