Как вывести список файлов в папке ярлыков в 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
Что возвращает что-то вроде:
{
"kind": "drive#file",
"id": "xxxxxxxxxxxxxx",
"name": "Name of file here",
"mimeType": "application/vnd.google-apps.shortcut"
}
Когда я беру этот идентификатор и использую его в том же запросе выше, который работает для
"mimeType": "application/vnd.google-apps.folder"
. Я получаю пустую полезную нагрузку:
{
"kind": "drive#fileList",
"incompleteSearch": false,
"files": []
}
Я использую неправильную конечную точку? Есть ли что-то еще, что мне нужно добавить к запросу API?
2 ответа
У ярлыка на вашем Диске есть атрибут с идентификатором самой папки.
Если, например, у вас есть только один ярлык для папки на вашем Диске, когда вы делаете запрос, вы получите два результата при перечислении всех файлов в корне.
- один с 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
.
Справка
Ярлык не является синонимом каталога, на который он указывает. Вам нужно будет сделать два запроса: один для получения идентификатора цели ("targetId") из ярлыка, а затем второй вызов для поиска файлов с
targetId in parents
.