以下のスクリプトはBridgeTalkを使って、他のアプリケーションにスクリプトを実行させる基本的なサンプルです。

//InDesignからPhotoshopへ命令を送信する
#target 'indesign'
var btObj= new BridgeTalk(); //BridgeTalkオブジェクト作成
btObj.target= 'photoshop'; //送信先を指定
btObj.body= "alert ( 'received' );"; //Photoshopへ送る命令
btObj.send(); //送信

 InDesignからPhotoshopのアラートダイアログを開かせるだけのものですが、他のアプリケーションへスクリプトを送信し、実行される様子が確認できます。

 

その手順を文書化すれば以下のようになります。

 

まず、はじめにnew演算子でBridgeTalkオブジェクトを作成します。

その後、作成したBridgeTalkオブジェクトのプロパティに必要な値を設定します。最低限必要なのは「送信先」と「実行したい命令」です。

  • target: スクリプトを送信する「対象アプリケーション」を指定
  • body: 実行したいスクリプトを文字列で設定

そして、最後にsendメソッドを実行すれば、対象アプリケーションへスクリプトが送信され完了です。

 

なお、複雑な処理を実行させたい場合は、それらをまとめて関数化したほうが扱いやすくなります。

//InDesignからPhotoshopへ命令を送信する(関数化)
#target 'indesign'
//--------------------------------------
//  Photoshopで実行する関数
// ※コメントは使わないようにする
//--------------------------------------
function openPsd() {
    alert ( 'received' );
    alert ( 'end' );
}
//--------------------------------------
//  InDesignで実行される部分
//--------------------------------------
var btObj= new BridgeTalk(); //BridgeTalkオブジェクト作成
btObj.target= 'photoshop'; //送信先を指定
btObj.body= uneval ( openPsd() ); //Photoshopで実行させる命令
btObj.send(); //送信

関数の文字列化にはunevalを使用しています。その際、文字列化する関数にコメントが含まれていると送信に失敗することがあるので、コメントは含まないほうが無難です。

 

また、関数に引数が必要な場合は、引数をパーレンでくくって関数名の後に追加します。

//InDesignからPhotoshopへ命令を送信する(関数+引数)
#target 'indesign'
function openPsd(msg) {
    alert ( msg );
}
//--------------------------------------
//  InDesignで実行される部分
//--------------------------------------
var btObj= new BridgeTalk(); //BridgeTalkオブジェクト作成
btObj.target= 'photoshop'; //送信先を指定
btObj.body= uneval ( openPsd )+"('received')"; //Photoshopで実行させる命令
btObj.send(); //送信

 

<実践的な例>

 

これらを実践的に使用すると以下のようになります。この例ではInDesignで選択されているフレームのリンク画像をPhotoshopで開きます。なお、エラー処理などは行なっていません。

//InDesignで選択されているリンク画像をPhotoshopで開く
#target 'indesign'
function openPsd(fPath) {
    var fileObj= new File(fPath);
    app.open ( fileObj );
}
//--------------------------------------
//  InDesignで実行される部分
//--------------------------------------
var selObj= app.selection[0].allGraphics[0]; //選択したオブジェクトから...
var filePath= selObj.itemLink.filePath; //ファイルパスを取得
//BrideTalk
var btObj= new BridgeTalk(); //BridgeTalkオブジェクト作成
btObj.target= 'photoshop'; //送信先を指定
btObj.body= uneval ( openPsd )+"("+uneval(filePath)+")"; //Photoshopで実行させる命令
btObj.send(); //送信

 

 

Joomla templates by a4joomla