使用R Package googlesheets将行添加到Google表格

时间:2015-09-12 10:43:04

标签: r google-sheets r-googlesheets

我正在使用googlesheets包(CRAN版本,但在此处提供:https://github.com/jennybc/googlesheets)从R中的Google Sheet中读取数据,但现在想要添加行。不幸的是,每次对现有工作表使用gs_add_row我都会收到以下错误:

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)将Google表格发布到网上(根据https://github.com/jennybc/googlesheets/issues/126#issuecomment-118751652

2)使工作表可以编辑为公众

注释

在我的实际示例中,我有一个现有的Google工作表,其中包含许多我想要添加行的工作表。我试图在这里使用一个最小的例子来理解我的错误,我也可以提供一个指向我想要更新的特定工作表的链接。

我在这里的包的github页面上提出了一个问题https://github.com/jennybc/googlesheets/issues/168

1 个答案:

答案 0 :(得分:4)

googlesheets::gs_add_row()googlesheets::gs_edit_cells()向Sheets API发出POST请求。这要求将可见性设置为&#34; private&#34;。

以上,当您按键注册时,请按以下方式注册:

gs_key(mynewKey, visibility = "private")

如果您希望这项工作即使对于您从未在浏览器中访问过的表格,也可以添加lookup = FALSE

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