我想知道是否可以以动态方式循环遍历包含其他文件夹的文件夹,并且其他文件夹包含其他文件夹,依此类推。我不知道有多少子文件夹有子文件夹,并且想找到一种无需硬编码即可检查的方法。下降两级很容易,但之后我就很难理解如何处理多分支并以以后可以操纵它的方式存储它。有小费吗?最后,文件夹结构将用于创建动态 Google 网站布局。
这是我迄今为止所拥有的示例:
function myFunction() {
//Get the folder
var topFolders = DocsList.getFolder('TestFolder');
var lvlOneFolders = topFolders.getFolders();
var num1Folders = lvlOneFolders.length;
var someArray = [];
for (var i = 0; i < num1Folders; i++){
someArray[i] = lvlOneFolders[i].getFolders();
}
Logger.log(someArray);
}
问候,
肖恩
function myFunctionTest() {
var site = SitesApp.getSite('finance-in-motion.com', 'test-site');
//Get the folder
var rootFolder = DocsList.getFolder('TestFolder');
var rootName = rootFolder.getName();
var files = rootFolder.getFiles();
var page;
site.createWebPage(rootName, rootName,"<h1>What evs21</h1>");
page = site.getChildByName(rootName);
createFiles(page,files);
recursTest(rootFolder);
}
function recursTest (currentFolder){
var curLength=currentFolder.getFolders().length;
for(var i = curLength; i > 0; i --){
var folders = currentFolder.getFolders();
var parentName = currentFolder.getName();
var foldername = folders[i-1].getName();
var files = folders[i-1].getFiles();
getSiteTest(foldername,parentName,files);
if(folders[i-1].getFolders().length != 0){
recursTest(folders[i-1]);
}
}
}
function getSiteTest(title,parent,files) {
var site = SitesApp.getSite('finance-in-motion.com', 'test-site');
var matches = site.search(parent);
var page = matches[0];
var child;
//create the sibling page
page.createWebPage(title, title,"<h1>What evs21</h1>");
child = page.getChildByName(title);
createFiles(child,files);
}
function createFiles(page,files){
var name;
if (files.length !=0){
for (i in files){
name = files[i].getName();
page.createWebPage(name,name,"<h1>What evs21</h1>");
}
}
}
最佳答案
碰巧我也遇到了类似的问题。我正在收集文件夹名称以及从属文件夹和文件的编号。这可能会有所帮助。
function listFolders() {
var start = new Date();
var topFolder = DocsList.getFolderById(TOP) ; // start point
var foldersArray = [];
foldersArray = getFolders(topFolder.getName(),topFolder,foldersArray);
// do what you want with array of folder data
}
function getFolders(path, container,arrayin) {
Logger.log(arrayin)
var folders = container.getFolders(0, 300);
var folderCount = folders.length;
var fileCount = container.getFiles().length;
arrayin.push([container.getId(),path,fileCount,folderCount]);
Logger.log(path + " #files= "+fileCount+ " #folders = "+folderCount);
for (var i=0;i<folders.length;i++) {
var thisFolder = folders[i].getName();
var thisPath = path+"/"+thisFolder;
getFolders(thisPath,folders[i],arrayin)
}
return arrayin;
}
我不是最伟大的 javascript 人,所以欢迎对递归的东西进行改进
关于javascript - 在 Docslist 中查找文件夹是否有子文件夹,以及该子文件夹是否有子文件夹等等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15813879/