在Google Apps脚本中,如何获取所有子文件夹和所有子子文件夹以及所有子子文件夹等?

问题描述 投票:0回答:1

我试图重命名指定文件夹中的每个文件和所有子文件夹中的所有文件,但我无法弄清楚如何这样做。到目前为止我有这个脚本重命名文件夹中的每个文件给定其ID,但我需要做所有子文件夹。

function renameFilesInFolder(folderID) {
  var folder = DriveApp.getFolderById(folderID)
  var files = folder.getFiles(),
      fileNames = []
  

  while(files.hasNext()){
    var file = files.next()
    var oldFileName = file.getName()
    var checkIfMatch = oldFileName.substring(oldFileName.length - 3);
    var newFileName = ""
    if (checkIfMatch=="OBS"){
      newFileName = oldFileName
    } else {
      newFileName =oldFileName+"_OBS"
    }
    file.setName(newFileName)
    Logger.log(newFileName)
  }
}
Thank you!
google-apps-script google-drive-sdk
1个回答
1
投票

这将通过将它们写入电子表格的文件夹进行递归。

var level=0;
function getFnF(folder) {
  var folder= folder || DriveApp.getRootFolder();
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('FilesAndFolders')
  var files=folder.getFiles();
  while(files.hasNext()) {
    var file=files.next();
    var firg=sh.getRange(sh.getLastRow() + 1,level + 1);
    firg.setValue(Utilities.formatString('File: %s', file.getName()));
  }
  var subfolders=folder.getFolders() 
  while(subfolders.hasNext()) {
    var subfolder=subfolders.next();
    var forg=sh.getRange(sh.getLastRow() + 1,level + 1);
    forg.setValue(Utilities.formatString('Fldr: %s', subfolder.getName()));
    level++;
    getFNF(subfolder);
  }
  level--;
}
© www.soinside.com 2019 - 2024. All rights reserved.