【问题标题】:Inserting new row below in gspread (Python)?在 gspread (Python) 中插入新行?
【发布时间】:2021-03-28 20:29:40
【问题描述】:

我正在使用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')

【问题讨论】:

    标签: python google-sheets-api gspread


    【解决方案1】:

    我设法解决了。原来在 Google Sheets 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个新行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      相关资源
      最近更新 更多