使用 Sheets API v4 获取与 Google 帐户关联的所有电子表格的列表

Get the list of all spreadsheets associated with Google account using Sheets API v4

使用 Google Sheets API v4,我希望获得附加到我的帐户的电子表格列表。我做了很多研究,但还没有找到任何解决方案。

v4 API 不提供列出电子表格的方法。您需要使用驱动器 API。 Migrate from a previous API page 有一些关于如何使用驱动器 API 来做的细节。

为此,您必须使用驱动器 API。

from apiclient import discovery

credentials = get_credential_service_account()
service = discovery.build('drive', 'v3', credentials=credentials)
service.drive().list()

要获得"credentials",可以使用this code

Google的官方文档在这里:https://developers.google.com/drive/v3/reference/changes/list

要获取特定类型的所有文件的列表,您可以使用驱动器 API v3。 下面是一个从经过身份验证的用户的驱动器中获取所有工作表的示例。

drive.files.list({
    q: "mimeType='application/vnd.google-apps.spreadsheet'",
    fields: 'nextPageToken, files(id, name)'
}, (err, response) => {
    //Your code
})

您可以将 MIME 类型的文件类型作为 'q' 参数传递。您可以获得驱动器 MIME 类型列表 here.

来源:https://developers.google.com/sheets/api/guides/migration#list_spreadsheets_for_the_authenticated_user

Java 实施:

字符串url="https://www.googleapis.com/drive/v3/filesq=mimeType='application/vnd.google-apps.spreadsheet'";

public String getSheets(String url) throws UnsupportedEncodingException {

   RestTemplate restTemplate = new RestTemplate();
      HttpHeaders headers = new HttpHeaders();
      headers.add("Authorization", "Bearer " + "Access Token"); 
      HttpEntity entity = new HttpEntity(headers);
      HttpEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
      return response.getBody();
}

可以使用下面的方法生成访问令牌 link OAUth Plyaground