Google Drive API 未列出文件夹中的文件,尽管文件已存在

问题描述 投票:0回答:1

我正在尝试使用 Drive API 列出 Google Drive 中特定文件夹中的所有文件 ID。

首先,我找到这样的文件夹ID:

import requests

headers = {
    "Authorization": GCP_ACCESS_TOKEN,
    "Content-Type": "application/json"
}

# Find a folder's ID
parent_folder_id = "12345"
folder_name = "photos"
query = f"name='{folder_name}' and '{parent_folder_id}' in parents and mimeType='application/vnd.google-apps.folder' and trashed=false"
params = {
    "q": query,
    "fields": 'files(id)'
}

response = requests.get("https://www.googleapis.com/drive/v3/files", headers=headers, params=params)
print(response.json())

返回:

{'files': [{'id': "6789"}]}

现在,我正在尝试获取该文件夹中的所有文件 ID:

folder_id = "6789"
query = f"'{parent_folder_id}' in parents and mimeType='application/vnd.google-apps.file' and trashed=false"
params = {
    "q": query,
    "fields": 'files(id)'
}

response = requests.get("https://www.googleapis.com/drive/v3/files", headers=headers, params=params)
print(response.json())

但这会返回:

{"files": []}

这很奇怪,因为这个文件夹有两个文件。我不确定发生了什么。

我做错了什么?如何正确列出文件夹中的所有文件 ID?

附加信息:

•   I’m using Python and the requests library.
•   The folder definitely contains two files.
•   The authorization token is valid and working, as I can retrieve other data.
google-drive-api
1个回答
0
投票

修改要点:

  • 在您的显示脚本中,似乎使用了以下搜索查询。

    • 为了检索某个文件夹下的所有文件夹,请使用以下搜索查询。

      • query = f"name='{folder_name}' and '{parent_folder_id}' in parents and mimeType='application/vnd.google-apps.folder' and trashed=false"
      • 在这种情况下,将检索文件夹
        parent_folder_id
        下的所有文件夹。我认为在这种情况下,可能不需要使用
        name='{folder_name}'
        。因为所有文件夹和文件都是由 Google Drive 中的唯一 ID 管理的。知道ID后就可以直接使用了
    • 为了检索文件夹下的所有文件,请使用以下搜索查询。

      • query = f"'{parent_folder_id}' in parents and mimeType='application/vnd.google-apps.file' and trashed=false"

      • 在这种情况下,

        application/vnd.google-apps.file
        的mimeType文件就位于文件夹
        parent_folder_id
        下。被检索到。我猜这可能是您当前问题的原因。

如果只想检索除

parent_folder_id
文件夹下的文件夹之外的文件,可以进行以下修改吗?

来自:

query = f"'{parent_folder_id}' in parents and mimeType='application/vnd.google-apps.file' and trashed=false"

致:

query = f"'{parent_folder_id}' in parents and mimeType=!'application/vnd.google-apps.folder' and trashed=false"
  • 在此修改中,仅检索除文件夹
    parent_folder_id
    下的文件夹之外的所有文件。

参考:

© www.soinside.com 2019 - 2024. All rights reserved.