Adobe AfterEffects CS3〜CC2014編 フォルダ内のaepファイルに含まれる文字を検索する

今回は、フォルダ内にあるAfterEffectsのプロジェクトファイルに含まれる文字を検索するスクリプトです。

以下のスクリプトを実行すると、AfterEffectsのファイル(.aep)があるフォルダを選択するように聞いてきます。サブフォルダ内にあるAfterEffectsファイルも対象になります。次にエイリアスを保存するフォルダを選択します。
最後に検索する文字列を入力すれば自動的に検索が行われます。


// AfterEffectsのAEPファイルに文字があるか検索しエイリアスを作成する
(function(){
// 正規表現を使うかどうかのフラグ
var regFlag = false;
// AEPファイルがあるフォルダを指定する
var folderObj = Folder.selectDialog("文字を検索するAfterEffectsのプロジェクトファイルがあるフォルダを選択してください");
if (!folderObj){ return; } // キャンセルされた場合は何も処理しない
// エイリアスを入れるフォルダを指定する
var saveFolder = Folder.selectDialog("結果(エイリアス)を保存するフォルダを選択してください");
if (!saveFolder){ return; } // キャンセルされた場合は何も処理しない
// 検索する文字列を入力
var searchText = prompt("検索する文字列を入れてください", "コンポ");
if (!searchText){ return; } // キャンセルされたら何もしない
makeAliasList(folderObj);
alert("検索が終了しました");
// エイリアスを作成する関数
function makeAliasList(folderObj){
// aepファイル一覧を取得する
var fileList = folderObj.getFiles("*.aep");
// ファイルの数だけ開いて文字列を検索する
for(var i=0; i<fileList.length; i++){
app.open(fileList[i]);
var flag = findText(searchText);
if (flag == true){
// ファイル名が重複しないようにスラッシュをアンダーバーにしたファイル名を使う
var filename = fileList[i].fsName.replace(new RegExp("/", "g"), "_");
// エイリアスとなるファイルオブジェクトを作成する
var aliasFileObj = new File(saveFolder.fsName+"/"+filename);
// エイリアスを作成する
var flag = aliasFileObj.createAlias(fileList[i]);
if (flag == false){
$.writeln("失敗:"+filename);
// もし、アラートダイアログを表示した方がいい場合は以下の行の//を消してください。
// alert("失敗:"+filename);
}
}
app.project.close(CloseOptions.DO_NOT_SAVE_CHANGES);
}
// フォルダを含めた一覧を取得する
fileList = folderObj.getFiles();
for(var i=0; i<fileList.length; i++){
// フォルダかどうか調べる
if(fileList[i].getFiles){
makeAliasList(fileList[i]); // フォルダの場合は再帰呼び出し
}
}
// プロジェクト内の項目の名前を検索する関数
function findText(searchText){
var regText = new RegExp(searchText);
for(var i=1; i<=app.project.items.length; i++){
// 項目名を読み出す
var text = app.project.item(i).name;
// 一致しているかどうか調べる
if (regFlag == true){
// 正規表現で検索
if (text.match(regText) != null){
// 一致していたら以後の処理を中断して戻る
return true;
}
}else{
// 部分一致検索
if (text.indexOf(searchText) > -1){
// 一致していたら以後の処理を中断して戻る
return true;
}
}
}
}
}
})();

[サンプルをダウンロード]