2015-09-12 8 views
1

Я использую пакет googlesheets (версия CRAN, но доступна здесь: https://github.com/jennybc/googlesheets) для чтения данных из Листа Google в R, но теперь вы хотите добавить строки. К сожалению, каждый раз использовать gs_add_row для существующего листа я получаю следующее сообщение об ошибке:Добавление строк в Лист Google с использованием пакетов google-пакетов

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

Я последовал за учебник по Github, чтобы создать таблицу и добавить строки следующим образом:

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 

Ряды успешно добавлен Я даже получить радостное сообщение Row successfully appended.

теперь обеспечить mynewKey к gs_key, как я бы, если бы это был новый лист я работал с и попытаться добавить новую строку с помощью gs_add_row (Примечание: перед вычислением эти строки, я перейти к листам Google и обнародует его в Интернете):

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 

Вещи, которые я пробовал:

1) Published листа Google в Интернете (в соответствии с https://github.com/jennybc/googlesheets/issues/126#issuecomment-118751652)

2) Enabled лист в редактируемые для общественности

Notes

в моей фактический пример, у меня есть существующий лист Google со многими рабочими таблицами внутри него, в которые я хотел бы добавить строки. Я попытался использовать здесь минимальный пример, чтобы понять мою ошибку, я также могу предоставить ссылку на конкретный рабочий лист, который я также хотел бы обновить.

я поднял вопрос на GitHub странице пакета здесь, https://github.com/jennybc/googlesheets/issues/168

ответ

4

googlesheets::gs_add_row() и googlesheets::gs_edit_cells() делают POST запросы к листам API. Это требует, чтобы видимость была установлена ​​как «частная».

Выше, при регистрации листа по ключу, пожалуйста, сделайте это так:

gs_key(mynewKey, visibility = "private")

Если вы хотите, чтобы работать даже для листов вы никогда не бывали в браузере, а затем добавить lookup = FALSE а также:

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

+0

Спасибо !! Поистине оцените этот пакет и ваше расследование этого :) –

+0

Ваш ответ спас тонну моего времени! –

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

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