更新 Google 电子表格中的工作表 (ruby api)
Updating a worksheetsheet within a Google Spreadsheet (ruby api)
我找到了一种将新工作表添加到现有电子表格的方法,但我似乎无法弄清楚如何格式化添加的工作表。
例如,我可以使用以下方法为电子表格中第一个工作表(即默认工作表)的 header 行着色:
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 在 documentation 中的定义方式)是设置 sheet_id 到 1 将导致引用新添加的工作表(本质上是位置 1 的工作表)。然而,当 sheet_id 设置为 1 时,返回错误 Invalid request(Google::Apis::ClientError)。
知道如何格式化 non-default 工作表的 header 行吗?
我认为您的目标和现状如下。
- 您想在 Google Spreadsheet 中使用
repeat_cell
作品 sheet,除了 sheet ID 0
。
- 您想使用 googleapis 实现此目的 ruby。
- 您已经能够使用表格 API.
获取和放置 Spreadsheet 的值
在这种情况下,使用sheet名称和spreadsheets.get方法检索sheet ID怎么样?在 Spreadsheet 中,不能使用相同的 sheet 名称。所以,在这种情况下,我认为这个方向可能对你的情况有用。当这反映到您的脚本中时,它会变成如下。
修改后的脚本:
在此脚本中,使用“Sheet2”的 sheet 名称检索 sheet ID,检索到的 sheet 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, {})
注:
如果要使用sheet索引检索sheet ID(例如,第一个和第二个sheet是0
和 1
。),您还可以使用以下脚本。
sheet_index = 1
response = sheet_service.get_spreadsheet(spreadsheet_id, fields: 'sheets(properties)')
sheet_id = response.sheets[sheet_index].properties.sheet_id
参考:
我找到了一种将新工作表添加到现有电子表格的方法,但我似乎无法弄清楚如何格式化添加的工作表。
例如,我可以使用以下方法为电子表格中第一个工作表(即默认工作表)的 header 行着色:
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 在 documentation 中的定义方式)是设置 sheet_id 到 1 将导致引用新添加的工作表(本质上是位置 1 的工作表)。然而,当 sheet_id 设置为 1 时,返回错误 Invalid request(Google::Apis::ClientError)。
知道如何格式化 non-default 工作表的 header 行吗?
我认为您的目标和现状如下。
- 您想在 Google Spreadsheet 中使用
repeat_cell
作品 sheet,除了 sheet ID0
。 - 您想使用 googleapis 实现此目的 ruby。
- 您已经能够使用表格 API. 获取和放置 Spreadsheet 的值
在这种情况下,使用sheet名称和spreadsheets.get方法检索sheet ID怎么样?在 Spreadsheet 中,不能使用相同的 sheet 名称。所以,在这种情况下,我认为这个方向可能对你的情况有用。当这反映到您的脚本中时,它会变成如下。
修改后的脚本:
在此脚本中,使用“Sheet2”的 sheet 名称检索 sheet ID,检索到的 sheet 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, {})
注:
如果要使用sheet索引检索sheet ID(例如,第一个和第二个sheet是
0
和1
。),您还可以使用以下脚本。sheet_index = 1 response = sheet_service.get_spreadsheet(spreadsheet_id, fields: 'sheets(properties)') sheet_id = response.sheets[sheet_index].properties.sheet_id