ホーム > MacでExtendScript, AppleScript から InDesig...
/ カテゴリ (
macosx
,
indesign
,
extendscript
,
groovy
)
Friday, April 9, 2010
MacでExtendScript, AppleScript から InDesignを起動して "こんにちは" な話 (Groovyからの起動おまけ付き)
最終目標は、Mac上のGroovyからInDesignのExtendScript(JavaScript)を 起動すること。
考え方としては、
- GroovyからAppleScriptを起動
- AppleScriptからInDesignを起動
- AppleScript内から do script を使ってJavaScriptを実行
という手順。
Step1 とりあえず AppleScript から実行
まずは、最初の段階として、AppleScript からInDesignを起動して、hello してみる。
コード hello.applescript
tell application "Adobe InDesign CS3"
do script "alert('Hello');" language javascript
end tell
実行
$ osascript hello.applescript
実行すると、InDesignCS3 が起動し、hello という文字列を表示したダイアログが出ます。
Step2 この AppleScript を Groovy から実行
コード run.groovy
def cmd = '''
tell application "Adobe InDesign CS3"
do script "alert('hoge')" language javascript
end tell
'''
def args = ['osascript','-e',cmd]
args.execute()
実行
$ groovy run.groovy
Step3 改良版、ExtendScript(JavaScript)は外部ファイルで与える
コード run.groovy
//
// 引数として渡されたJSファイルのチェック
//
boolean ng=false
if( args.size()<1 ){ ng=true }
else if( new File(args[0]).exists()==false ){ ng=true }
if(ng){
System.exit(0)
}
//
// ExtendScriptの実行
//
def myJS = new File(args[0]).text
myJS = myJS.replaceAll('"','\\\\"')
def cmd = """
tell application "Adobe InDesign CS3"
do script " $myJS " language javascript
end tell
"""
def args = ['osascript','-e',cmd]
args.execute()
コード hello.jsx
alert('hello');
実行
$ groovy run hello.jsx
はまりポイント( 注意点 )
このサンプルで、指定された javascript を読み込んだあと...
myJS = myJS.replaceAll('"','\\\\"')
としているが、これは、" をエスケースするため。
do script " $myJS " language javascript
の行で実行するため、" をエスケープしておかないとうまく実行できない。
