Как получить FolderIterator, содержащий только прямые дочерние элементы папки на Google Диске - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь создать сценарий для вывода списка полных путей к файлам для всего, что находится на моем диске Google. Цель состоит в том, чтобы получить такой список:

./Docs/Doc1.gdoc
./Docs/Doc2.gdoc
./Docs/Doc3.gdoc
./Pics/2011/img1.jpg
./Pics/2011/img2.jpg
./Pics/2011/img3.jpg
...

Похоже, что это не так просто, как я думал, поскольку методы Google Диска, такие как getFolders(), обрабатывают все папки как подпапки.

Я пытался написать что-то рекурсивное для этого, пока не понял проблему с подпапками:

function getChildFolders(parent) {
  var childFolders = parent.getFolders();
  while (childFolders.hasNext()) {
    var childFolder = childFolders.next();    
    var pathString = childFolder.getName()
    var files = childFolder.getFiles();
    while (files.hasNext()) {
      var fullPath = parent.getName()
      var fileName = files.next().getName()      
      fullFilePath = pathString.concat('/', fileName)
      Logger.log(fullFilePath);
    }
    // Recursive call
    getChildFolders(childFolder);
  }
}

Я не могу найти способ иерархического перечисления файлов таким способом. Кто-нибудь смог сделать это?

1 Ответ

1 голос
/ 17 января 2020

Это должно сбросить то, что вы ищете:

function dumpFilesInFolder(folder, path)
{
    path = (path || "") + "/" + folder.getName();

    Logger.log(path);

    var subFolders = folder.getFolders();
    while(subFolders.hasNext())
    {
        dumpFilesInFolder(subFolders.next(), path);
    }

    var files = folder.getFiles();
    while(files.hasNext())
    {
        Logger.log(path + "/" + files.next().getName());
    }
}

function startIt()
{
    dumpFilesInFolder(DriveApp.getRootFolder());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...