Adobe Fireworks CS3/CS4/CS5編 Bridgeで選択したファイルをFireworksに配置する

Adobe Bridgeのウィンドウで選択した画像ファイルを自動的にFireworksに配置するスクリプトです。Fireworksの場合、そのままドラッグドロップした方が早いのですがネタがないので(汗)。おまけにサイズ指定しても無視されるというナイスな仕様・・・ なお、スクリプトはBridgeやFireworksから実行するのではなくESTK上から実行してください。実行する際のターゲットアプリケーション名はBridgeになります。
以下のスクリプトはBridge CS3のウィンドウで選択された画像をファイルをFireworks CS3に配置するものです。実行する前にあらかじめドキュメントを用意しておく必要があります。


var diskName = "SnowLeopard"; // ルートドライブ名
var ext = [".jpg", ".png", ".gif"]; // 拡張子
var fileList = app.document.selections;
for(var i=0; i<fileList.length; i++){
for(var j=0; j<ext.length; j++){
if (fileList[i].path.indexOf(ext[j]) > -1){
myBTalk("file:///"+diskName+fileList[i].path);
}
}
}

function myBTalk(filename){
var scriptcode = 'dom = fw.getDocumentDOM();';
scriptcode += 'dom.importFile("'+filename+'", {left:0, top:0, right:320, bottom:240}, true);';
//$.writeln(scriptcode);
var btObj = new BridgeTalk;
btObj.body = scriptcode;
btObj.target = "fireworks-9";
btObj.send();
}


特定の拡張子を持つファイルだけを貼り付けたい場合には以下のようにします。上から2行目の拡張子リストを変更、追加することで任意の拡張子を持つ画像ファイルを配置することができます。

var diskName = "SnowLeopard"; // ルートドライブ名
var ext = [".jpg", ".png", ".gif"]; // 拡張子
var fileList = app.document.selections;
for(var i=0; i<fileList.length; i++){
for(var j=0; j<ext.length; j++){
if (fileList[i].path.indexOf(ext[j]) > -1){
myBTalk("file:///"+diskName+fileList[i].path);
}
}
}

function myBTalk(filename){
var scriptcode = 'dom = fw.getDocumentDOM();';
scriptcode += 'dom.importFile("'+filename+'", {left:0, top:0, right:320, bottom:240}, true);';
//$.writeln(scriptcode);
var btObj = new BridgeTalk;
btObj.body = scriptcode;
btObj.target = "fireworks-9";
btObj.send();
}


Fireworks CS3でなくCS4で実行する場合は以下のようにしてください。

btObj.target = "fireworks-10";

Fireworks CS5の場合は以下のように変更してください。

btObj.target = "fireworks-11";

Fireworksの場合、マクロメディア社で開発されていたため同じJavaScriptでもIllustratorなどとは、かなり異なります。特に困るのはユーザーの環境に依存する場合があることです。特に上記のスクリプトは、そのままでは動作しません。Windowsの場合はCドライブから起動するというのがベースにあるのでよいのですが、MacOS Xの場合は起動ディスクの名称は適当に変更することができます。一般的にはMacOS Xはディスク名を必要としないのですが、なぜかFireworksは起動ディスク名を指定しないと動作しません。つまり

var diskName = "SnowLeopard"; // ルートドライブ名

のSnowLeopardの部分は、各自自分が起動しているハードディスクの名前に置き換えてもらわなければいけません。実際にファイルを選択した時にどのようなパス指定になるかは以下のスクリプトを使って確認できます。なお、ファイルの拡張子は.jsや.jsxではなく.jsfにしてください。

var URI = fw.browseForFileURL("select", "Import File");
alert(URI);

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