Adobe InDesign JavaScriptでexit()が使えるって誰も知らない?

タイトル修正しました。理由は末尾に。


昨日、Photoshop、Illustrator、InDesignのアップデートが出ましたね。私はまだしてないです。Twitter見てたらいろんな情報が出てて皆さん人柱になるのが好きだなー、でも楽しそう。参加しようかな。
ところで今は「初級者から脱出するためのInDesignスクリプト講座」の内容を考えているところです。今書き出したところではざっと6~7時間のボリュームになっています。これを1日で行うのか、1~2時間ずつ何回かに分けてやるのか、1時間弱に小分けにして必要なところだけ受けられるようにするのか考えています。でも独りよがりな結論になりそうなので、アンケートを取ります。アンケートの準備ができたらTwitterでも告知しますね。


さて本題。講座の中の1項目として「exit()使ってますか」という題名で「exitでスクリプトを途中で終了させることで入れ子の数を減らしてコードを読みやすくしよう」というテーマで話をしようと思っています。たとえば

if(app.documents.length==0){
    alert("ドキュメントが開かれていません");
}else{
    if(app.selection.length==0){

みたいにif文でスクリプトの実行前提を書く場合、

if(app.documents.length==0){
    alert("ドキュメントが開かれていません");
    exit(); //スクリプト終了
}
if(app.selection.length==0){

とすることで入れ子がなくなって読みやすくなるというテクニックです。これは関数の中からも使えるので、いきなりスクリプトを終了したいときに便利です。

そのため、改めてexit()について調べようとしたところ、これがどこにも記載がない。ESTKのオブジェクトモデルビューアにもないし「JavaScript exit」で検索しても「JavaScriptでexitはありません」といったWebの話しか出てこない。古旗さんの『Adobe JavaScriptリファレンス』やサイト(JavaScript関係)にも記述がない。

これは一体どういうことなのだろう。私は以前から(少なくても3年以上前だと思う)使っているというのに。もしかして隠し機能だったの?

ということで、Adobe JavaScriptでexit()が使えるのは知ってるよ、とか、○○に記述があるよ、という人は是非是非教えてください。


2017年4月8日 追記

再確認したら、使用できるのはInDesignだけのようです。なので、タイトルをAdobeからInDesignに修正しました。

Adobe InDesign JavaScriptでexit()が使えるって誰も知らない?』へのコメント

  1. 名前:uske_s 投稿日:2017/04/08(土) 08:26:24 ID:21c46d276 返信

    いつも興味深く拝見しています!

    「exitでスクリプトを途中で終了させることで入れ子の数を減らしてコードを読みやすくしよう」
    は本当にその通りと思います。
    exit()については、InDesignでは使えて、Illustratorでは使えません。
    確かにビューアに記述がないのが不思議でした。

  2. 名前:お~まち 投稿日:2017/04/08(土) 16:15:55 ID:3e2c66039 返信

    > exit()については、InDesignでは使えて、Illustratorでは使えません。
    再確認しました。IllustratorはいれてないのでESTKとBridgeで確認しました。どちらも使用できませんね。どうやらInDesignだけの機能みたいです。親になるオブジェクトがないのでビューアでは表示のしようがないですね。

    • 名前:お~まち 投稿日:2017/07/19(水) 23:26:27 ID:66eee2553 返信

      ESTKのデータブラウザで確認できました。

  3. 名前: 投稿日:2017/07/10(月) 10:11:15 ID:572d45ffd 返信

    は、初めて知った…