Google apps script 使用Google Apps脚本查找所有文件夹(和子文件夹)中的文档/幻灯片/工作表

Google apps script 使用Google Apps脚本查找所有文件夹(和子文件夹)中的文档/幻灯片/工作表,google-apps-script,google-sheets,google-drive-api,google-docs,google-slides,Google Apps Script,Google Sheets,Google Drive Api,Google Docs,Google Slides,从一个文件夹的链接开始,我试图获取该文件夹中所有文档/幻灯片/工作表的信息,包括子文件夹(以及子文件夹的子文件夹) 通过一些在线搜索,我终于得到了一些可以查找所有文件的代码,但我需要修改它,以便只查找文档、幻灯片和工作表。最好的方法是什么 以下是我当前使用的代码: function generateFolderTree(my_id) { var parentFolder = DriveApp.getFolderById(my_id); var f = parentFolder.getFi

从一个文件夹的链接开始,我试图获取该文件夹中所有文档/幻灯片/工作表的信息,包括子文件夹(以及子文件夹的子文件夹)

通过一些在线搜索,我终于得到了一些可以查找所有文件的代码,但我需要修改它,以便只查找文档、幻灯片和工作表。最好的方法是什么

以下是我当前使用的代码:

function generateFolderTree(my_id) {
  var parentFolder = DriveApp.getFolderById(my_id);
  var f = parentFolder.getFiles();
  Logger.log(f.next().getName())

  getChildFolders(parentFolder);
}

function getChildFolders(parent) {
  var childFolders = parent.getFolders();
  while (childFolders.hasNext()) {
    var childFolder = childFolders.next();
    var files = childFolder.getFiles();
    while (files.hasNext()) { 
      Logger.log(files.next().getName()); // Print list of files inside the folder
    }
    getChildFolders(childFolder); // Recursive call for any sub-folders
  }
}

只要稍微玩弄一下,我肯定你可以在代码中实现它;)


以下是我最终使用的代码,它似乎完成了我想要/需要的一切:

function getFolders() {
  var my_link = Browser.inputBox('Enter Folder Link', 'Paste a folder link below...', Browser.Buttons.OK);
  var my_id = getIdFromUrl(my_link);
  fcount = 2;
  SpreadsheetApp.getActiveSpreadsheet().toast("Im looking for SLIDES.", "WORKING...",600);
  generateFolderTree(my_id,MimeType.GOOGLE_SLIDES);
  SpreadsheetApp.getActiveSpreadsheet().toast("Im looking for DOCS.", "WORKING...",600);
  generateFolderTree(my_id,MimeType.GOOGLE_DOCS);
  SpreadsheetApp.getActiveSpreadsheet().toast("Im looking for SHEETS.", "WORKING...",600);
  generateFolderTree(my_id,MimeType.GOOGLE_SHEETS);
  SpreadsheetApp.getActiveSpreadsheet().toast("Your search is complete!", "FINISHED!");
};

// -------------------------------------------------------------------------------

function generateFolderTree(my_id,type) {
  var parentFolder = DriveApp.getFolderById(my_id);
  var f = parentFolder.getFilesByType(type);
  while (f.hasNext()) {
    file = f.next();
    display(file);
  }
  getChildFolders(parentFolder,type);
}

function getChildFolders(parent,type) {
  var childFolders = parent.getFolders();
  while (childFolders.hasNext()) {
    var childFolder = childFolders.next();
    var files = childFolder.getFilesByType(type);
    while (files.hasNext()) {
      mfs = files.next();
      display(mfs);
    }
    getChildFolders(childFolder,type); // Recursive call for any sub-folders
  }
}


    function myFunction() 
    {
        var folders = DriveApp.getFoldersByName("Projects");
        var folder = folders.next();
        var sheets = getFilesInFolderByType(folder, MimeType.GOOGLE_SHEETS);
        var docs = getFilesInFolderByType(folder, MimeType.GOOGLE_DOCS);
        for each (var sheet in sheets)
        {
            console.log(sheet);
        }
        for each (var doc in docs)
        {
            console.log(doc);
        }
    }

    function getFilesInFolderByType(folder, type)
    {
        var files = []
        var filesInFolder = folder.getFilesByType(type);
        while (filesInFolder.hasNext())
        {
            files.push(filesInFolder.next());
        }
        // Use method to recurse through sub folders.
        var subFolders = folder.getFolders();
        while (subFolders.hasNext())
        { 
            var fileArray = getFilesInFolderByType(subFolders.next(), type);
            files.concat(fileArray);
        } 
        return files;
    }

function getFolders() {
  var my_link = Browser.inputBox('Enter Folder Link', 'Paste a folder link below...', Browser.Buttons.OK);
  var my_id = getIdFromUrl(my_link);
  fcount = 2;
  SpreadsheetApp.getActiveSpreadsheet().toast("Im looking for SLIDES.", "WORKING...",600);
  generateFolderTree(my_id,MimeType.GOOGLE_SLIDES);
  SpreadsheetApp.getActiveSpreadsheet().toast("Im looking for DOCS.", "WORKING...",600);
  generateFolderTree(my_id,MimeType.GOOGLE_DOCS);
  SpreadsheetApp.getActiveSpreadsheet().toast("Im looking for SHEETS.", "WORKING...",600);
  generateFolderTree(my_id,MimeType.GOOGLE_SHEETS);
  SpreadsheetApp.getActiveSpreadsheet().toast("Your search is complete!", "FINISHED!");
};

// -------------------------------------------------------------------------------

function generateFolderTree(my_id,type) {
  var parentFolder = DriveApp.getFolderById(my_id);
  var f = parentFolder.getFilesByType(type);
  while (f.hasNext()) {
    file = f.next();
    display(file);
  }
  getChildFolders(parentFolder,type);
}

function getChildFolders(parent,type) {
  var childFolders = parent.getFolders();
  while (childFolders.hasNext()) {
    var childFolder = childFolders.next();
    var files = childFolder.getFilesByType(type);
    while (files.hasNext()) {
      mfs = files.next();
      display(mfs);
    }
    getChildFolders(childFolder,type); // Recursive call for any sub-folders
  }
}