【问题标题】:Delete (remove) column in google sheet over gspread Python like sheet.delete_row通过 gspread Python 删除(删除)谷歌表中的列,如 sheet.delete_row
【发布时间】:2020-04-14 17:13:40
【问题描述】:

gspread google-sheet 中是否有类似 worksheet.delete_row 的方法? 我试过了:

delete = sheet.range('A1:A1000')
        for cell in delete:
            cell.value = ""
            sheet.update_cells(delete)

但这只会删除所有值,而不是列。 谁能帮帮我?

【问题讨论】:

  • 我必须为我糟糕的英语水平道歉。根据您的问题,我无法理解a method like worksheet.delete_row。可以问一下具体情况吗?
  • 在 Gspread 中有很多可能性。我可以调用 sheet.delete_row(1)。但我正在寻找删除列的解决方案。
  • 感谢您的回复。从您的回复中,我可以理解您想删除这些列。但我无法理解你的剧本和你的目标之间的关系。可以问一下具体情况吗?

标签: python google-sheets gspread


【解决方案1】:

答案:

gspread 中没有删除整个列的方法,例如 Workbook.delete_row,但是您可以通过批量更新来做到这一点。

代码示例:

spreadsheetId = "your-spreadsheet-id"
sheetId = "id-of-sheet-to-delete-column-from"

sh = client.open_by_key(spreadsheetId)

request = {
    "requests": [
        {
            "deleteDimension": {
                "range": {
                    "sheetId": sheetId,
                    "dimension": "COLUMNS",
                    "startIndex": 0,
                    "endIndex": 1
                }
            }
        }
    ]
}
result = sh.batch_update(request)

此示例将删除 A 列,但请确保将 startIndexendIndex 更改为您要删除的列范围。

编辑: 如果您不知道给定工作表的sheetId,可以使用以下方法获取:

sheetName = "theSheetName"
sheetId = sh.worksheet(sheetName)._properties["sheetId"]

请注意,电子表格的原始表格不需要这样做,因为它总是0

参考资料:


2020 年 4 月 15 日更新:

此脚本今天从pull request #759gspread master 合并为方法delete_column()

该方法将在下一版本v3.5.0中提供。

delete_columns() 的方法也作为并行方法添加到来自pull request #761 的现有delete_rows()

【讨论】:

  • 很好的答案。您有兴趣将代码贡献给 gspread 吗? (作为delete_column()方法)
  • 当然!很乐意提供帮助。我应该在github上创建一个pull req还是先提出建议问题?
  • 太棒了!不需要对此提出建议。请继续创建拉取请求。
  • Sheet1 ID 始终为 0
  • 我在答案中添加了获取特定工作表 ID 的信息,尽管电子表格的第一张(即 原始)工作表的 ID 始终为0.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-06
  • 2011-05-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多