1.実行方法
実行方法はほぼ同じで、主に以下の3つの方法があります。
①ESTKなど外部から実行
②アプリケーション上で実行
InDesign:スクリプトパネルまたはキーボードショートカット
Illustrator:ファイルメニューのスクリプト>その他のスクリプト
③エクスプローラー上でjsxファイルをダブルクリック
#targetでターゲットアプリケーションを指定している場合に限る
※最近はESTKの代わりにVisual Studio Codeを使ってる方もいます。
2.エンジンの違い
ExtendScriptは#targetengineで実行エンジンの名前を指定できます。
同じ名前のエンジンで実行するとグローバル変数などを共有できます。
また、1回実行するごとにリセットされ、グローバル変数などが引き継がれない特殊なエンジンもあります(使い捨てのエンジンと呼ぶことにします)。
|
Illustrator |
InDesign |
ESTKから実行時のデフォルトのエンジン名 |
main |
main |
アプリケーション上で実行時のデフォルトのエンジン名 |
transient |
main |
jsxをダブルクリックで実行時のデフォルトのエンジン名 |
main(※1) |
main(※1) |
使い捨てのエンジン名 |
transient |
main |
ESTKから実行時にエンジンを指定できる? |
できない |
できる |
アプリケーション上で実行時にエンジンを指定できる? |
できる |
できる |
jsxをダブルクリックで実行時にエンジンを指定できる? |
できない |
できない |
※1 BridgeTalk経由で実行される
重要なのは同じ"main"エンジンが、InDesignでは使い捨てであり、Illustratorではそうでないという点です。
Illustratorの使い捨てのエンジン名はtransientですが、これをESTKから指定することはできません。
したがって、IllustratorでESTKを使う場合、1つのmainエンジンでスクリプトを何度も実行することになります。
各所で配布されているIllustratorスクリプトで、全体を(function(){.....})()で囲み、極力グローバル変数を作らないようにしているものが多いのはこうした事情によるものです(たぶん)。
3.テキスト選択時のselection
InDesignではテキストオブジェクトが入った配列です。
Illustratorではテキストオブジェクトそのものになります。配列のつもりで書いてたらエラーになります。よくやらかします。
4.y軸の方向
InDesignは下が正、Illustratorは上が正です。
5.visibleBoundsとかgeometricBoundsとかの順番
InDesignは上左下右、Illustratorは左上右下です。
6.InDesignはexit()が使える
7.Illustratorはなぜかappとか省略できる
8.サロゲートペア文字
text.charactersにおいて、サロゲートペア文字はInDesignだと1文字、Illustratorだと2文字とカウントされます。
9.ScriptUIでモーダルダイアログ
モーダルダイアログっていうのはダイアログが出ている間アプリを操作できない系のダイアログのことです。
Illustratorではモーダルダイアログが出てる間もスクリプトからはDOMをいじることができ、app.redraw()で表示を更新できます。
しかし、InDesignではできません。つまりInDesignでは、モーダルだけどプレビューを更新できる系のダイアログを作ることができません。なんとかならんかな。
10.ほかにもいーっぱいあるよ