2015-09-12 23 views
1

我使用googlesheets包(CRAN版本,但在此处可用:https://github.com/jennybc/googlesheets)从R中的Google工作表读取数据,但现在想要添加行。不幸的是,每次使用gs_add_row对现有工作表,我得到以下错误:使用R包将行添加到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.

我现在提供mynewKeygs_key,因为我想如果这是我的工作了新的一页,并尝试使用添加一个新行gs_add_row(注:评估这些行之前,我浏览到谷歌工作表,并把它公开在网路上):我曾尝试

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)谷歌表到网上(按照https://github.com/jennybc/googlesheets/issues/126#issuecomment-118751652

2)启用的片为可编辑向公众

注释

以我实际的例子,我有一个现有的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

Thanks !!真的很感谢这个包和你的调查:) –

+0

你的回答节省了我的时间吨! –