使用 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")
我正在使用 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")