javascript - 在 Docslist 中查找文件夹是否有子文件夹,以及该子文件夹是否有子文件夹等等

标签 javascript google-apps-script

我想知道是否可以以动态方式循环遍历包含其他文件夹的文件夹,并且其他文件夹包含其他文件夹,依此类推。我不知道有多少子文件夹有子文件夹,并且想找到一种无需硬编码即可检查的方法。下降两级很容易,但之后我就很难理解如何处理多分支并以以后可以操纵它的方式存储它。有小费吗?最后,文件夹结构将用于创建动态 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/

相关文章:

javascript - 图像未显示在从 HTML 创建的 PDF 上

javascript - Google Apps 脚本 - 以另一个用户身份运行脚本(使用密码)

javascript - 脚本冲突

google-apps-script - 将带有图标的项目添加到 Google Apps 脚本的菜单中

javascript - Google map API place.url 返回 "undefined"?

javascript - RaphaelJS Set.forEach()

javascript - 如何更改绝对位置div的css属性与父div id

javascript - 我想将 reviewsmaker.com iframe 集成到网站主页以显示评论,但它在页面加载期间被重定向到他们的网站

javascript - 不带参数的引导警报方法

javascript - 在Twitter中使用node.js API回复twitter的直接消息