【问题标题】:How to pass string to 'ranges' parameter in spreadsheets.values.batchGet() google sheets api如何在电子表格.values.batchGet() google sheet api中将字符串传递给“范围”参数
【发布时间】:2019-11-14 05:56:49
【问题描述】:

通过 .get() 向电子表格 API 发出请求,针对单个范围,工作原理如下:

roster_import = service.spreadsheets().values().get(spreadsheetId=<SPREADSHEET ID>, ranges='<sheet name>!A1:A20', majorDimension='ROWS')

但是,由于我想要的数据无序,我想一次获取多个范围。在找到herehere 的文档中,它们都声明:

读取多个范围以下电子表格.values.batchGet 请求从 Sheet1!B:B 和 Sheet1!D:D 范围中读取值。这 ValueRenderOption UNFORMATTED_VALUE 设置表示值将 可以计算,但不会在响应中格式化。空尾行 并从响应中省略列。

请求协议如下所示。阅读和写作价值观 指南展示了如何使用 Google API 客户端库。

获取 https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId/values:batchGet? 范围=Sheet1!B:B&ranges=Sheet1!D:D&valueRenderOption=UNFORMATTED_VALUES?majorDimension=COLUMNS

响应由具有电子表格 ID 的对象和 对应于每个请求范围的 ValueRange 对象数组, 按他们被要求的顺序列出。例如:

{ “spreadsheetId”:电子表格 ID,“valueRanges”:[ { “范围”:“Sheet1!B1:B1000”, “majorDimension”:“列”, “价值观”:[ [“成本”,20.5,15,100,135.5] ] }, { “范围”:“Sheet1!D1:D1000”, “majorDimension”:“列”, “价值观”:[ [“发货日期”,42430,42444,42449,42449] ] } ] }

方法:电子表格.values.batchGet 返回一个或多个范围 电子表格中的值。调用者必须指定电子表格 ID 以及一个或多个范围。

HTTP 请求 GET https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values:batchGet

URL 使用 gRPC 转码语法。

参数

spreadsheetId - 字符串 - 要从中检索数据的电子表格的 ID。

范围 - 字符串 - 要检索的值的 A1 表示法。

它们都没有告诉我在传递到电子表格().values().batchGet()时如何格式化字符串

我尝试了以下方法:

  • ranges='!A1:A2!D1:D2'
  • ranges='!A1:A2&!D1:D2'
  • 范围='!A1:A2',范围='!D1:D2'
  • ranges='!A1:A2D1:D2'
  • ranges='!A1:A2&D1:D2'

如何格式化字符串以查询多个范围?

谢谢

位移

【问题讨论】:

  • 能否将您找到的解决方案添加为实际答案而不是编辑?它将提高与您面临相同问题的其他社区成员的可读性
  • 是的,我没有给出答案,因为我不确定礼仪,而且我之前在这样做时被骂过。现在更新:)

标签: python google-sheets


【解决方案1】:

找到答案here

引用:

range_names = [
    # Range names ...
]
result = service.spreadsheets().values().batchGet(
    spreadsheetId=spreadsheet_id, ranges=range_names).execute()
ranges = result.get('valueRanges', [])
print('{0} ranges retrieved.'.format(len(ranges)))

必要的值是一个字符串数组,每个字符串必须包含以下内容

<sheet_name>!<start_range>:<end_range>

【讨论】:

  • 如果我不知道 sheet_name 怎么办。换句话说,我想知道电子​​表格中的 sheet_names 总数。
  • @kartiktyagi 您可以在工作表上使用 getName() 方法 target_sheet.getName(),或者您可以使用 .getSheets() 获取电子表格中的工作表列表,然后循环结果工作表数组并获取它们的名称。
猜你喜欢
  • 2016-07-28
  • 1970-01-01
  • 1970-01-01
  • 2018-02-10
  • 2015-03-22
  • 1970-01-01
  • 1970-01-01
  • 2017-06-04
  • 1970-01-01
相关资源
最近更新 更多