使用 Sheets API v4 Java 阅读整个 Google 电子表格

Reading whole Google Spreadsheet with Sheets API v4 Java

我想阅读 Google 电子表格,如 Java 快速入门

中所述

https://developers.google.com/sheets/quickstart/java

快速入门介绍了如何从给定范围读取数据

.....
String range = "Class Data!A2:E";
ValueRange response = service.spreadsheets().values()
        .get(spreadsheetId, range)
        .execute();

List<List<Object>> values = response.getValues();
....

但我的问题是我不知道电子表格的范围。列数可以更改。那么如何在不知道范围的情况下读取 Sheet 的所有数据?

此致

迈克尔

您可以将整个 Sheet 指定为:String range = "Class Data";,对于名为 Class 数据 的 Sheet。您可以在 spreadsheets.values.get 参考的 Try it 部分看到输出。

对于那些想要使用 Spread Sheet ID(可以从 URL 获得)而不是 sheet 名称获取数据的人,以下代码片段可能会有用.它打印出在 spreadsheet 下找到的所有 sheet 名称。您可以将打印语句更改为您需要的任何内容。

spreadsheet = service.spreadsheets().get(spreadsheetId=SHEET_ID, includeGridData=True).execute()
    for sheet in spreadsheet['sheets']:
        print(sheet['properties']['title'])

如果你在 @Bardy 的回答后有点困惑(像我一样),那么下一行可以帮助你(获得 Sheet 的正确标题):

response.getSheets().get(0).getProperties().getTitle();

所以,关于话题,你可以先获取你的Spreadsheet:

   Spreadsheet response = service
        .spreadsheets()
        .get(spreadsheetId)
        .execute();

然后这样获取ValueRange:

ValueRange response1 = service.spreadsheets().values()
        .get(spreadsheetId,response.getSheets().get(0).getProperties().getTitle())
    .execute();

(假设你只有 1 个 sheet,否则尝试 debug/print 所有 sheet 与

response.getSheets()

然后找到您正在使用的 sheet 的标题。