クリエイター手抜きプロジェクト[433]Adobe AfterEffects CS6〜CC2015編 複数のプロジェクトファイルに特定のエフェクトが使用されているか調べる
── 古籏一浩 ──

投稿:  著者:



今回は、AfterEffectsのプロジェクトファイルに、特定のエフェクトが使用されているか調べるスクリプトです。スクリプトは二つあります。

まず、最初のスクリプトは、現在開かれているプロジェクトファイル内に指定したエフェクト名があるかどうか調べます。




function checkEffect(findName){
for(var k=1; k<=app.project.items.length; k++){
var t = app.project.item(k).typeName;
if (t != "コンポジション"){ continue; }
var compName = app.project.item(k).name;
for(var j=1; j<=app.project.item(k).layers.length; j++){
for(var i=1; i<256; i++){
try {
var pName = app.project.item(k).layer(j).property("effect").property(i).name;
if (pName.indexOf(findName) > -1){
// 見つかったので関数から抜ける
return compName;
}
}catch(e){
break;
}
}
}
}
return false;
}
(function(){
var findName = prompt("検索するエフェクト名を入力してください", "エンボス");
if (!findName) { return false; } // キャンセルされたら何もしない
var flag = checkEffect(findName);
if (flag){
alert(flag+"にエフェクト名「"+findName+"」が含まれるエフェクトがありました");
}else{
alert("エフェクト名「"+findName+"」はありませんでした");
}
})();


以下のスクリプトは、プロジェクトが複数ある場合に、自動的にエフェクトがあるかどうか調べてエイリアスを作成します。


// AfterEffectsのAEPファイルにエフェクトがあるか検索しエイリアスを作成する
(function(){
// 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 = findEffect(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 findEffect(findName){
for(var k=1; k<=app.project.items.length; k++){
var t = app.project.item(k).typeName;
if (t != "コンポジション"){ continue; }
var compName = app.project.item(k).name;
for(var j=1; j<=app.project.item(k).layers.length; j++){
for(var i=1; i<256; i++){
try {
var pName = app.project.item(k).layer(j).property("effect").property(i).name;
if (pName.indexOf(findName) > -1){
// 見つかったので関数から抜ける
return true;
}
}catch(e){
break;
}
}
}
}
return false;
}
}
})();




【古籏一浩】openspc@alpha.ocn.ne.jp
< http://www.openspc2.org/
>

ようやく「マッドマックス 怒りのデスロード」見てきました。

♪ドンドコドコドコドンドンドン ♪ドンドコドコドコドンドンドン
♪ドンドコドコドコドンドンドン ♪ドンドコドコドコドンドンドン

んな感じ。

「これだけ燃料があればバイクなら160日走れるわ」(多分こんなセリフ、違ってるかもしれないけど)

何と燃費のよいバイク! マッドマックスで一番感心した部分だった……


・Apple Watch(アップルウォッチ)使い方辞典
< http://www.openspc2.org/reibun/AppleWatch/2015/
>

・Photoshop自動化基本編
< http://www.amazon.co.jp/dp/B00W952JQW/
>

・Illustrator自動化基本編
< http://www.amazon.co.jp/dp/B00R5MZ1PA
>

・Adobe JavaScriptリファレンス
< http://www.amazon.co.jp/dp/B00FZEK6J6/
>

・ExtendScript Toolkit(ESTK)基本編
< http://www.amazon.co.jp/dp/B00JUBQKKY/
>

・データビジュアライゼーションのためのD3.js徹底入門
< http://www.amazon.co.jp/dp/4797368861
>

・4K/ハイビジョン映像素材集
< http://www.openspc2.org/HDTV/
>

・クリエイター手抜きプロジェクト
< http://www.openspc2.org/projectX/
>