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