Несоответствие между Drive Search и DriveApp.searchFiles (цель) - PullRequest
0 голосов
/ 01 июня 2018

Публикуем это здесь, потому что я не нашел ни одной заметки или решения в другом месте в Интернете.

В настоящее время я испытываю несоответствие между результатами поиска при использовании панели инструментов поиска дисков и функциональностью DriveApp.searchFiles() сценариев приложений, таких какследует.

Панель поиска дисков всегда возвращает полные результаты по заданному запросу [просматривая весь текст в документе и в заголовке], но DriveApp.searchFiles() - нет.Определенные файлы отсутствуют / не возвращены.

При обнаружении указанного файла, который ТОЛЬКО возвращается из панели поиска диска (тот, который не был возвращен поиском DriveApp), и открывая его, он затем начинает появляться / бытьвозвращается DriveApp.searchFiles().

Эта проблема, по-видимому, также связана с конкретным пользователем.Сценарий, который мы разрабатываем, используется несколькими пользователями, и новые пользователи (те, которые добавляются в существующую файловую систему, а затем с помощью нашего инструмента) испытывают эту проблему для большинства файлов.После чего, когда они открывают заданный «отсутствующий» файл, он снова начинает появляться в результатах поиска.

Для справки мой код выглядит следующим образом:

var targetParam = 'title contains "'+target+'" or fullText contains "'+target+'"';
var searchResults = DriveApp.searchFiles(targetParam);

Во всех случаяхВ этом случае панель поиска дисков возвращает полный список, и открытие указанного файла устраняет проблему.Учитывая масштаб того, что мы пытаемся сделать, невозможно, чтобы каждый пользователь открывал каждый файл.

Для пояснения, эти файлы находятся в большой файловой системе на дисках группы или в традиционном наборе G.Пользователи получают доступ, добавляя их в файл самого высокого уровня, на командный диск или добавляя в группу пользователей, которая уже имеет доступ к файловой системе.Все пользователи находятся в нашем домене.

Это известное несоответствие?Есть ли что-то, что я могу делать неправильно в моем поисковом запросе, чтобы вызвать это?Я заинтересован в любых потенциальных решениях или идеях.

Ответы [ 2 ]

0 голосов
/ 03 июня 2018

Возможное решение этой проблемы (у меня нет домена для тестирования) состоит в том, чтобы включить, а затем использовать Drive «расширенный сервис» , а не реализацию DriveApp.Если вы проверите API-интерфейс Drive REST для Files#list, вы заметите, что корпус по умолчанию, используемый при запросе файлов, - это файлы, к которым пользователь получил доступ.Этот корпус включает в себя любой файл, который пользователь создал самостоятельно (с помощью пользовательского интерфейса или с помощью сценария).

Таким образом, изменение корпорации поиска может быть ответом.Если вы хотите искать элементы Team Drive , вам нужно добавить еще много дополнительных вещей, поэтому я оставлю это читателю.

function searchDomain(query) {
  const listOptions = {
    q: query,
    corpora: 'domain',
  };
  const results = [];
  do {
    var search = Drive.Files.list(listOptions);
    listOptions.pageToken = search.nextPageToken;
    if (search.items)
      Array.prototype.push.apply(results, search.items);
    else
      console.log({message: "No results for search", search: query, options: listOptions});
  } while (listOptions.pageToken);
  return results;
}

Учитывая, что вы упомянули DriveApp.searchFiles вы уже знаете общую структуру для строки query, но для всех, кто ее находит, вы можете просмотреть документацию в ее формате здесь

0 голосов
/ 01 июня 2018

Просто чтобы упомянуть одну из причин, вызывающих это, из Использование групп для обмена контентом (выделение мое)

Если вы позже добавите новых участников в группу,они смогут получить доступ к документу только через URL-адрес документа .Чтобы документ отображался в представлении «Общий доступ со мной» на Google Диске нового участника, необходимо повторно предоставить документ в группу или поделиться документом с новым участником по отдельности.

...