OmniGraffleは、AppleScriptを使う人にとって神アプリかも
6月 14th, 2009テキストフレームに文字を流し込んで、それをビットマップ画像化するという作業をやる必要ができた。Adobe IllustratorをAppleScriptで制御したら簡単にできるんじゃないかと思ったのだが……。
まずIllustratorのオブジェクト構造がどうなっているのかさっぱりわけがわからないし、テキスト枠を作成するだけでも手順がやたら面倒。さらに、枠内にテキストが収まらない状態(文字あふれ)になった時、自動的に枠のサイズを変えることが、これまた難しい。手作業で行う時は、テキストフレームをドラッグ&ドロップするだけなのだが、AppleScriptからテキストフレームの高さを変えると、文字まで引き延ばされてしまう!
文字あふれの判定を行って、テキストフレームを作り直すという手も考えたが、私の手には負えない感じになってきたので断念。
で、代わりに「OmniGraffle」(日本語名は「オムニグラフ」だけど、それだと棒グラフなんかを描くソフトだと誤解されないのかね?)を使ってみたら、問題があっという間に解決した。オブジェクトの階層構造がすっきりしていて、AppleScriptに詳しくない私にもわかりやすい。これなら何とかなりそうだと思って、作業を進めている時、すごい機能を発見。
カンバスに描いた図形を右クリックして、「別形式でコピー」→「AppleScript」を選ぶと、その図形を描くためのAppleScriptのコードがクリップボードに出力されるのだ! 例に示した図だと、以下のようなコードになる。
tell application "OmniGraffle Professional" tell canvas of front window make new shape at end of graphics¬ with properties {stroke color: {1.000000, 0.000000, 0.000000},¬ thickness: 3, fill: no fill, origin: {112.000000, 105.000000},¬ size: {130.000000, 77.000000},¬ text: {text: "テスト図形", font: "HiraKakuProN-W3",¬ text: "テスト図形", alignment: center}} end tell end tell
これはすごい。どのプロパティをいじったらどうなるか、実際の図形を描きながら確かめていけるのだ。さすが、NeXTSTEPの時代からアプリを開発しているOmni Groupだけのことはありますな。