AfterEffects CS3/CS4/CS5編 複数のプロジェクトから項目を検索する

今回は複数のプロジェクトから項目を検索するものです。AfterEffectsにはプロジェクト内にあるフッテージ等を検索する機能があります。プロジェクトを1つしか使っていないのであれば、このような検索でも問題ありません。しかし、プロジェクトが複数あり、それぞれが異なるフォルダに保存されているような場合には、検索すること自体が大変です。
そこで、以下のスクリプトを使うとサブフォルダ内にあるプロジェクトも検索して一致したプロジェクトファイルを開いてくれます。ただ、同じ名前の項目がある事が多いため見つかった際には検索を継続するかどうかのダイアログを出すようにしています。


// サブフォルダ内にある全てのプロジェクトを開いて検索する(部分一致)
(function(){
var findName = prompt("検索するフッテージ/フォルダ名の一部を入れて下さい", "コンポ");
if (!findName) return;
var folderObj = Folder.selectDialog("親フォルダを選択してください");
if (!folderObj) return; // キャンセルされたら処理しない
var flag = false; // フラグと開くファイルを共用
getFolder(folderObj);
if(!flag) {
alert(findName+"の名前を持つ項目は見つかりませんでした");
}
// フォルダ内の一覧を取得
function getFolder(folderObj){
var fileList = folderObj.getFiles();
for (var i=0; i<fileList.length; i++){
if (fileList[i].getFiles) {
getFolder(fileList[i]);
if (flag) return;
}else{
if (fileList[i].name.indexOf(".aep") > -1){ // .aepの文字が含まれる場合に処理
app.open(fileList[i]);
for(var j=1; j<=app.project.items.length; j++){
var iName = app.project.item(j).name;
if (iName.indexOf(findName) > -1) {
var pName = File.decode(fileList[i].name);
var f = confirm(pName+"に"+iName+"が見つかりましたが、検索を続けますか?");
if (!f){
flag = fileList[i];
return; // 見つかったので終了
}
}
}
app.project.close(CloseOptions.DO_NOT_SAVE_CHANGES);
}
}
}
}
})();
上記のスクリプトは部分一致になっていますが、完全一致で検索したい場合は以下のように変更してください。

if (iName.indexOf(findName) > -1) {
 ↓
if (iName == findName) {

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