Как рекурсивно перечислить файлы и папки Google Drive до уровня N в javascript? - PullRequest
0 голосов
/ 17 января 2019

Мне нужно перечислить все файлы и папки на диске Google до определенного уровня.Приведенный ниже код перечисляет все файлы и их папки (до тех пор, пока он не превысит свое временное ограничение) и регистрирует их.Как добавить какой-нибудь способ остановки, если он рекурсивно прошел, скажем, 3 уровня подпапок?

function listFolders(folder) {
  folder = folder || DriveApp.getRootFolder();
  var folderName = folder.getName();
  var files = folder.getFiles();
  while (files.hasNext()) {
    var fileName = files.next().getName();
    Logger.log(folderName + " :: " + fileName);
  }
  var subfolders = folder.getFolders();
  while (subfolders.hasNext()) {
    listFolders(subfolders.next());
  }
}

1 Ответ

0 голосов
/ 18 января 2019

Как насчет этой модификации? Я думаю, что есть несколько ответов для вашей ситуации. Поэтому, пожалуйста, подумайте об этом как об одном из них.

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

Когда вы используете этот модифицированный скрипт, пожалуйста, запустите main().

function main() { // Added
  const folder = // Please set here.
  const n = 3; // Please set here. This sample sets 3 as your question.
  listFolders(folder, n);
}

function listFolders(folder, n) { // Modified
  folder = folder || DriveApp.getRootFolder();
  var folderName = folder.getName();
  var files = folder.getFiles();
  while (files.hasNext()) {
    var fileName = files.next().getName();
    Logger.log(folderName + " :: " + fileName);
  }

  if (--n == 0) return; // Added

  var subfolders = folder.getFolders();
  while (subfolders.hasNext()) {
    listFolders(subfolders.next(), n); // Modified
  }
}

Примечание:

  • Ваш сценарий - Google Apps Script. Поэтому я изменил ваш скрипт как Google Apps Script.
  • Пожалуйста, измените его для вашей ситуации.

Если я неправильно понял ваш вопрос, пожалуйста, скажите мне. Я хотел бы изменить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...