Сортировка Документов Google в папки Google Диска на основе общей строки в именах файлов и папок - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть сотни Документов Google и множество папок Google.Они имеют общую строку в имени файла.Документы нужно перейти в соответствующую папку, и я хотел бы автоматизировать это с помощью некоторого скрипта.

Я хочу сделать следующее:

У меня есть сотни Документов Google, которыеследуйте аналогичной схеме в имени файла:

SURNAME, Forename_userID_fileName

Так, например,

DOE, Jane_jd5678_Document3
PUBLIC, Tom_tp9123_reportTPS
SMITH, John_js1234_finaldocument

и т. д. и т. п.

Iтакже есть соответствующие папки в Google Team Drive, настроенные следующим образом:

SURNAME, Forename (userCode) (userID) - userType

Так, например,

DOE, Jane (145374578) (jd5678) - AET Full Time
PUBLIC, Tom (673468714) (tp9123) - NR Full Time
SMITH, John (874512456) (js1234) - AET Part Time

Общая строка между файлами иимена папок - строка userID .

В настоящее время я загружаю все документы, а затем загружаю перетаскивание в каждую соответствующую папку.Требуется возраст!Я надеялся, что есть немного Apps Script, который я могу сделать, чтобы автоматизировать это, но я действительно не знаю, с чего начать.У кого-нибудь есть указатели?

Этот вопрос StackOverflow , кажется, хочет сделать то, что я хочу, но, поскольку я такой новичок в скрипте приложений, я не могу действительно расшифровать решение.

1 Ответ

0 голосов
/ 26 апреля 2019

Это базовый пример, указывающий правильное направление с использованием базового скрипта Google Apps DriveApp (в отличие от расширенной версии служб сценариев или других методов Google Drive API).Основное беспокойство, которое приходит на ум, - это время ожидания сценария, если выполнение этого примера занимает слишком много времени.Если это произойдет, вам понадобится более сложное решение.Вы также можете разбить его на части, используя только idRegex, например, фамилии AD, затем EG и т. Д. Пример регулярного выражения может соответствовать случайным файлам, имеющимся у вас с подчеркиванием;Вы можете захотеть найти более сложное регулярное выражение, если это вызывает озабоченность.

function organizeFilesById() {
  var idRegex = /_[A-z]+[0-9]+_/;
  var files = DriveApp.getFiles();
  while (files.hasNext()) {
    var file = files.next();
    var filename = file.getName();
    var id = idRegex.exec(filename);
    if (! id) {
      continue;
    } else {
      id = id[0];
    }
    var query = "title contains '" + id + "'";
    var folders = DriveApp.searchFolders(query);
    if (folders.hasNext()) {
      var folder = folders.next();
      Logger.log("Will add %s to %s", filename, folder.getName());
      //folder.addFile(file); // uncomment line to actually do it
    } else {
      Logger.log("No folder found for %s", filename);
      // could create folder or just report "folder not found"
    }
  }
}
...