使用 R 包 googlesheets 将行添加到 Google Sheet

Adding rows to a Google Sheet using the R Package googlesheets

我正在使用 googlesheets 包(CRAN 版本,但可在此处获得:https://github.com/jennybc/googlesheets)从 R 中的 Google Sheet 读取数据,但会现在喜欢添加行。不幸的是,每次对现有的 sheet 使用 gs_add_row 时,我都会收到以下错误:

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

我按照 Github 上的教程创建了一个 sheet 并按如下方式添加行:

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,就像我正在使用的新 sheet 一样,并尝试使用 gs_add_row 添加新行(注意:在评估这些行之前,我导航到 Google Sheet 并使其 public 到网络):

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 Sheet 发布到网络(根据 https://github.com/jennybc/googlesheets/issues/126#issuecomment-118751652

2) 使 sheet 可编辑为 public

备注

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

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

googlesheets::gs_add_row()googlesheets::gs_edit_cells() 向 Sheet 的 API 发出 POST 请求。这需要将可见性设置为 "private".

以上,当您按键注册Sheet时,请这样操作:

gs_key(mynewKey, visibility = "private")

如果您希望即使对于您从未在浏览器中访问过的 Sheet 也能正常工作,那么还要添加 lookup = FALSE

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