当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。