小ネタです。
どうでもいいじゃんと言われればそれまでなんですが、おそらく数ヶ月後に同じことにはまる悪寒がするので、ブログに書いとく。
Twitterでも書いたんですが、AdobeアプリのバージョンによってpromptとsaveDialogに違いがあるんです。
検証したのはIllustratorCS2〜CS6のMac版とInDesignCS4・6のみ。
Windowsはすぐ使える環境が手元になかったので調べてません。
誰か調べて教えてくれると嬉しいです。
まずpromptから。
promptとは簡単なダイアログを表示させるものです。
頻繁に使われているであろうalertとの違いですが、alertは文字通りアラート、つまりユーザーになにかしら伝えるけれど返答が必要ないときに使うもので、promptは入力エリアにその返答を記入してもらうためのものと思ってもらえれば。
alertサンプル。
alert("僕の尻尾に触るにゃ! by レノ王子");
promptサンプル。ちなみにIllustrator CS4。
prompt("あなたは猫が好きですか?","Yes","Question");
入力エリアにユーザーが入力したものは値として取得できます
そして、このpromptですが、ESTKで入力すると「prompt (prompt, default, title)」と補完してくれます。
引数が3つありまして、「prompt=表示させたい文字列(上記画像ではあなたは猫が好きですか?)」「default=初期値(上記画像ではYes)」「title=promptのタイトル(上記画像ではQuestion)」となっています。
ええ、そうなっているはずなんです。
ですがIllustratorCS5以降は違うみたいなんです。
prompt("あなたは猫が好きですか?","Yes","Question");
titleがどっかいっちゃった!
メッセージが大きく太くなっちゃった!
どうやらCS5以降はpromptに表示するメッセージの1段落目がタイトルとして認識されている模様。
つまり意識せずに複数段落のメッセージを表示させると、同列であるべきメッセージの1段落目だけ大きく太く表示されちゃうよ!ということですね。
CS5以降では3つ目の引数が無視されちゃうから最初から設定しなければいいと思うかもしれません。
私も思いました。
でもそのスクリプトをCS4以前で実行するとダッサイことに。
prompt("あなたは猫が好きですか?","Yes");
スクリプトプロンプトくん、お呼びじゃないよ!
がっかりだよ!
おじさん、がっかりだよ!
というわけで、CS4以前とCS5以降で同じスクリプトを使いたい場合はスクリプトを起動したIllustratorのバージョンを調べて分岐処理させましょう。
app.versionでバージョンを取得できるよ(サブバージョンもついてきますが適当に切り捨ててください)。
最後にsaveDialog。
こっちも微妙に違いがありました。
CS4以前のsaveDialogがこちら。
CS5以降のsaveDialogがこちら。
CS4以前は「名称未設定」という文字列が初期値として存在しているのに対して、CS5以降は初期値がなくnullの状態。
これは実際のところ影響はほとんどない差異なんですが、たまたま気づいたのでとりあげてみました。
気づかないだけで他にも細かい差異があるんだろうなー。