在 gspread (Python) 下方插入新行?
Inserting new row below in gspread (Python)?
我正在使用 gspread
模块,最近遇到了 insert_row()
的这个问题:默认情况下,此函数会在上面添加一个新行。这种方法的问题是“在上方添加行”会将行的格式向上拖动。同样,“在下方添加行”会将行的格式向下拖动。
在我的电子表格中有小节,每个小节都有不同的格式和公式,例如范围 A1:J15 是一个小节。然后,第 16-17 行作为分隔符,颜色为深灰色,其中没有任何信息或公式。
我想扩大范围 A1:J15。我认为使用 sheet_instance.insert_row(values=None, index=row_index)
会很容易,但是,如上所述,如果我将 row_index
设置为 16 以在上面添加新行,深灰色分隔符现在将获得一个新行,我将失去所有该部分中(新)第 16 行的公式。
如果我将 row_index
设置为 15,我将拥有新行的公式和格式。但是,在这种情况下(新的)第 15 行将不在正确的位置,因为该数据必须在该部分的最后一行,但是由于 gspread
添加了上面的行,现在是最后两行的数据被交换,这是不正确的。
有没有办法强制insert_row()
向下添加行?如果没有,我还有什么其他选择可以避免这个问题?
编辑:
我也尝试使用 append_rows()
将其 table_range
属性设置为与我的子部分范围相同,即 A1:J15 但没有成功:
sheet_instance.append_rows(values=[None]*2, insert_data_option='INSERT_ROWS', table_range='A1:J15')
我设法解决了。原来 Google 工作表 API 中有一个“Insert empty row/column”请求,它有一个 inheritFromBefore
参数,正是我需要的那个。通过将此参数设置为 True
,我可以强制从上方插入拖动格式,即复制“在下方插入行”功能。
我的代码如下:
body = {
'requests': {
'insertDimension': {
"range": {
"sheetId": sheet_instance.id,
"dimension": "ROWS",
"startIndex": row_idx-1,
"endIndex": row_idx
},
"inheritFromBefore": True
}
}
}
for _ in range(3):
response = service.spreadsheets().batchUpdate(
spreadsheetId=sheet_id,
body=body).execute()
以上代码在原始 row_idx
行之前插入 3 个新行。
我正在使用 gspread
模块,最近遇到了 insert_row()
的这个问题:默认情况下,此函数会在上面添加一个新行。这种方法的问题是“在上方添加行”会将行的格式向上拖动。同样,“在下方添加行”会将行的格式向下拖动。
在我的电子表格中有小节,每个小节都有不同的格式和公式,例如范围 A1:J15 是一个小节。然后,第 16-17 行作为分隔符,颜色为深灰色,其中没有任何信息或公式。
我想扩大范围 A1:J15。我认为使用 sheet_instance.insert_row(values=None, index=row_index)
会很容易,但是,如上所述,如果我将 row_index
设置为 16 以在上面添加新行,深灰色分隔符现在将获得一个新行,我将失去所有该部分中(新)第 16 行的公式。
如果我将 row_index
设置为 15,我将拥有新行的公式和格式。但是,在这种情况下(新的)第 15 行将不在正确的位置,因为该数据必须在该部分的最后一行,但是由于 gspread
添加了上面的行,现在是最后两行的数据被交换,这是不正确的。
有没有办法强制insert_row()
向下添加行?如果没有,我还有什么其他选择可以避免这个问题?
编辑:
我也尝试使用 append_rows()
将其 table_range
属性设置为与我的子部分范围相同,即 A1:J15 但没有成功:
sheet_instance.append_rows(values=[None]*2, insert_data_option='INSERT_ROWS', table_range='A1:J15')
我设法解决了。原来 Google 工作表 API 中有一个“Insert empty row/column”请求,它有一个 inheritFromBefore
参数,正是我需要的那个。通过将此参数设置为 True
,我可以强制从上方插入拖动格式,即复制“在下方插入行”功能。
我的代码如下:
body = {
'requests': {
'insertDimension': {
"range": {
"sheetId": sheet_instance.id,
"dimension": "ROWS",
"startIndex": row_idx-1,
"endIndex": row_idx
},
"inheritFromBefore": True
}
}
}
for _ in range(3):
response = service.spreadsheets().batchUpdate(
spreadsheetId=sheet_id,
body=body).execute()
以上代码在原始 row_idx
行之前插入 3 个新行。