Adobe Creative Suites 3 (Adobe CS3) にはPDFドキュメントに記載されていない機能があります(InDesign CS3のようにPDFドキュメント自体がなくなってしまったアプリケーションもありますが)。
Extend Script Toolkit 2上からはデータブラウザを使って非公開機能を調べることができます。
その中でCS3になって正常に機能するものになった便利な機能として、スクリプトを連続して実行するものがあります。これはexecuteScript()という名前の命令で()の中に文字列で指定したスクリプトを実行してくれるものです。
例えばPhotoshop CS3でアラートダイアログにOKと表示するには以下のように指定します。
photoshop10.executeScript('alert("OK")');
例えば以下のスクリプトをPhotoshop CS3で実行してみてください。ファイル選択ダイアログが2回表示されます。選択するファイルは実行したいスクリプトファイルにしてください。
fileName = File.openDialog();
fileRef = new File(fileName);
flag = fileRef.open("r");
if (flag)
{
scriptText = fileRef.read();
}
fileName = File.openDialog();
fileRef = new File(fileName);
flag = fileRef.open("r");
if (flag)
{
scriptText2 = fileRef.read();
}
photoshop10.executeScript(scriptText);
photoshop10.executeScript(scriptText2);
実行したいスクリプトファイルの内容をphotoshop10.executeScript()に指定し、必要な数だけphotoshop10.executeScript()を呼び出せば別々に作成したスクリプトファイルを実行することができます。
実際に運用する場合にはファイル選択ダイアログよりも指定したパスにあるスクリプトファイルを指定する方が現実的です。以下のスクリプトは起動ディスクの一番上の階層にあるtest1.jsxとtest2.jsxを連続して実行します。
fileRef = new File("/test1.jsx");
flag = fileRef.open("r");
if (flag)
{
scriptText = fileRef.read();
}
fileRef = new File("/test2.jsx");
flag = fileRef.open("r");
if (flag)
{
scriptText2 = fileRef.read();
}
photoshop10.executeScript(scriptText);
photoshop10.executeScript(scriptText2);
Illustrator CS3の場合は以下のようになります。
fileRef = new File("/test1.jsx");
flag = fileRef.open("r");
if (flag)
{
scriptText = fileRef.read();
}
fileRef = new File("/test2.jsx");
flag = fileRef.open("r");
if (flag)
{
scriptText2 = fileRef.read();
}
illustrator13.executeScript(scriptText);
illustrator13.executeScript(scriptText2);
InDesign CS3の場合は以下のようになります。
fileRef = new File("/test1.jsx");
flag = fileRef.open("r");
if (flag)
{
scriptText = fileRef.read();
}
fileRef = new File("/test2.jsx");
flag = fileRef.open("r");
if (flag)
{
scriptText2 = fileRef.read();
}
indesign5.executeScript(scriptText);
indesign5.executeScript(scriptText2);
[
サンプルをダウンロード]