Я работаю с Google Drive v3 и пытаюсь получить все файлы, относящиеся к следующим категориям:
- файлы, которые не являются документами Google (приложение MIME не запускается из "приложения")/vnd.google-apps. "), например," text / plain "," image / bmp "и т. д.
- Таблицы Google (тип mime -" application / vnd.google-apps.spreadsheet ")
Я хочу получить все эти файлы одним запросом.
Файлы из первой категории можно получить с помощью следующего подзапроса: not mimeType contains 'application/vnd.google-apps.'
Подзапрос длявторая категория: mimeType = 'application/vnd.google-apps.spreadsheet'
В результате я объединяю эти части с помощью оператора or
, а затем с запросом идентификатора родительской папки: '<parentId>' in parents and (mimeType = 'application/vnd.google-apps.spreadsheet' or not mimeType contains 'application/vnd.google-apps.')
Но это не работает.Он возвращает только файлы электронных таблиц Google.Я пытался выполнить запросы для обеих категорий файлов по отдельности, и они отлично работают:
'<parentId>' in parents and (mimeType = 'application/vnd.google-apps.spreadsheet')
возвращает все таблицы Google
и
'<parentId>' in parents and (not mimeType contains 'application/vnd.google-apps.')
возвращает все не-Google Driveформаты.`
В качестве эксперимента я проверил другие случаи (немного упрощенные):
mimeType = 'application/vnd.google-apps.spreadsheet' or mimeType = 'text/plain'
- возвращает таблицы + тексты, правильные mimeType = 'application/vnd.google-apps.spreadsheet' or mimeType contains 'text/plain'
- возвращает таблицытолько неверно mimeType = 'application/vnd.google-apps.spreadsheet' or not mimeType = 'text/plain'
- возвращает только электронные таблицы, неверно (у меня также есть изображения в папке) mimeType contains 'text/plain'
- возвращает тексты, правильно
Часть моего кода для запроса файлов (с заменой parentId, конечно):
Drive.Files.List filesRequest = service
.files()
.list()
.setFields("files(id, name)")
.setQ("'<parentId>' in parents " +
"and (mimeType = 'application/vnd.google-apps.spreadsheet' " +
"or not mimeType contains 'application/vnd.google-apps.')");
FileList result = filesRequest.execute();
List<File> files = result.getFiles();
Используемые версии зависимостей: google-api-services-drive от v3-rev162-1.23.0 до v3-rev173-1.25.0, JDK 1.8.0-91.
Пожалуйста, помогите.