首页 > 解决方案 > Google Sheet Python API:如果不知道范围,如何在第一张表中获取值?

问题描述

用于 Google 表格的Python API有一种get从电子表格中获取值的方法,但它需要一个range参数。即,您的代码必须是这样的,

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

并且您不能省略range参数,''工作值'Sheet1'或类似的值也不能省略(除非有一张名为 的工作表Sheet1)。

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

标签: pythongoogle-sheetsgoogle-sheets-api

解决方案


spreadsheets.get您可以使用Sheets API检索电子表格的值和元数据。通过使用 的参数fields,您可以检索电子表格的各种信息。

样品 1:

此示例检索电子表格中的索引、工作表 ID 和工作表名称。在这种情况下,index: 0表示第一张纸。

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

样品 2:

此示例使用工作表索引检索工作表名称、数据范围的最后一行和最后一列的数量。当工作表索引为 0 时,表示第一个工作表。

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])

参考 :


推荐阅读