Search Files inside Sub-folders in Google Drive

Like the previous script for listing Google Drive files, this Google Script will find all files of any particular MIME type in your Google Drive.

Unlike the DriveApp.getFilesByType() method that will only search for files in the immediate folder, this Google Script will also search for files inside the sub-folders.


/* Adapted from: http://qiita.com/atsaki/items/60dbdfe5ab5133a5f875 */
function getDriveFiles(folder, path) {

    // If Drive folder is not specified, start from the root folder
    if (folder == null && path == null) {
        return getDriveFiles(DriveApp.getRootFolder(), "");
    }

    var files = [];
    path = path + "/" + folder.getName();

    // Specify the MimeType of files you wish to search
    var fileIt = folder.getFilesByType(MimeType.GOOGLE_SHEETS);
    while ( fileIt.hasNext() ) {
        var f = fileIt.next();
        files.push({id: f.getId(), path: path + "/" + f.getName()});
    }

    // Get all the sub-folders and iterate
    var folderIt = folder.getFolders();
    while(folderIt.hasNext()) {
        fs = getDriveFiles(folderIt.next(), path);
        for (var i = 0; i < fs.length; i++) {
            files.push(fs[i]);
        }
    }
    
    return files;
}