ruby - 在 Google 电子表格 (ruby api) 中更新工作表
问题描述
我想出了一种将新工作表添加到现有电子表格的方法,但我似乎无法弄清楚如何格式化添加的工作表。
例如,我可以使用以下方法为电子表格中的第一个工作表(即默认工作表)的标题行着色:
def color_header_row(file)
spreadsheet_id = file.id
requests = {
requests: [
{
repeat_cell: {
range: {
sheet_id: 0,
start_row_index: 0,
end_row_index: 1
},
cell: {
user_entered_format: {
background_color: { red: 0.0, green: 0.4, blue: 0.0 },
horizontal_alignment: "CENTER",
text_format: {
foreground_color: {
red: 1.0,
green: 1.0,
blue: 1.0
},
font_size: 12,
bold: true
}
}
},
fields: 'userEnteredFormat(backgroundColor,textFormat,horizontalAlignment)'
},
}
]
}
sheet_service.batch_update_spreadsheet(spreadsheet_id, requests, {})
end
请注意,默认工作表 sheet_id 为 0,因此我的假设(考虑到文档中如何定义 GridRange )是将 sheet_id 设置为 1 将导致对新添加的工作表的引用(本质上是位置 1 的工作表)。然而,当 sheet_id 设置为 1 时,返回错误Invalid request(Google::Apis::ClientError)。
关于如何格式化非默认(即不是电子表格中第一个位置的工作表)工作表的标题行的任何想法?
解决方案
我相信你的目标和你目前的情况如下。
- 您想
repeat_cell
用于 Google 电子表格中的工作表,但工作表 ID 除外0
。 - 您想使用 googleapis for ruby 来实现这一点。
- 您已经能够使用 Sheets API 获取和放置电子表格的值。
在这种情况下,如何使用电子表格的方法使用工作表名称检索工作表 ID。在电子表格中,不能使用相同的工作表名称。所以,在这种情况下,我认为这个方向可能对你的情况有用。当这反映到您的脚本中时,它变成如下。
修改后的脚本:
在此脚本中,使用工作表名称“Sheet2”检索工作表 ID,并将检索到的工作表 ID 用于repeat_cell
请求。
sheet_name = 'Sheet2' # Please set the sheet name.
spreadsheet_id = file.id
response = sheet_service.get_spreadsheet(spreadsheet_id, ranges: [sheet_name], fields: 'sheets(properties)')
sheet_id = response.sheets[0].properties.sheet_id
requests = {
requests: [
{
repeat_cell: {
range: {
sheet_id: sheet_id,
start_row_index: 0,
end_row_index: 1
},
cell: {
user_entered_format: {
background_color: { red: 0.0, green: 0.4, blue: 0.0 },
horizontal_alignment: "CENTER",
text_format: {
foreground_color: {
red: 1.0,
green: 1.0,
blue: 1.0
},
font_size: 12,
bold: true
}
}
},
fields: 'userEnteredFormat(backgroundColor,textFormat,horizontalAlignment)'
},
}
]
}
sheet_service.batch_update_spreadsheet(spreadsheet_id, requests, {})
笔记:
如果要使用工作表索引检索工作表 ID(例如,第 1 和第 2 个工作表分别为
0
和1
。),您还可以使用以下脚本。sheet_index = 1 response = sheet_service.get_spreadsheet(spreadsheet_id, fields: 'sheets(properties)') sheet_id = response.sheets[sheet_index].properties.sheet_id
参考:
推荐阅读
- node.js - 无法在 Ubuntu 中卸载 Angular CLI - 它说“在 0.083 秒内是最新的”
- wix - 如何将 CustomAction.CA.dll 嵌入到 MSI?
- c++ - CLANG 3.42 中的误报
- for-loop - 合并在terraform中失败
- loops - 插入时随机删除重复
- javascript - 如何更改点击操作以转到链接而不是输入文本
- r - 使用示例数据时 tmaptools 包读取 osm 中的参数错误
- c - 如何指定内核模块的编译优化级别
- docker - Docker 容器使用主机的特定网络接口
- c# - 跳过特定控制器 API 上的 [Authorize] 属性以进行可选授权是否安全?