将数据帧写入一系列单元格中。与sheet_write()
(又名write_sheet()
)的主要区别:
-
范围更窄。
range_write()
实际上是针对一些单元格,而不是整个(工作)表。 -
编辑的矩形未明确设置为表格样式。没有做任何特别的事情:格式化标题行或冻结行。
-
列名可以被隐藏。这意味着,虽然
data
必须是一个数据帧(至少目前如此),但range_write()
实际上可以用来写入任意数据。 -
目标(跨页)表和(工作)表必须已存在。无法创建工作表或添加工作表。
-
目标图纸尺寸不是 "trimmed" 到 shrink-wrap 和
data
。但是,工作表可能会增加行和/或列,以便将data
写入用户指定的range
。
如果您只想向现有表添加行,您可能需要的函数是 sheet_append()
。
参数
- ss
-
识别 Google 表格的内容:
-
其文件 ID 作为字符串或
drive_id
-
我们可以从中恢复 id 的 URL
-
one-row
dribble
,这就是 googledrive 表示云端硬盘文件的方式 -
googlesheets4_spreadsheet
的实例,这就是gs4_get()
返回的内容
通过
as_sheets_id()
处理。 -
- data
-
一个 DataFrame 。
- sheet
-
要写入的表,在 "worksheet" 或 "tab" 的意义上。您可以通过名称(使用字符串)或位置(使用数字)来标识工作表。如果通过
range
指定工作表,则忽略。如果两个参数都没有指定工作表,则默认为第一个可见工作表。 - range
-
写在哪里。这个
range
参数与其他地方的range
(例如range_read()
)有重要的相似之处和不同之处:-
相似之处:可以是单元格范围,使用 A1 表示法 ("A1:D3") 或使用
cell-specification
中的帮助程序。可以组合工作表名称和单元格范围 ("Sheet1!A5:A") 或按名称引用工作表(range = "Sheet1"
,尽管为了清晰起见,首选sheet = "Sheet1"
)。 -
区别:不能是命名范围。
-
区别:
range
可以解释为目标矩形的起点(左上角),或者更确切地说,解释为实际的目标矩形。有关详细信息,请参阅"Range specification" 部分。
-
- col_names
-
逻辑,表示是否发送
data
的列名。 - reformat
-
逻辑,指示是否重新格式化受影响的单元格。目前 googlesheets4 不提供对格式的真正支持,因此
reformat = TRUE
实际上意味着编辑的单元格变为未格式化。
值
输入 ss
,作为 sheets_id
的实例
范围规格
range_write()
的 range
参数很特殊,因为 Sheets API 可以通过两种不同的方式实现它:
-
如果
range
恰好代表1个单元格,如"B3",则将其作为目标单元格矩形的起点(或左上角)。编辑的单元格由我们正在编写的data
的范围隐式确定。这使您无需根据data
的尺寸进行繁琐的范围计算。 -
如果
range
说明了一个包含多个单元格的矩形,则它将被解释为要编辑的实际矩形。可以说明一个在右侧(例如"B2:4")、在底部(例如"A4:C")或在右侧和底部(例如cell_limits(c(2, 3), c(NA, NA))
)无边界的矩形。请注意,矩形内的所有单元格重要提示:如果data
对象不够大,无法填充目标矩形,则未接收新数据的单元格将被有效清除,即删除现有的值和格式。
也可以看看
如果需要更改纸张尺寸,请创建 UpdateSheetPropertiesRequest
:
主要数据写入是通过 UpdateCellsRequest
完成的:
其他写入函数:gs4_create()
、gs4_formula()
、range_delete()
、range_flood()
、sheet_append()
、sheet_write()
例子
# create a Sheet with some initial, empty (work)sheets
(ss <- gs4_create("range-write-demo", sheets = c("alpha", "beta")))
#> ✔ Creating new Sheet: range-write-demo.
#>
#> ── <googlesheets4_spreadsheet> ───────────────────────────────────────────
#> Spreadsheet name: range-write-demo
#> ID: 1Ct5y25RxCDJMqinkokSc2oLTF_Y5QqLj8h1_gEEiGMw
#> Locale: en_US
#> Time zone: Etc/GMT
#> # of sheets: 2
#>
#> ── <sheets> ──────────────────────────────────────────────────────────────
#> (Sheet name): (Nominal extent in rows x columns)
#> alpha: 1000 x 26
#> beta: 1000 x 26
df <- data.frame(
x = 1:3,
y = letters[1:3]
)
# write df somewhere other than the "upper left corner"
range_write(ss, data = df, range = "D6")
#> ✔ Editing range-write-demo.
#> ✔ Writing to sheet alpha.
# view your magnificent creation in the browser
gs4_browse(ss)
# send data of disparate types to a 1-row rectangle
dat <- tibble::tibble(
string = "string",
logical = TRUE,
datetime = Sys.time()
)
range_write(ss, data = dat, sheet = "beta", col_names = FALSE)
#> ✔ Editing range-write-demo.
#> ✔ Writing to sheet beta.
# send data of disparate types to a 1-column rectangle
dat <- tibble::tibble(
x = list(Sys.time(), FALSE, "string")
)
range_write(ss, data = dat, range = "beta!C5", col_names = FALSE)
#> ✔ Editing range-write-demo.
#> ✔ Writing to sheet beta.
# clean up
gs4_find("range-write-demo") %>%
googledrive::drive_trash()
#> File trashed:
#> • range-write-demo <id: 1Ct5y25RxCDJMqinkokSc2oLTF_Y5QqLj8h1_gEEiGMw>
相关用法
- R googlesheets4 range_autofit 自动调整列或行以适应数据
- R googlesheets4 range_speedread 将工作表读取为 CSV
- R googlesheets4 range_read_cells 从工作表中读取单元格
- R googlesheets4 range_delete 删除单元格
- R googlesheets4 range_flood 淹没或清除一系列单元格
- R googlesheets4 range_read 将工作表读入 DataFrame 中
- 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等大神的英文原创作品 (Over)write new data into a range。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。