MacOSX+CS2以降:既知のファイルパスの問題

前回エントリの『画像置換スクリプト ImageRep.jsx』

http://pub.ne.jp/ajabon/?entry_id=2244712


自分の仕事用に間に合わせでこしらえたスクリプトを煮詰めもせず自慢げに置いといたのですが、

ファイルパス(ファイル名、それが入っているフォルダ名など)に全角のスペースやカッコ等が入っているとファイル選択後に「そこまでの場所の名前」を勝手に半角で認識して探しに行って、見つからなくてエラーが起きる、という問題をほったらかしにしててありまして。

 それなりにぐぐったら、同じ事でお嘆きの方はその筋では有名どころであった為、

http://www.pictrix.jp/?p=219


この方でもダメならウチがどうこうできるレベルの問題ではないのだろう、と思って早々に「仕様じゃしようがないなあナーンチャッテ」とケツをまくったんでした。

世の中では濁音や半濁音の方が問題であるらしい。当然ウチのもこれを含む。

ファイル名に濁点および半濁点を使用した際に発生する問題について(Macintosh 版 InDesign CS3/CS4)

http://www.adobe.com/jp/support/kb/ts/232/ts_232941_ja-jp.html


そんな折、前回エントリにコメントでレクチャーを頂き、身に余る光栄です。

AppleScriptで文字コードに配慮しつつファイルパスを正確に指定しつつ、それをJavaScript内で app.doScript に括った例文を教えて頂きました。目から鱗が..おかげ様で眠気も飛びまして、

前回のImageRep.jsx を例にとり、まとめておきます。


前準備として同じフォルダの中に、名前のスペースとカッコが全角の画像、半角の画像を入れておきます。

とてもわざとらしい。





んで、置換される運命にある画像を配置して、選択しておきます。
そして ImageRep.jsx 実行。





んで、ダイアログ内で全角の方の画像を選択し、OKをカチット(クリックに対抗した日本製擬音名詞)。
終了後、一回 undo で目的の画像が出ればいいよなあ。




すると、半角ファイル名の方が出てきてしまう
わざとらしく置いた半角名ファイルがない場合はそれ以前にエラー終了となる。
これが従来の既知の問題。




で、これまで初歩マニュアル通りに

fileName = File.openDialog(“画像を選択してください”);
と書いてた箇所を有り難くご教示頂いた記述をもじって
var my_AppleScript = ‘POSIX path of (choose file with prompt (“画像を選択してください”)) as unicode text’;
var newpath = app.doScript (my_AppleScript, ScriptLanguage.APPLESCRIPT_LANGUAGE);
var fileName = new File (newpath);
としてみた。
Adobeが日本人の面倒を見切らないまま仕立てたJavaScriptエンジンだけでどうにかしようというのではなく、doScript でAppleのAppleのための言語AppleScriptで処理するということ。
AppleScript使いの人がJavaScriptをdoScriptで括ってたりするのはよく見かけたが逆もあるのだ、なんて夢にも思いませんでした。スクリプト言語を2つ以上使える人でないとそうそう辿り着かない手法に思えます。
すごい人って本当にすごいんだなあ、とかウスボンヤリな意見しか出ないのですが感動と感謝にまみれております。
で、修正後の実行結果。
選択した画像が間違いなく出た。
これが本来配置したかった実アタリ画像。がんばってかきました。マウスで左手で(左利きですが)



と、いうわけです。
コメント頂いたppp様、改めてお礼申し上げます。

現状のところ、報告まで。
ダウンロード先のファイルはまだ古いままです。追って更新・報告したいと思います。

なんですぐ更新しないか?