Adobe CS3/CS4編 ちょっとしたスクリプト

実行されているスクリプトファイルと同じフォルダ内にあるmyLib.jsxファイルを読み込みます。読み込むと言ってもテキストファイルとして読み込むのではなくスクリプトライブラリとして扱います。つまり#includeと同じになります。 ただ、#includeではいつも同じスクリプトファイルしか読み込めません。状況に応じてダイナミックに読み込むファイルを指定したい場合(A社だったらa.jsx、B社だったらb.jsx、その他だったらetc.jsxなど)には以下のようにeval()を使うと簡単に実装できます。


//スクリプトのあるフォルダ
var scriptFile = new File(app.activeScript);
var n = scriptFile.parent.fsName;
var filename = n + "/myLib.jsx";
//alert(filename);
eval("#include '"+ filename.toString()+"'");
#includeするファイルが少ない場合には以下のようにifを使って分岐させることもできます。一般的には#includeはプログラムの先頭で扱うものですが、AdobeのJavaScriptでは以下のような使い方もできます。こういう使い方がよいか?と言われると、まああまりよいとは言えません・・・が、こういう使い方もあるということで載せておきます。
flag = confirm("1.jsxファイルを読み込みますか?");
//スクリプトのあるフォルダ
var scriptFile = new File(app.activeScript);
var n = scriptFile.parent.fsName;
if (flag == true){
#include "1.jsx"
}else{
#include "2.jsx"
}
alert(txt);

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