javascript - 如何获取仅包含 Google Drive 中文件夹的直接子级的FolderIterator

标签 javascript google-apps-script tree google-drive-api

我正在尝试创建一个脚本来打印我的 Google 驱动器中所有内容的完整文件路径列表。目标是拥有一个像这样的列表:

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

看来这并不像我想象的那么简单,因为像 getFolders() 这样的 Google Drive 方法将所有文件夹视为子文件夹。

我尝试编写一些递归方法来执行此操作,直到我意识到子文件夹问题:

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);
  }
}

我无法找到一种以分层方式列出文件的方法。有人能做到吗?

最佳答案

这应该转储您正在寻找的内容:

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());
}

关于javascript - 如何获取仅包含 Google Drive 中文件夹的直接子级的FolderIterator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59793340/

相关文章:

javascript - onclick javascript 函数仅在第二次单击时起作用

javascript - 适合包含两个图像的框

google-apps-script - 自动查找并永久删除Google云端硬盘中的垃圾项目

c# - 使用 C# 和 gppg,我将如何构建抽象语法树?

node.js - 如何覆盖 Windows 树命令?

javascript - 一个 javascript 文件可以包含在两个 HTML 文档中吗?

javascript - 使用 JQuery 更改背景

python - 您可以将 Google Apps 脚本与 Python 一起使用吗?

google-apps-script - (如何)我可以在 Google Apps 脚本中使用模块模式?

Python 元素树写入新文件