InDesignファイルを全て取得
そんなわけで、あるフォルダ内のInDesignファイルを全て取得するスクリプトを書いてみた。
あまりに基本なんで、ど〜よ?
(new Folder(foldername)).exists
でtrueが返ればフォルダなんだな〜って思ったらファイルでもtrueが返ります。
ファイルかフォルダの区別ってどうするんだろ?
(new Folder(foldername)).getFiles().length
で0かそれ以上かで判定。まぁ今回はこれでいいけども・・・
2009/9/9 ちょこっと修正しました。
メインスクリプト
#include "~/Library/IddJavascript/spaceiru.jsx" if(spaceiru.system.selectFolder()== false){ alert('ユーザーによってキャンセルされました。'); exit(); } ////選択フォルダ var baseFolder = spaceiru.system.getFoldername(); ///ライブラリ初期設定 選択フォルダのパスを渡す spaceiru.idd.initIdd(baseFolder); ///ライブラリメイン処理 spaceiru.idd.getIdd(); ///結果取得(パスが配列で返る) var iddFile = spaceiru.idd.getResult(); for(var i=0;i<iddFile.length;i++) { //なんか処理をする。 alert(iddFile[i]); }
インクルードファイル spaceiru.jsx
//namespace spaceiru // // // var spaceiru = new Object(); spaceiru.system = new Object(); spaceiru.idd = new Object(); spaceiru.foldername = ""; spaceiru.system.selectFolder = function selectFolder(){ var folderObj; var foldername; foldername = Folder.selectDialog ('フォルダを選択してください。'); if(foldername != null){ spaceiru.system.setFoldername(foldername); return foldername; }else{ return false; } } spaceiru.system.getFoldername = function getFoldername(){ return spaceiru.foldername; } spaceiru.system.setFoldername = function setFoldername(name){ spaceiru.foldername = name; } //////////////////idd File Select///////////////// /////////////////////////////////////////////// spaceiru.idd.initIdd = function initIdd(folder){ spaceiru.idd.baseFolder = folder; spaceiru.idd.presentFolder = spaceiru.idd.baseFolder; spaceiru.idd.count = 0; spaceiru.idd.presentRoop = new Array(); spaceiru.idd.baseFilecont = (new Folder(spaceiru.idd.baseFolder)).getFiles().length; spaceiru.idd.checkFolderName; ///結果を入れる配列 spaceiru.idd.result = new Array(); } spaceiru.idd.getIdd = function getIdd(){ spaceiru.idd.presentRoop[0] = 0; if(spaceiru.idd.baseFilecont == 0) return; while(spaceiru.idd.presentFolder != false) { spaceiru.idd.presentFolder = spaceiru.idd.checkFolder(spaceiru.idd.presentFolder,spaceiru.idd.presentRoop[spaceiru.idd.count]); if(spaceiru.idd.presentFolder == false) { if(spaceiru.idd.count > 0){ spaceiru.idd.count -= 1; } ///親にセット spaceiru.idd.presentFolder = (new Folder(spaceiru.idd.checkFolderName)).parent.fsName; if((spaceiru.idd.count == 0) && ( spaceiru.idd.baseFilecont == spaceiru.idd.presentRoop[0])) { ///終了 spaceiru.idd.presentFolder = false; } }else{ ///次の階層 spaceiru.idd.count += 1; spaceiru.idd.presentRoop[spaceiru.idd.count] = 0; } } } spaceiru.idd.checkFolder = function checkFolder(name,start){ var list = (new Folder(name)).getFiles (); var result = false; for(var i=start;i < list.length;i++) { spaceiru.idd.presentRoop[spaceiru.idd.count] = i+1; var len = (new Folder(list[i].fsName)).getFiles().length; if(len > 0) { result = list[i].fsName; break; }else{ spaceiru.idd.setResult(list[i]); } } spaceiru.idd.checkFolderName = name; return result; } /////ファイル名チェック spaceiru.idd.setResult = function setResult(obj){ var name = obj.name; var path = obj.fsName; if(name.match(/\.indd$/g)) { spaceiru.idd.result.push(path); } } spaceiru.idd.getResult = function getResult(){ return spaceiru.idd.result; }
spaceiru.jsx
こんなんかなぁ〜。