最近、作業の効率化の一環でFireworksのコマンド(バッチ)を作っているんですが、いわゆる、「別名で保存」に相当する、Fireworks Javascript のコマンド saveDocument の指定ではまったのでメモします。
こちらのリンクを見てみると
fw.saveDocument()
http://help.adobe.com/en_US/Fireworks/9.0_Extending/help.html?content=frw_fireworks_object_fo_57.html
で、使い方としてはこのように書かれている。
Usage
fw.saveDocument(document, {fileURL})
これ、{fileURL}ってのが曲者。
早速書いてみた。試行錯誤のファイルはこちら。
error.jsf
// ./rename.png 相対パスでもうまくいかない。
fw.saveDocument( null , "rename.png" );
結局これドキュメントいくらみても分からなかったのですが、「もしかして、file://ではじめるやつ?」
と、ひらめいた・・・・。というか、そういえば旧バージョンのドキュメントには書いてあったようなということで書き直してみた。
無理やりフルパスをもとに、フォルダまでのパスを生成してファイル名をくっつけるという方法。
ok.jsf
// ドキュメントフォルダを取得
// file://dummy/test/target.png
var path = fw.getDocumentPath(null).split("/");
// ファイル名ぶんを削除
// file://dummy/test/
path.pop();
// 配列から文字列に戻す
var DOCUMENT_FOLDER = path.join("/");
// 変更と保存
fw.saveDocument( null , DOCUMENT_FOLDER + "/rename.png" );
これで、うまく同じ階層に書き出せました。
あんまり役に立ちませんが、もう少し、使い勝手を増した save_samepath.jsf も同梱しているのでよかったら見てみてください。
めでたしめでたし。