我正在尝试使用 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.
在您的显示脚本中,似乎使用了以下搜索查询。
为了检索某个文件夹下的所有文件夹,请使用以下搜索查询。
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
下的文件夹之外的所有文件。