Top > Blog Index > InDesign CS5 (Mac OS X 専用)のExtendScriptをターミナルから実行する...の方法

InDesign CS5 (Mac OS X 専用)のExtendScriptをターミナルから実行する...の方法

TextMate からAdobe の CS5 用のスクリプトを起動するためのコードが GitHubにありましたので、これを流用させていただきました。

とりあえずInDesign CS5 用スクリプトが実行できればよい

foo ユーザの ~/tmp.jsx (/Users/foo/tmp.jsx) にあるスクリプトを実行したい場合のAppleScript。

tell application "Adobe InDesign CS5"
   do script file ("/Users/foo/tmp.jsx" as POSIX file) language javascript
end tell

これで実行できます。 以下のように...

$ osascript hello.applescript

改良する

先ほどのAppleScriptコードでは、 実行対象が /Users/foo/tmp.jsx に固定されてしまうので、不便。

任意の場所、任意のファイル名をもつ hoge.jsx を実行できるようにするには、 pythonなどでこのコードを生成すればよい。 このとき 状況に応じて、起動する jsx のパスを書き換えるようにする。

ind.py

target を書き換えれば InDesign CS4 用の jsx も起動できる.
たぶん、target = "Adobe InDesign CS4" でよいと思う。

ちなみに、 ESTK 経由でjsx を起動する場合は、 jsx ファイルの先頭に以下のような記述を入れると

#target "InDesign-6.0"

適切なアプリケーション(ここではInDesign のCS4)を選んでくれます。

AppleScriptによるアプリ指定文字列と ESTKの #target による指定文字列は異なる点に注意が必要。

ind

ind.py を起動するためのシェルスクリプト. パスの通ったディレクトリに配置(~/bin/ind など).

#!/bin/bash
tmpfile=~/_tmp.applescript
python ~/bin/ind.py $* > $tmpfile
osascript $tmpfile
rm -f $tmpfile

使い方

ind にパスを通した上で、以下のように実行すればOK. ここでは、~(ホームディレクトリ上)で実行していますが、 どのディレクトリにいてもjsxを即実行できます。

$ cd ~/
$ cat tmp.jsx
alert('hello world!');
$ ind tmp.jsx