如何在 GDrive v3 中列出快捷方式文件夹中的文件
How to list files in shortcut folder in GDrive v3
我正在尝试使用 GDrive API v3 列出快捷文件夹中的所有文件和文件夹。
使用 API 时,我可以使用以下请求列出所有文件:
curl \
'https://www.googleapis.com/drive/v3/files?q=%27root%27%20in%20parents&supportsAllDrives=true&supportsTeamDrives=true&key=[YOUR_API_KEY]' \
--header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
--header 'Accept: application/json' \
--compressed
其中 returns 类似于:
{
"kind": "drive#file",
"id": "xxxxxxxxxxxxxx",
"name": "Name of file here",
"mimeType": "application/vnd.google-apps.shortcut"
}
当我获取该 ID 并在上面的相同请求中使用它时,它适用于 "mimeType": "application/vnd.google-apps.folder"
。我得到一个空的负载:
{
"kind": "drive#fileList",
"incompleteSearch": false,
"files": []
}
我是否使用了错误的端点?我还需要向 API 请求添加其他内容吗?
快捷方式与其指向的目录不同义。您将需要发出两个请求,一个是从快捷方式获取目标 ID(“targetId”),然后是另一个调用以查找带有 targetId in parents
.
的文件
您的云端硬盘中的快捷方式项具有包含实际文件夹 ID 的属性。
例如,如果您在发出请求时只有一个指向云端硬盘文件夹的快捷方式,那么在列出根目录中的所有文件时,您将得到 两个结果。
- MIME 类型为“快捷方式”的一个 - 这是快捷方式。
- mime 类型为“文件夹”的一个 - 似乎 API 列出了这个。
如果由于某种原因你只得到了快捷方式,你可以得到快捷方式的详细信息:
请求
curl \
'https://www.googleapis.com/drive/v3/files/[YOUR_SHORTCUT_ID]?fields=*&key=[YOUR_API_KEY]' \
--header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
--header 'Accept: application/json' \
--compressed
回应
(我已经从响应中删除了大部分字段)
{
"kind": "drive#file",
"id": "[YOUR_SHORTCUT_ID]",
"name": "[YOUR_SHORTCUT_NAME]",
"mimeType": "application/vnd.google-apps.shortcut",
"starred": false,
"trashed": false,
"shortcutDetails": {
"targetId": "[THE_ACTUAL_FOLDER_ID]",
"targetMimeType": "application/vnd.google-apps.folder"
}
}
在 shortcutDetails
内是 targetId
。
之后,您可以使用适当的 "ID" in parents
.
编写您的原始请求
参考
我正在尝试使用 GDrive API v3 列出快捷文件夹中的所有文件和文件夹。
使用 API 时,我可以使用以下请求列出所有文件:
curl \
'https://www.googleapis.com/drive/v3/files?q=%27root%27%20in%20parents&supportsAllDrives=true&supportsTeamDrives=true&key=[YOUR_API_KEY]' \
--header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
--header 'Accept: application/json' \
--compressed
其中 returns 类似于:
{
"kind": "drive#file",
"id": "xxxxxxxxxxxxxx",
"name": "Name of file here",
"mimeType": "application/vnd.google-apps.shortcut"
}
当我获取该 ID 并在上面的相同请求中使用它时,它适用于 "mimeType": "application/vnd.google-apps.folder"
。我得到一个空的负载:
{
"kind": "drive#fileList",
"incompleteSearch": false,
"files": []
}
我是否使用了错误的端点?我还需要向 API 请求添加其他内容吗?
快捷方式与其指向的目录不同义。您将需要发出两个请求,一个是从快捷方式获取目标 ID(“targetId”),然后是另一个调用以查找带有 targetId in parents
.
您的云端硬盘中的快捷方式项具有包含实际文件夹 ID 的属性。
例如,如果您在发出请求时只有一个指向云端硬盘文件夹的快捷方式,那么在列出根目录中的所有文件时,您将得到 两个结果。
- MIME 类型为“快捷方式”的一个 - 这是快捷方式。
- mime 类型为“文件夹”的一个 - 似乎 API 列出了这个。
如果由于某种原因你只得到了快捷方式,你可以得到快捷方式的详细信息:
请求
curl \
'https://www.googleapis.com/drive/v3/files/[YOUR_SHORTCUT_ID]?fields=*&key=[YOUR_API_KEY]' \
--header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
--header 'Accept: application/json' \
--compressed
回应
(我已经从响应中删除了大部分字段)
{
"kind": "drive#file",
"id": "[YOUR_SHORTCUT_ID]",
"name": "[YOUR_SHORTCUT_NAME]",
"mimeType": "application/vnd.google-apps.shortcut",
"starred": false,
"trashed": false,
"shortcutDetails": {
"targetId": "[THE_ACTUAL_FOLDER_ID]",
"targetMimeType": "application/vnd.google-apps.folder"
}
}
在 shortcutDetails
内是 targetId
。
之后,您可以使用适当的 "ID" in parents
.