首页 > 解决方案 > Python gspread range 格式为“A2:A”,A1 表示法

问题描述

在 gspread 中,如果我执行以下操作

wks.range('D2:D13')

我没有错误。

但是,如果我想从第 2 行获取“D”列中的所有行,使用 A1 表示法会出现错误:

wks.range('D2:D')

错误:

raise IncorrectCellLabel(label)
gspread.exceptions.IncorrectCellLabel: D

根据 gspread api 参考,Worksheet.range 应该使用 A1 notation根据Google 的 Sheets API 文档,我正在尝试做的似乎是正确的。

这里发生了什么?gspread 不支持该格式还是我用错了?

标签: pythongoogle-sheetsgoogle-apispreadsheetgspread

解决方案


前言

在调查这个特别的问题时,我发现没有一种非常清晰的gspread方法可以从 Google Worksheet 中获取 A1 符号的单个范围,这真的很奇怪,但我相信这是有原因的。

如文档中所述,gspread 的创建者希望减少对 Google Sheet API 的 API 调用:https ://docs.gspread.org/en/latest/user-guide.html#getting-all-values-from-一行或一列


答案

无论如何,有一个鬼鬼祟祟的 gspread 提供的方法可以通过batch_get方法获得一个或多个特定范围。你应该试试:

wks.batch_get( ('D2:D',) )[0]

更好的是,如果您想一次获得几个不同的范围(通过一个 API 调用),您可以调用:

ranges = wks.batch_get( ('D2:D', 'A2:A') )

推荐阅读