Google Sheet Python API:如果不知道范围,如何在第一张表中获取值?

时间:2018-08-15 00:27:47

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

Python API for Google sheets有一个get方法可以从电子表格中获取值,但是它需要一个range参数。也就是说,您的代码必须是这样的

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

,您不能省略range参数,也不能使用值''或值'Sheet1'或类似值(除非存在名为Sheet1的工作表) )。

如果我不知道工作表名称怎么办?我可以以某种方式引用第一张纸或最左边的纸吗?如果失败,是否有办法获取所有工作表的列表?我一直在查看API并没有为此目的找到任何东西,但这似乎是一种基本需求,我觉得我缺少明显的东西。

1 个答案:

答案 0 :(得分:1)

您可以使用Sheets API的spreadsheets.get来检索Spreadsheet的值和元数据。通过使用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])

参考: