2017-01-17 35 views
1

剛剛發現googlesheets包,並發現它非常有幫助。我現在希望能夠替換現有工作表中的全部或部分內容。使用R googlesheets軟件包替換Google表格中的所有內容?

實施例:

> library(googlesheets) 
> set.seed(10) 
> test1 <- data.frame(matrix(rnorm(10),nrow = 5)) 
> test1 
     X1   X2 
1 0.01874617 0.3897943 
2 -0.18425254 -1.2080762 
3 -1.37133055 -0.3636760 
4 -0.59916772 -1.6266727 
5 0.29454513 -0.2564784 

> gs_new("foo_sheet", input = test1, trim = TRUE) 

這將創建一個新的工作表按預期方式。假設我們需要更新工作表(這些數據用於shinyapps.io託管的閃亮應用程序,並且我寧願不必重新部署應用程序以更改工作表引用)。

> test1$X2 <- NULL 
> test1 
     X1 
1 0.01874617 
2 -0.18425254 
3 -1.37133055 
4 -0.59916772 
5 0.29454513 

我試圖簡單地用gs_new()覆蓋,但碰到下面的警告消息:

> gs_new("foo_sheet", input = test1, trim = TRUE) 

Warning message: 
At least one sheet matching "foo_sheet" already exists, so you may 
need to identify by key, not title, in future. 

這將導致一個新的工作表foo_sheet正在和一家新key創建的,但不會取代現有薄片因此如果我們嘗試註冊更新後的表格,將會產生key錯誤

gs_title("foo_sheet") 

Error in gs_lookup(., "sheet_title", verbose) : 
"foo_sheet" matches sheet_title for multiple sheets returned by gs_ls() (which should reflect user's Google Sheets home screen). Suggest you identify this sheet by unique key instead. 

這意味着如果我們稍後嘗試使用gs_read("foo_sheet")訪問新工作表foo_sheet,API將返回原始工作表,而不是新工作表。

> df <- gs_read("foo_sheet") 
> df 
     X1   X2 
1 0.01874617 0.3897943 
2 -0.18425254 -1.2080762 
3 -1.37133055 -0.3636760 
4 -0.59916772 -1.6266727 
5 0.29454513 -0.2564784 

這是我的理解是一個可能的解決辦法是先用gs_delete("test1")刪除工作表,然後創建一個新的。另外也可以用gs_edit_cells()來清空單元格,但希望有某種形式的覆蓋函數。

在此先感謝!

回答

0

我發現編輯細胞的功能是一個很好的解決方法:

gs_edit_cells(ss = "foo_sheet", ws = "worksheet name", input = test1, anchor = "A1" trim = TRUE, col_names = TRUE) 

通過數據錨定到左上角,可以有效地覆蓋所有其他數據。修剪功能將消除所有不需要更新的單元。

+0

'gs_edit_cells'存在一個問題。它掛了好幾次。 –

相關問題