List all files and folder in google drive

前端 未结 2 1863
眼角桃花
眼角桃花 2021-01-20 22:57

I\'ve been trying to figure this out for a while now. I hope I can get some guidance on this. The purpose of the following script is to get a full list of folders and files with

2条回答
  •  隐瞒了意图╮
    2021-01-20 23:26

    Recursion is beneficial in this case. The code below calls the recursive method recurseFolder() which takes a Folder and Array as a parameter. It adds all the files in the folder to a list, then calls itself on any subfolders it finds.

    function test(){
      var root = DriveApp.getRootFolder();
      var list = [];
    
      var list = recurseFolder(root, list);
      Logger.log(JSON.stringify(list));
    
      //This is just how I am testing the outputed list. You can do what you need.
      var sheet = SpreadsheetApp.getActiveSheet();
      list.forEach(function (row){
       sheet.appendRow(row); 
      });
    }
    
    function recurseFolder(folder, list){
      var files = folder.getFiles();  
      var subfolders = folder.getFolders();
    
      while (files.hasNext()){ //add all the files to our list first.
        var file = files.next();
        var row = [];
        Logger.log("File: " + folder.getName());
        row.push(folder.getName(),file.getName(),file.getId(),file.getUrl(),file.getSize(),file.getDateCreated(),file.getLastUpdated())
        list.push(row);
      }
    
    
      while (subfolders.hasNext()){   //Recurse through child folders.
        subfolder = subfolders.next(); 
        Logger.log("Folder: " + subfolder.getName());
        list = recurseFolder(subfolder, list); //Past the original list in so it stays a 2D Array suitible for inserting into a range.
      }
    
      return list;
    }
    

    I'm not sure if the output is formatted how you intended so you might need to play with it a little. Note: It will easily time out if run on a larger Drive.

提交回复
热议问题