指定有效的"范围"对于批量值请求

时间:2017-08-07 04:39:53

标签: python google-sheets-api google-api-python-client

我正在使用适用于Python的Google表格API快速入门。我试图从Google工作表api中一次拉出多个单元格,一次只有一个单元格,并将每个值插入到文本文档中。我已经使用spreadsheets().values().get()执行了此操作,但我过多地使用了API,而batchGet()方法似乎会更好。我仔细阅读了Google表格API第4版,但无法在ranges上找到spreadsheets().values().batchGet()参数的正确格式。根据文档,它似乎需要一个字符串数组,或者可能是一个JSON对象,但是文档中没有格式的例子(事实上,它说// TODO!)。有谁知道正确的格式?我试过了:

spreadsheetId = 098217340987123049817235blahblahblah
ranges = ["A100:A100, "B100:B100"]
spreadsheets().values().batchGet(spreadsheetId=spreadsheetId, ranges=ranges)

spreadsheetId = 098217340987123049817235blahblahblah
ranges = ["A100:A100"]
spreadsheets().values().batchGet(spreadsheetId=spreadsheetId, ranges=ranges)

只是一个确定的字符串

spreadsheetId = 098217340987123049817235blahblahblah
ranges = "A100:A100"
spreadsheets().values().batchGet(spreadsheetId=spreadsheetId, ranges=ranges)

其中每一项都会返回[]

当我使用spreadsheets().values().get()ranges="A100:A100时,函数返回[['cellvalue']],因此我知道那里有数据。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用batchGet

签入此link示例代码
spreadsheetId = '1SizdeufKaODnq3WMV3T3uS2W47v4mZJeqYg2J1MiP9k'
rangeName = 'Sheet1!A2:A'
result = service.spreadsheets().values().get(spreadsheetId=spreadsheetId, range=rangeName).execute()

由于ranges是要检索的值的A1 notation,因此这是一个类似于Sheet1!A1:B2的字符串,它引用电子表格中的一组单元格,通常用于公式中。

例如,有效范围是:

  • Sheet1!A1:B2指的是Sheet1前两行中的前两个单元格。
  • Sheet1!A:A指的是Sheet1第一列中的所有单元格。
  • Sheet1!1:2指的是Sheet1前两行中的所有单元格。
  • Sheet1!A5:A引用第1页第1列的所有单元格,从第5行开始。
  • A1:B2指的是第一张可见纸张的前两行中的前两个单元格。
  • Sheet1指的是Sheet1中的所有单元格。

也支持命名范围。当命名范围与工作表名称冲突时,首选命名范围。

如果工作表名称包含空格或以括号开头,请使用单引号(')包围工作表名称,例如'Sheet One'!A1:B2。为简单起见,始终用单引号括起工作表名称是安全的。