在Google Apps脚本中,我如何获取所有子文件夹,所有子子文件夹以及所有子子文件夹等? [英] In Google Apps Script, how would I get all subfolders and all subsubfolders and all subsubsub folders etc.?

查看:105
本文介绍了在Google Apps脚本中,我如何获取所有子文件夹,所有子子文件夹以及所有子子文件夹等?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试重命名指定文件夹中的每个文件以及所有子文件夹中的所有文件,但是我不知道该怎么做.到目前为止,我有此脚本可以根据其ID重命名文件夹中的每个文件,但我需要执行所有子文件夹.

I am attempting to rename every file in a specified folder and all files in all subfolders but I cannot figure out how to do so. I so far have this script that renames every file in a folder given its Id, but I need to do all subfolders.

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)
  }
}

谢谢!

推荐答案

这将遍历将其写入电子表格的文件夹.

This will recurse through the folder writing them into a spreadsheet.

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--;
}

这篇关于在Google Apps脚本中,我如何获取所有子文件夹,所有子子文件夹以及所有子子文件夹等?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆