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