當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R googlesheets4 range_speedread 將工作表讀取為 CSV


此函數使用 quick-and-dirty 方法來讀取繞過 Sheets API 的 Sheet,而是解析數據的 CSV 表示形式。這可能比 range_read() 快得多——對於 "large" 電子表格來說尤其如此。但也有真正的缺點,因此我們僅在速度差異證明合理時才推薦這種方法。為了更快地閱讀,我們必須接受以下限製:

  • 隻有格式化的單元格值可用,而不是基礎值或格式的詳細信息。

  • 我們無法將命名範圍定位為 range

  • 我們無法訪問單元格的數據類型,即我們不知道它是邏輯型、數字型還是日期時間型。必須根據 CSV 數據(或由用戶指定)重新發現。

  • 身份驗證和錯誤處理必須在內部進行稍微不同的處理,這可能會導致與 googlesheets4 中其他函數不同的行為。

請注意,Sheets API 仍用於檢索目標 Sheet 上的元數據,以支持範圍規範。 range_speedread() 還會隨請求發送一個身份驗證令牌,除非之前對 gs4_deauth() 的調用已將 googlesheets4 置於取消授權狀態。

用法

range_speedread(ss, sheet = NULL, range = NULL, skip = 0, ...)

參數

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" 。嚴格解釋,即使範圍強製包含前導、尾隨或嵌入的空行或列。優先於 skipn_maxsheet 。注意 range 可以是命名範圍,如 "sales_data" ,沒有任何單元格引用。

skip

在讀取任何內容(無論是列名還是數據)之前要跳過的最小行數。前導空行會自動跳過,因此這是一個下限。如果給出range,則忽略。

...

傳遞給 CSV 解析函數(當前為 readr::read_csv() )。

tibble

例子

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>

相關用法


注:本文由純淨天空篩選整理自Jennifer Bryan等大神的英文原創作品 Read Sheet as CSV。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。