格式为“A2:A”、A1表示法的Python gspread范围

2024-09-27 00:19:37 发布

您现在位置:Python中文网/ 问答频道 /正文

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

wks.range('D2:D13')

我没有错误

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

wks.range('D2:D')

错误:

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

根据gspread api参考Worksheet.range should be using A1 notation。 根据Google's Sheets API documentation,我试图做的似乎是正确的

这是怎么回事?gspread是否不支持该格式,或者我是否使用了错误的格式


Tags: apia1格式错误rangelabelexceptionsd2
2条回答

序言

在调查这个特别的问题时,我发现非常奇怪的是,没有一个非常清晰的gspread方法从Google工作表中获取A1表示法的单个范围,但我相信这是有原因的

如文档中所述,gspread的创建者希望减少对googlesheetapi的API调用:https://docs.gspread.org/en/latest/user-guide.html#getting-all-values-from-a-row-or-a-column


答案

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

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

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

ranges = wks.batch_get( ('D2:D', 'A2:A') )
  • 您希望使用带有python的gspread,使用D2:D的a1表示法检索值
  • 在当前阶段,当运行wks.range('D2:D')时,会出现问题中显示的错误
  • 您想知道此错误的原因
  • 您已经能够使用Sheets API获取和输入Google电子表格的值

如果我的理解是正确的,那么这个答案呢?请把这看作是几个可能的答案之一

问题和解决方法:

当我确认the source script of ^{}时,当运行range()时,发现使用data = self.spreadsheet.values_get(range_label)检索值。因此,在这种情况下,可以使用D2:D

但是^{}运行时,会发生错误。可以在here看到a1_to_rowcol()的脚本

a1_to_rowcol()被确认时,D2:DD2^{}的正则表达式返回值。但是D2:DD不会从正则表达式返回值。这样,运行raise IncorrectCellLabel(label),然后发生这样的错误

解决方法:

为了使用D2:D的a1表示法检索值,下面的解决方法如何?在这个解决方法中,使用了^{}方法。在这种情况下,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表上的单元格D2:D的值
  • 当图纸名称不像res = sh.values_get("D2:D")那样使用时,将从电子表格中的第一个选项卡检索值

参考资料:

如果我误解了你的问题,而这不是你想要的方向,我道歉

相关问题 更多 >

    热门问题