ごんれのラボ

iOS、Android、Adobe系ソフトの自動化スクリプトのことを書き連ねています。

バージョンによってpromptとsaveDialogに違いがあるんです

小ネタです。

どうでもいいじゃんと言われればそれまでなんですが、おそらく数ヶ月後に同じことにはまる悪寒がするので、ブログに書いとく。

 

Twitterでも書いたんですが、AdobeアプリのバージョンによってpromptとsaveDialogに違いがあるんです。

検証したのはIllustratorCS2〜CS6のMac版とInDesignCS4・6のみ。

Windowsはすぐ使える環境が手元になかったので調べてません。

誰か調べて教えてくれると嬉しいです。

 

まずpromptから。

promptとは簡単なダイアログを表示させるものです。

頻繁に使われているであろうalertとの違いですが、alertは文字通りアラート、つまりユーザーになにかしら伝えるけれど返答が必要ないときに使うもので、promptは入力エリアにその返答を記入してもらうためのものと思ってもらえれば。

 

alertサンプル。

alert("僕の尻尾に触るにゃ! by レノ王子");

alert_sample

 

promptサンプル。ちなみにIllustrator CS4。

prompt("あなたは猫が好きですか?","Yes","Question");

prompt_sample

 

入力エリアにユーザーが入力したものは値として取得できます

 

そして、このpromptですが、ESTKで入力すると「prompt (prompt, default, title)」と補完してくれます。

引数が3つありまして、「prompt=表示させたい文字列(上記画像ではあなたは猫が好きですか?)」「default=初期値(上記画像ではYes)」「title=promptのタイトル(上記画像ではQuestion)」となっています。

ええ、そうなっているはずなんです。

 

ですがIllustratorCS5以降は違うみたいなんです。

 

prompt("あなたは猫が好きですか?","Yes","Question");

prompt_sample_CS6

 

titleがどっかいっちゃった!

メッセージが大きく太くなっちゃった!

 

どうやらCS5以降はpromptに表示するメッセージの1段落目がタイトルとして認識されている模様。

つまり意識せずに複数段落のメッセージを表示させると、同列であるべきメッセージの1段落目だけ大きく太く表示されちゃうよ!ということですね。

 

CS5以降では3つ目の引数が無視されちゃうから最初から設定しなければいいと思うかもしれません。

私も思いました。

でもそのスクリプトをCS4以前で実行するとダッサイことに。

 

prompt("あなたは猫が好きですか?","Yes");

prompt_sample_cs4_notitle

 

スクリプトプロンプトくん、お呼びじゃないよ!

 

がっかりだよ!

おじさん、がっかりだよ!

 

というわけで、CS4以前とCS5以降で同じスクリプトを使いたい場合はスクリプトを起動したIllustratorのバージョンを調べて分岐処理させましょう。

app.versionでバージョンを取得できるよ(サブバージョンもついてきますが適当に切り捨ててください)。

 

最後にsaveDialog。

こっちも微妙に違いがありました。

 

CS4以前のsaveDialogがこちら。

 

saveDialog_sample_cs3

 

CS5以降のsaveDialogがこちら。

 

saveDialog_sample_CS6

 

CS4以前は「名称未設定」という文字列が初期値として存在しているのに対して、CS5以降は初期値がなくnullの状態。

これは実際のところ影響はほとんどない差異なんですが、たまたま気づいたのでとりあげてみました。

 

気づかないだけで他にも細かい差異があるんだろうなー。