AfterEffects CS3/CS4/CS5編 サブフォルダ内にある全てのQuickTimeムービーを読み込む

今回は何年ぶりかにAfterEffectsのスクリプトネタです。今回のスクリプトはサブフォルダ内にある全てのQuickTimeムービーをフラットな状態でプロジェクトファイルに読み込ませます。サブフォルダ内まですべて階層をたもって読み込む機能は標準で用意されているので、このようにフラットな状態で読み込ませるという需要があるかどうかはわかりませんが、とりあえず作ってみました。(ちなみにAfterEffectsのフッテージファイル名は31文字までという制限があるので、階層化して読み込ませないと駄目なんでしょう多分)


// サブフォルダ内にある全てのQuickTimeムービーを読み込む
(function(){
var folderObj = Folder.selectDialog("親フォルダを選択してください");
if (!folderObj) return; // キャンセルされたら処理しない
getFolder(folderObj);

// フォルダ内の一覧を取得
function getFolder(folderObj){
var fileList = folderObj.getFiles();
for (var i=0; i<fileList.length; i++){
if (fileList[i].getFiles) {
getFolder(fileList[i]);
}else{
if (fileList[i].name.indexOf(".mov") > -1){ // .movの文字が含まれる場合に処理
var opt = new ImportOptions();
opt.file = fileList[i];
app.project.importFile(opt);
}
}
}
}
})();

次のスクリプトは、すでに同じ名前のフッテージがある場合は、読み込まないようにするものです。これにより、新たに追加されたQuickTimeムービーだけが読み込まれることになります。

// サブフォルダ内にある全てのQuickTimeムービーを読み込む
(function(){
var folderObj = Folder.selectDialog("親フォルダを選択してください");
if (!folderObj) return; // キャンセルされたら処理しない
getFolder(folderObj);

// フォルダ内の一覧を取得
function getFolder(folderObj){
var fileList = folderObj.getFiles();
for (var i=0; i<fileList.length; i++){
if (fileList[i].getFiles) {
getFolder(fileList[i]);
}else{
if (fileList[i].name.indexOf(".mov") > -1){ // .movの文字が含まれる場合に処理
var opt = new ImportOptions();
opt.file = fileList[i];
var flag = checkName(fileList[i].name);
if (flag == false) app.project.importFile(opt); // 重複ファイル名でない場合だけ読み込む
}
}
}
}
})();
// 重複チェック
function checkName(cName){
for(var i=1; i<=app.project.items.length; i++){
var fName = app.project.item(i).name;
if(fName == cName) return true;
}
return false;
}

なお、QuickTimeムービーでなくaviの場合は

if (fileList[i].name.indexOf(".mov") > -1){ // .movの文字が含まれる場合に処理

の.movを.aviに変更してください。JPEG形式なら.jpgにしてください。

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