![](/img/trans.png)
[英]Is there a way to find a deviation between a1=[] and a2=[] in Python?
[英]Python gspread range in format 'A2:A', A1 notation
在 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 不支持该格式还是我使用错误?
D2:D
的 a1Notation 检索值。wks.range('D2:D')
运行时,会出现您的问题中显示的错误。如果我的理解是正确的,这个答案怎么样? 请将此视为几种可能的答案之一。
当我确认range()
的源脚本时,当range()
运行时,发现使用data = self.spreadsheet.values_get(range_label)
检索值。 所以在这种情况下,可以使用D2:D
。
但是(last_row, last_column) = a1_to_rowcol(end)
运行时,出现错误。 a1_to_rowcol()
的脚本可以在这里看到。
当a1_to_rowcol()
被确认时, D2
D2:D
的D2:D
从CELL_ADDR_RE = re.compile(r'([A-Za-z]+)([1-9]\\d*)')
的正则表达式中返回值。 但是D
的D2:D
不会从正则表达式返回值。 通过这个, raise IncorrectCellLabel(label)
被运行,然后,发生这样的错误。
为了使用D2:D
的 a1Notation 检索值,以下解决方法如何? 在此解决方法中,使用了values_get(range, params=None)
方法。 在这种情况下, D2:D
可用于从电子表格中检索值。
client = gspread.authorize(credentials)
spreadsheetId = "###" # Please set the Spreadsheet ID.
sh = client.open_by_key(spreadsheetId)
res = sh.values_get("Sheet1!D2:D") # Please set the a1Notation.
print(res) # or print(res['values'])
Sheet1
表上Sheet1
格D2:D
的值。res = sh.values_get("D2:D")
那样使用工作表名称时,将从电子表格的第一个选项卡中检索值。如果我误解了您的问题并且这不是您想要的方向,我深表歉意。
在调查这个特别的问题时,我发现没有一种非常清晰的gspread方法可以从 Google 工作表中以 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') )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.