Поиск Google Drive для файла - PullRequest
       10

Поиск Google Drive для файла

0 голосов
/ 21 февраля 2019

Я пытаюсь написать скрипт для поиска файла на моем Google Диске.Поиск должен искать только имя файла (но не его содержимое) и искать строку в этом имени.

Например, есть файл с именем «2018-08-06_Miller_576132063_17.25.pdf», и я хочу, чтобы мой сценарий поиска «576132063» и получить идентификатор файла.

Если это имеет значение, Я буду искать в подпапках папки: "0B1-kfT4ZOAitb1lZSzM5YXR6czA"

function FileFinder() {

  var ShowMeCC = '576132063';
  var files = DriveApp.getFolderById('0B1-kfT4ZOAitb1lZSzM5YXR6czA').searchFiles('title contains  "' + ShowMeCC + '" ');
  while (files.hasNext()) {
    var file = files.next();
    var fnaMe = file.getName();
    var fID = file.getId();
    Logger.log(fID);
  }

}

Поиск ничего не найдет.

Это кажется базовым, но я не могу найти никого, кто спросил этот конкретныйвопрос.

Заранее спасибо!

1 Ответ

0 голосов
/ 21 февраля 2019
  • Вы хотите получить файлы с именем файла, включая строку ShowMeCC.

Если мое понимание верно, как насчет этого обходного пути?

Официальный документ гласит следующее.

Оператор содержимого выполняет только сопоставление префиксов для заголовка.Например, заголовок «HelloWorld» будет соответствовать для заголовка, содержащего «Hello», но заголовок не содержит «World».

Таким образом, к сожалению, файл 2018-08-06_Miller_576132063_17.25.pdf не может быть непосредственно получен с помощью title contains '576132063'.Таким образом, в качестве обходного пути, рассматривается следующий обходной путь.

  • Поиск файла после того, как все файлы были получены.

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

  1. Получить файлы, используя запрос fullText contains '576132063'.
    • fullText contains '576132063' может искать имя файла как 2018-08-06_Miller_576132063_17.25.pdf.
  2. Извлечение файла из файлов, полученных с помощью fullText contains '576132063'.

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

Модифицированный скрипт 1:

function FileFinder() {
  var ShowMeCC = '576132063';
  var files = DriveApp.searchFiles('fullText contains "' + ShowMeCC + '"'); // Modified
  // OR var files = DriveApp.getFolderById('0B1-kfT4ZOAitb1lZSzM5YXR6czA').searchFiles('fullText contains "' + ShowMeCC + '"'); // Modified
  while (files.hasNext()) {
    var file = files.next();
    var fnaMe = file.getName();
    if (fnaMe.indexOf(ShowMeCC) > -1) { // Added
      var fID = file.getId();
      Logger.log(fnaMe);
      Logger.log(fID);
    }
  }
}

Ссылка:

Если эта модификация оказалась не тем результатом, которого вы хотите, я приношу свои извинения.

Добавлено:

В качестве еще одного примера, если вы хотите получить файл изопределенную папку, например DriveApp.getFolderById('0B1-kfT4ZOAitb1lZSzM5YXR6czA'), вы также можете использовать следующий скрипт.Когда количество файлов в папке невелико, стоимость этого метода не станет высокой.

Модифицированный скрипт 2:

function FileFinderaaa() {
  var ShowMeCC = '576132063';
  var files = DriveApp.getFolderById('0B1-kfT4ZOAitb1lZSzM5YXR6czA').getFiles();
  while (files.hasNext()) {
    var file = files.next();
    var fnaMe = file.getName();
    if (fnaMe.indexOf(ShowMeCC) > -1) {
      var fID = file.getId();
      Logger.log(fnaMe);
      Logger.log(fID);
    }
  }
}
...