2016-07-21 3 views
1

J'essaie d'exécuter automatiquement un script r pour télécharger une feuille Google privée toutes les heures. Cela fonctionne toujours très bien quand j'utilise R. De manière interactive. Cela fonctionne aussi bien pendant la première heure après que j'automatise le script avec launchd.Jeton OAuth obsolète à rafraîchissement automatique non-interactif avec le package Googlesheets

Il cesse de fonctionner une heure après avoir commencé à l'automatiser avec launchd. Je pense que le problème est qu'après une heure, le jeton d'accès change, et la version non interactive n'attend pas l'actualisation automatique du jeton OAuth. Voici l'erreur que je reçois du rapport d'erreur:

Jeton OAuth obsolète à rafraîchissement automatique. Erreur dans le fichier compressé (fichier, mode): ne peut pas ouvrir la connexion Appels: gs_auth ... -> -> cache_token -> saveRDS -> gzfile En outre: Message d'avertissement: Dans gzfile (fichier, mode): ne peut pas ouvrir le fichier compressé « .httr OAuth », raison probable « autorisation refusée » exécution interrompue

J'utilise le paquet de Jenny Bryan Google Sheets. Voici le code que j'utilise d'abord pour enregistrer la feuille, puis enregistrez le jeton 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 

J'utilise ensuite le script suivant dans le fichier que j'automatiser avec launchd:

gs_auth(token = "/Users/…/gToken.rds") 

Comment puis-je éviter cette erreur lors de l'exécution automatique du script avec launchd?

Répondre

0

Je ne sais pas à propos de launchd mais j'ai eu le même problème lorsque je voulais exécuter un script R automatiquement à partir de la planificateur de tâches Windows. Modification de la valeur d'attribut « cache » à FAUX fait l'affaire pour moi [1]: https://i.stack.imgur.com/pprlC.png

Vous pouvez trouver la solution ici: https://github.com/jennybc/googlesheets/issues/262

Authentifier une fois dans le navigateur afin d'obtenir un fichier de jeton, je a fait cela:

token_file <- gs_auth(new_user = TRUE, cache = FALSE) 
saveRDS(token_file, "googlesheets_token.rds") 

connexion automatique après via:

gs_auth(token = paste0(path_scripts, "googlesheets_token.rds"), 
verbose = TRUE, cache = FALSE)