如何获取仅包含Google云端硬盘中文件夹的直接子级的文件夹迭代器



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

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

这似乎并不像我想象的那么简单,因为像getFolders()这样的Google云端硬盘方法将所有文件夹视为子文件夹。

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

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

最新更新