Ответ 1
С помощью Google Диска SDK вы можете выполнить поисковый запрос <folder_id> in parents
.
Я пытаюсь использовать Google Диск в качестве хранилища для многих разных типов документов. У меня эти документы расположены в нескольких папках.
Когда я выполняю поиск, он, кажется, ищет мою учетную запись Google Диска для сопоставления результатов, независимо от того, что я сейчас в определенной папке.
Это создает проблему для меня, так как я хочу усовершенствовать свои поисковые запросы в рамках определенной группировки документов.
Если я ищу документы, связанные с моей работой, например, я не хочу, чтобы в моем поиске находились документы, которые являются личными, или в моих личных каталогах.
Есть ли способ уточнить мой поиск, чтобы показывать документы только в указанной папке и вложенных папках? Я знаю, что я могу уточнить поиск по типу файла и собственности, но это не работает для меня.
Спасибо заранее.
С помощью Google Диска SDK вы можете выполнить поисковый запрос <folder_id> in parents
.
Насколько я знаю, вам нужно будет сделать это для каждой вложенной папки, но API (и мое приложение) будет искать по папке.
Я написал приложение, которое использует API для поиска по папке. Это немного медленно, поэтому будьте терпеливы, когда он загружается.
https://script.google.com/macros/s/AKfycby6G32K-vKCiLmoKvMtG64cYPHEREEx1PY5IoYrEYaR6WAfbXs/exec
// -----------------
var sr = DocsList.getFolder("temp_scripts").find("var");
var i = 0;
for(i=0;i<sr.length;i++)
{
var r = sr[i];
Logger.log('name='+r.getName());
Logger.log('parent=' +r.getParents()[0].getName() );
Logger.log('---');
}
// -----------------
Я нашел своеобразное обходное решение, используя поле description.
В моем конкретном случае все файлы, созданные в папке, которую я хочу выполнить, создаются программно с помощью моего собственного script, но довольно просто написать script to (re) определение поля описания во все файлов в определенной папке с помощью .setDescription(DESCRIPTION)
. Как только это будет сделано...
Хорошей новостью является то, что стандартный поиск в драйвере Google дает результаты на основе поля описания, включая значение, установленное на нем в поле поиска (плюс любые данные, которые вы хотите найти в этих файлах). Вы получите результаты, которые вы необходимо.
Конечно, вам нужно скарифицировать поле описания (или, по крайней мере, перегружать его;)
Как, я думаю, все вы, я все еще жду ключевое слово папки в стандартном поле.
Код, который я включил, позволяет мне искать тело файлов в определенной папке. Я использую его для поиска отсканированных документов и переместите файл в другую папку на основе критериев поиска, которые я указываю.
Самое замечательное в том, что он будет искать тело документа и возвращать все документы, соответствующие вашим критериям поиска. Как вы можете видеть, я также могу указать диапазон дат, и вы можете использовать другие операторы для определения вашего поиска. https://developers.google.com/drive/web/search-parameters.
Это была отличная находка для меня, и я надеюсь, что это может помочь некоторым другим.
function searchFolder(){
var parent = DriveApp.getFolderById(‘*******************’); // folder Id
var search = 'modifiedDate >"2014-08-01" and modifiedDate < "2014-12-31" and fullText contains "PUT SEARCH TEXT HERE"';
var specificFolder = parent.searchFiles(search);
while (specificFolder.hasNext()) {
var file = specificFolder.next();
Logger.log(file.getName());
Logger.log(file.getId());
}
}
Я реализовал эту функцию в этом расширении Chrome. https://chrome.google.com/webstore/detail/advanced-drive-search/chomjcpadndbjgkanbaakmjehdoighab
Вы можете проверить код здесь https://github.com/kissrobber/advanced_google_drive_search_chrome_extension
Что это значит,
(<folder_id> in parents or <folder_id> in parents or ....)
Если у вас есть проблемы с производительностью, попробуйте расширение Chrome.
Существует другое обходное решение, для которого НЕ требуется стороннее приложение или расширение.
is:trashed query_string