1

我正在使用googlesheets包(CRAN 版本,但可在此处获得:https ://github.com/jennybc/googlesheets )从 R 中的 Google 表格读取数据,但现在想添加行。不幸的是,每次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.

我现在提供mynewKeygs_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

4

1 回答 1

5

googlesheets::gs_add_row()并向googlesheets::gs_edit_cells()Sheets API 发出 POST 请求。这需要将可见性设置为“私有”。

上面,当你按键注册 Sheet 时,请这样做:

gs_key(mynewKey, visibility = "private")

如果您希望它甚至适用于您从未在浏览器中访问过的表格,那么lookup = FALSE也添加:

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

于 2015-10-26T23:59:42.233 回答