Google Sheet Python API:如果不知道范围,如何获取第一个 sheet 中的值?

Google Sheet Python API: how get values in first sheet if don't know range?

Python API for Google sheets 有一个 get 方法来从价差 sheet 中获取值,但它需要一个 range 参数。也就是说,您的代码必须是这样的,

sheets_service = service.spreadsheets().values()
data = sheets_service.get(spreadsheetId = _GS_ID, range = _SHEET_NAME).execute()

并且您不能省略 range 参数,'' 的值或 'Sheet1' 或类似的值(除非有 sheet名为 Sheet1).

如果我提前不知道 sheet 名字怎么办?我可以以某种方式引用第一个或最左边的 sheet 吗?如果做不到这一点,是否有办法获得所有 sheet 的列表?我一直在查看 API 并没有找到任何用于该目的的东西,但这似乎是一个基本需求,我觉得我遗漏了一些明显的东西。

您可以使用 Sheets API 的 spreadsheets.get 检索 Spreadsheet 的值和元数据。通过fields的参数,可以获取Spreadsheet.

的各种信息

示例 1:

此示例在 Spreadsheet 中检索索引、sheet ID 和 sheet 名称。在这种情况下,index: 0 表示第一个 sheet.

service.spreadsheets().get(spreadsheetId=_GS_ID, fields='sheets(properties(index,sheetId,title))').execute()

示例 2:

此示例使用 sheet 索引检索 sheet 名称、数据范围的最后一行和最后一列的编号。当sheet索引使用0时,表示第一个sheet.

res = service.spreadsheets().get(spreadsheetId=_GS_ID, fields='sheets(data/rowData/values/userEnteredValue,properties(index,sheetId,title))').execute()
sheetIndex = 0
sheetName = res['sheets'][sheetIndex]['properties']['title']
lastRow = len(res['sheets'][sheetIndex]['data'][0]['rowData'])
lastColumn = max([len(e['values']) for e in res['sheets'][sheetIndex]['data'][0]['rowData'] if e])

参考:

  • spreadsheets.get
  • Convert column index into corresponding column letter
    • 对于column,您可以在上面的线程中看到关于从索引转换为字母的方法。