Juste découvert le paquet googlesheets et le trouve très utile jusqu'à présent. J'aimerais maintenant pouvoir remplacer tout ou partie du contenu d'une feuille existante.Remplacer tout le contenu d'une feuille de route à l'aide du package R googlesheets?
Exemple:
> library(googlesheets)
> set.seed(10)
> test1 <- data.frame(matrix(rnorm(10),nrow = 5))
> test1
X1 X2
1 0.01874617 0.3897943
2 -0.18425254 -1.2080762
3 -1.37133055 -0.3636760
4 -0.59916772 -1.6266727
5 0.29454513 -0.2564784
> gs_new("foo_sheet", input = test1, trim = TRUE)
Cela crée une nouvelle feuille comme prévu. Disons que nous devons ensuite mettre à jour la feuille (cette donnée est utilisée pour une application brillante hébergée par shinyapps.io, et je préférerais ne pas avoir à redéployer l'application pour changer les références de feuilles).
> test1$X2 <- NULL
> test1
X1
1 0.01874617
2 -0.18425254
3 -1.37133055
4 -0.59916772
5 0.29454513
J'ai essayé de remplacer simplement avec gs_new()
mais courir dans le message d'avertissement suivant:
> gs_new("foo_sheet", input = test1, trim = TRUE)
Warning message:
At least one sheet matching "foo_sheet" already exists, so you may
need to identify by key, not title, in future.
Il en résulte une nouvelle feuille foo_sheet
en cours de création avec une nouvelle key
, mais ne remplace pas la feuille existante et produira donc une erreur key
si nous essayons d'enregistrer la feuille mise à jour avec
gs_title("foo_sheet")
Error in gs_lookup(., "sheet_title", verbose) :
"foo_sheet" matches sheet_title for multiple sheets returned by gs_ls() (which should reflect user's Google Sheets home screen). Suggest you identify this sheet by unique key instead.
Cela signifie que si nous essayons plus tard d'accéder à la nouvelle feuille foo_sheet
avec gs_read("foo_sheet")
, l'API retournera la feuille d'origine, plutôt que la nouvelle.
> df <- gs_read("foo_sheet")
> df
X1 X2
1 0.01874617 0.3897943
2 -0.18425254 -1.2080762
3 -1.37133055 -0.3636760
4 -0.59916772 -1.6266727
5 0.29454513 -0.2564784
Je crois comprendre qu'une solution possible pourrait être d'abord supprimer la feuille avec gs_delete("test1")
puis créer un nouveau. Alternativement on pourrait peut-être vider les cellules avec gs_edit_cells()
, mais espérait une certaine forme de fonction d'écrasement.
Merci d'avance!
Il existe un problème persistant dans 'gs_edit_cells'. Il pend plusieurs fois. –