TerminalでAppleScriptを実行した時のlogコマンド挙動
追記 この情報は古くなりました。
- OS X 10.10 Yosimete ではtell application内のlogも表示されるようです
Ruby 経由でAppleScriptを実行する
test.rb
result = `osascript test.scpt`
test.scpt
on run {} funcA() end run on funcA() log "in funcA" funcB() funcC() end funcA on funcB() log "in funcB" end funcB on funcC() log "in funcC" tell application "Finder" log "in tell application Finder" tell application "Terminal" log "in tell application Terminal" end tell end tell end funcC
すると
結果
$ ruby test.rb in funcA in funcB in funcC
他のハンドラ内のlogコマンドを表示されるのに、tell application内では表示されなかった
そこで表示用のハンドラを作りtell application内から呼ぶことで解決した
test.rb
on run {} funcA() end run on funcA() log "in funcA" funcB() funcC() end funcA on funcB() log "in funcB" end funcB on funcC() log "in funcC" tell application "Finder" display("in tell application Finder") of me tell application "Terminal" display("in tell application Terminal") of me end tell end tell end funcC on display(message) log message end display
結果
$ ruby test.rb in funcA in funcB in funcC in tell application Finder in tell application Terminal