2018年4月1日日曜日

Google Apps Script で指定フォルダ以下のファイルを処理する方法(2)

概要
Google Apps Script で指定フォルダ以下のファイルを処理する方法(1)とは別の方法も記録として残しておく。どちらが良いかは検索範囲や階層の深さなどによるので一概にどちらが良いとは言えないが。フォルダ数が以上に多くファイル数がそれほど多くない場合は今回の方法が有利だが、あまりそういった環境が想像できないので基本的には前回の方法が良いと思う。
今回の方針はドライブ内のすべてのファイルを対象に処理を行い、対象のファイルの親フォルダをたどっていき、指定フォルダにたどり着くかをチェックする。もし指定フォルダにたどり着いたらそのフォルダの配下と判断し処理を行う。


今回はいきなり使い方も含めたサンプル
function sample()
{
  var files = DriveApp.getFiles();
  var TargetFolderID = "205Ps_mAhEFs.......Ugm1m";
  while( files.hasNext() )
  {
    var file = files.next();
    if( checkSubordinate(file,TargetFolderID) )
    {
      ////////////////////////////////////
      // ファイルごとの処理をここから記載する。
      var logString = file.getName()+":"+file.getId();
      Logger.log(logString);
      // ファイルごとの処理をここまでに記載する。
      ////////////////////////////////////
    }
  }
}

// targetが指定フォルダ(folder ID)の配下のフォルダかチェックする。
function checkSubordinate(target,folderID)
{
  var log = target.getName();
  var parents = target.getParents();
  while( parents.hasNext() )
  {
    var parent = parents.next();
    var id = parent.getId();
    if( id == folderID ){
      return true;
    }
    if( checkSubordinate(parent,folderID) )
    {
      return true;
    }
    Logger.log( log );
  }
  return false;
}

0 件のコメント:

コメントを投稿