此函數使用 quick-and-dirty 方法來讀取繞過 Sheets API 的 Sheet,而是解析數據的 CSV 表示形式。這可能比 range_read()
快得多——對於 "large" 電子表格來說尤其如此。但也有真正的缺點,因此我們僅在速度差異證明合理時才推薦這種方法。為了更快地閱讀,我們必須接受以下限製:
-
隻有格式化的單元格值可用,而不是基礎值或格式的詳細信息。
-
我們無法將命名範圍定位為
range
。 -
我們無法訪問單元格的數據類型,即我們不知道它是邏輯型、數字型還是日期時間型。必須根據 CSV 數據(或由用戶指定)重新發現。
-
身份驗證和錯誤處理必須在內部進行稍微不同的處理,這可能會導致與 googlesheets4 中其他函數不同的行為。
請注意,Sheets API 仍用於檢索目標 Sheet 上的元數據,以支持範圍規範。 range_speedread()
還會隨請求發送一個身份驗證令牌,除非之前對 gs4_deauth()
的調用已將 googlesheets4 置於取消授權狀態。
參數
- ss
-
識別 Google 表格的內容:
-
其文件 ID 作為字符串或
drive_id
-
我們可以從中恢複 id 的 URL
-
one-row
dribble
,這就是 googledrive 表示雲端硬盤文件的方式 -
googlesheets4_spreadsheet
的實例,這就是gs4_get()
返回的內容
通過
as_sheets_id()
處理。 -
- sheet
-
要閱讀的表,在 "worksheet" 或 "tab" 的意義上。您可以通過名稱(使用字符串)或位置(使用數字)來標識工作表。如果通過
range
指定工作表,則忽略。如果兩個參數都沒有指定工作表,則默認為第一個可見工作表。 - range
-
要讀取的單元格範圍。如果是
NULL
,則讀取所有非空單元格。否則,請按照 Sheets A1 notation 中的說明指定range
或使用 cell-specification 中記錄的幫助程序。 Sheets 使用相當標準的電子表格範圍表示法,盡管與 Excel 略有不同。有效範圍示例:"Sheet1!A1:B2"
、"Sheet1!A:A"
、"Sheet1!1:2"
、"Sheet1!A5:A"
、"A1:B2"
、"Sheet1"
。嚴格解釋,即使範圍強製包含前導、尾隨或嵌入的空行或列。優先於skip
、n_max
和sheet
。注意range
可以是命名範圍,如"sales_data"
,沒有任何單元格引用。 - skip
-
在讀取任何內容(無論是列名還是數據)之前要跳過的最小行數。前導空行會自動跳過,因此這是一個下限。如果給出
range
,則忽略。 - ...
-
傳遞給 CSV 解析函數(當前為
readr::read_csv()
)。
例子
if (require("readr")) {
# since cell type is not available, use readr's col type specification
range_speedread(
gs4_example("deaths"),
sheet = "other",
range = "A5:F15",
col_types = cols(
Age = col_integer(),
`Date of birth` = col_date("%m/%d/%Y"),
`Date of death` = col_date("%m/%d/%Y")
)
)
}
#> Loading required package: readr
#> ✔ Reading from deaths, sheet other, range A5:F15.
#> ℹ Export URL:
#> <https://docs.google.com/spreadsheets/d/1VTJjWoP1nshbyxmL9JqXgdVsimaYty21LGxxs018H2Y/export?format=csv&range=A5%3AF15&gid=278837031>
#> # A tibble: 10 × 6
#> Name Profession Age `Has kids` `Date of birth` `Date of death`
#> <chr> <chr> <int> <lgl> <date> <date>
#> 1 Vera Rubin scientist 88 TRUE 1928-07-23 2016-12-25
#> 2 Mohamed Ali athlete 74 TRUE 1942-01-17 2016-06-03
#> 3 Morley Saf… journalist 84 TRUE 1931-11-08 2016-05-19
#> 4 Fidel Cast… politician 90 TRUE 1926-08-13 2016-11-25
#> 5 Antonin Sc… lawyer 79 TRUE 1936-03-11 2016-02-13
#> 6 Jo Cox politician 41 TRUE 1974-06-22 2016-06-16
#> 7 Janet Reno lawyer 78 FALSE 1938-07-21 2016-11-07
#> 8 Gwen Ifill journalist 61 FALSE 1955-09-29 2016-11-14
#> 9 John Glenn astronaut 95 TRUE 1921-07-28 2016-12-08
#> 10 Pat Summit coach 64 TRUE 1952-06-14 2016-06-28
# write a Sheet that, by default, is NOT world-readable
(ss <- sheet_write(chickwts))
#> ✔ Creating new Sheet: dolostone-macaque.
#>
#> ── <googlesheets4_spreadsheet> ───────────────────────────────────────────
#> Spreadsheet name: dolostone-macaque
#> ID: 1tYcI63BGH1p6UY73QfkbTN-n3rq8aF99edsnwTPn2Mo
#> Locale: en_US
#> Time zone: Etc/GMT
#> # of sheets: 1
#>
#> ── <sheets> ──────────────────────────────────────────────────────────────
#> (Sheet name): (Nominal extent in rows x columns)
#> chickwts: 72 x 2
# demo that range_speedread() sends a token, which is why we can read this
range_speedread(ss)
#> ✔ Reading from dolostone-macaque.
#> ℹ Export URL:
#> <https://docs.google.com/spreadsheets/d/1tYcI63BGH1p6UY73QfkbTN-n3rq8aF99edsnwTPn2Mo/export?format=csv>
#> Rows: 71 Columns: 2
#> ── Column specification ──────────────────────────────────────────────────
#> Delimiter: ","
#> chr (1): feed
#> dbl (1): weight
#>
#> ℹ Use `spec()` to retrieve the full column specification for this data.
#> ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
#> # A tibble: 71 × 2
#> weight feed
#> <dbl> <chr>
#> 1 179 horsebean
#> 2 160 horsebean
#> 3 136 horsebean
#> 4 227 horsebean
#> 5 217 horsebean
#> 6 168 horsebean
#> 7 108 horsebean
#> 8 124 horsebean
#> 9 143 horsebean
#> 10 140 horsebean
#> # ℹ 61 more rows
# clean up
googledrive::drive_trash(ss)
#> File trashed:
#> • dolostone-macaque <id: 1tYcI63BGH1p6UY73QfkbTN-n3rq8aF99edsnwTPn2Mo>
相關用法
- R googlesheets4 range_autofit 自動調整列或行以適應數據
- R googlesheets4 range_read_cells 從工作表中讀取單元格
- R googlesheets4 range_delete 刪除單元格
- R googlesheets4 range_flood 淹沒或清除一係列單元格
- R googlesheets4 range_read 將工作表讀入 DataFrame 中
- R googlesheets4 range_write (覆蓋)將新數據寫入範圍
- R googlesheets4 request_generate 生成 Google Sheets API 請求
- R googlesheets4 sheet_rename 重命名(工作)表
- R googlesheets4 sheet_delete 刪除一張或多張(工作)表
- R googlesheets4 gs4_token 生成配置的令牌
- R googlesheets4 gs4_formula Google 表格公式類
- R googlesheets4 gs4_random 生成隨機工作表名稱
- R googlesheets4 gs4_user 獲取當前用戶的信息
- R googlesheets4 spread_sheet 將單元格 DataFrame 展開為電子表格形狀
- R googlesheets4 sheet_properties 獲取有關(工作)表的數據
- R googlesheets4 sheets_id Sheets_id 類
- R googlesheets4 gs4_auth_configure 編輯和查看身份驗證配置
- R googlesheets4 gs4_fodder 創建有用的電子表格填充程序
- R googlesheets4 sheet_append 將行附加到工作表
- R googlesheets4 gs4_endpoints 列出工作表端點
- R googlesheets4 gs4_auth 授權 googlesheets4
- R googlesheets4 gs4_find 查找 Google 表格
- R googlesheets4 sheet_write (覆蓋)將新數據寫入工作表
- R googlesheets4 gs4_examples 示例表
- R googlesheets4 googlesheets4-configuration 穀歌表4配置
注:本文由純淨天空篩選整理自Jennifer Bryan等大神的英文原創作品 Read Sheet as CSV。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。