ターミナルから InDesign CS5 用スクリプトが実行する方法です。 この方法を使えば、ESTKを起動しなくても ExtendScript をターミナルから実行できるので、vim などでコードを書いていると便利な場合があります。 特にESTKのテキスト編集機能は気に入らない場合には。
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 のパスを書き換えるようにする。
import sys
import os
target = "Adobe InDesign CS5"
template = """tell application "%s"
do script file ("%s" as POSIX file) language javascript
end tell"""
if len(sys.argv)>1 :
filename = sys.argv[1]
jsxpath = os.path.join(os.getcwd(),filename)
print template % (target,jsxpath)
target を書き換えれば InDesign CS4 用としても使えると思われる。 たぶん、target = "Adobe InDesign CS4" ではないかと(未確認)。
ちなみに、ESTK 経由でjsx を起動する場合は、 jsx ファイルの先頭に以下のような記述を入れると
#target "InDesign-6.0"
適切なアプリケーション(ここではInDesign のCS4)を選んでくれます。
AppleScriptによるアプリ指定文字列と ESTKの #target による指定文字列は異なる点に注意が必要。
ind.py を起動するためのシェルスクリプト. パスの通ったディレクトリに配置(~/bin/ind など).
#!/bin/bash
tmpfile=~/_tmp.applescript
python ~/bin/ind.py $* > $tmpfile
osascript $tmpfile
rm -f $tmpfile
- ind.py を ~/bin/ind.py に配置 chmod u+x ~/bin/ind する
- ~/_tmp.applescript を作業ファイルとして使用する点に注意。
ind にパスを通した上で、以下のように実行すればOK. ここでは、~(ホームディレクトリ上)で実行していますが、 どのディレクトリにいてもjsxを即実行できます。
$ cd ~/
$ cat tmp.jsx
alert('hello world!');
$ ind tmp.jsx