2015-09-12 2 views
1

J'utilise le package googlesheets (version CRAN, mais disponible ici: https://github.com/jennybc/googlesheets) pour lire les données d'une feuille Google dans R, mais j'aimerais maintenant ajouter des lignes. Malheureusement, chaque fois que l'utilisation gs_add_row pour une feuille existante, je reçois l'erreur suivante:Ajout de lignes à une feuille Google à l'aide du package R googlesheets

Error in gsheets_POST(lf_post_link, XML::toString.XMLNode(new_row)) : 
    client error: (405) Method Not Allowed 

J'ai suivi le tutoriel sur Github pour créer une feuille et ajouter des lignes comme suit:

library(googlesheets) 
library(dplyr) 
df.colnames <- c("Project Short Name","Project Start Date","Proj Stuff") 
my.df <- data.frame(a = "cannot be empty", b = "cannot be empty", c = "cannot be empty") 
colnames(my.df) <- df.colnames 
## Create a new workbook populated by this data.frame: 
mynewSheet <- gs_new("mynewsheet", input = my.df, trim = TRUE) 
## Append Element 
mynewSheet <- mynewSheet %>% gs_add_row(input = c("a","b","c")) 
mynewKey <- mynewSheet$sheet_key 

Les lignes sont ajoutés avec succès , je reçois le message même joyeux Row successfully appended.

Je donne maintenant mynewKey à gs_key, comme je le ferais si cela était une nouvelle feuille je travaillais avec et tenter d'ajouter une nouvelle ligne à l'aide gs_add_row (Note: avant d'évaluer ces lignes, naviguer à la fiche de Google et le rendre public sur le Web):

myExistingWorkbook <- gs_key(mynewKey, visibility = "public") 
## Attempt to gs_add_row 
myExistingWorkbook <- myExistingWorkbook %>% gs_add_row(input = c("a","b","c"), ws="Sheet1", verbose = TRUE) 

Error in gsheets_POST(lf_post_link, XML::toString.XMLNode(new_row)) : 
    client error: (405) Method Not Allowed 

choses que j'ai essayé:

1) Publié la fiche Google sur le Web (comme par https://github.com/jennybc/googlesheets/issues/126#issuecomment-118751652)

2) Débloquée la feuille éditable au public

notes de

Dans mon Par exemple, j'ai une feuille de calcul Google avec de nombreuses feuilles de calcul dans lequel je voudrais ajouter des lignes. J'ai essayé d'utiliser un exemple minimal ici pour comprendre mon erreur, je peux également fournir un lien vers la feuille de travail spécifique que je voudrais mettre à jour aussi bien.

J'ai soulevé une question sur la page GitHub ici du paquet, https://github.com/jennybc/googlesheets/issues/168

Répondre

4

googlesheets::gs_add_row() et googlesheets::gs_edit_cells() faire des requêtes POST à ​​l'API Sheets. Cela nécessite que la visibilité soit définie sur "privé".

Ci-dessus, lorsque vous enregistrez la feuille par clé, s'il vous plaît le faire comme ceci:

gs_key(mynewKey, visibility = "private")

Si vous voulez que cela fonctionne même pour les feuilles que vous ne l'avez jamais visités dans le navigateur, puis ajouter lookup = FALSE ainsi:

gs_key(mynewKey, lookup = FALSE, visibility = "private")

+0

Merci! Vraiment apprécier ce paquet et votre enquête de cette :) –

+0

Votre réponse a sauvé une tonne de mon temps! –