前の記事【解決】Illustratorのグラフを正確なサイズで作りたい!によって,グラフを思った通りの大きさで作れるようになりました。
やりかたを簡単に要約すると次のようになります。
- 何も選択していない状態で線幅を2ptにセットしてから,ダイアログでサイズを指定する
- 円グラフ・レーダーチャートの場合は,線幅を2ptにセットし目的のサイズ ×(1 ÷ 0.875)の数値をダイアログに入力する
しかしこれは,言うは易く行うは難しというものです。線幅がmm単位の場合は毎回“2pt”と入力しなければいけませんし,サイズは式を入力して値を算出する必要があります。こんなことでは文字を打つだけで日が暮れてしまいますね。
そこで今回は,AppleScriptでこの動作を簡単にする方法を紹介します。Windowsを使っている方は直接同じことはできませんが,似たような方法で実現できると思いますので参考にしてみてください。
今回スクリプトでやるのは以下のことです。
- (円グラフの場合は,目的のサイズからダイアログに入れる数値を計算し,クリップボードにコピーする)
- 線幅を2ptにセットする
- グラフツールに切り替える
グラフサイズ指定ダイアログは,自分でクリックして出す仕様です。スクリプトを実行したあとただクリックするだけで,どの種類のグラフでも正しい寸法で生成できるというわけです。
ただしグラフ全種類に対応させると下準備が大変なので,直接生成できる種類は棒グラフと円グラフのみにします。それ以外に切り替えたい場合は一度棒グラフか円グラフで作り,手動で種類を変える設定です。
下準備
グラフツールにキーボードショートカットを設定
グラフツールに切り替える動作を実現するために,事前に棒グラフツールと円グラフツールにショートカットを割り当てる必要があります。スクリプト実行のとき,AppleScriptでそのキーボードショートカットを呼び出すという形式です。
初期設定では棒グラフに「J」が割り当てられているので,これはそのまま使うことにします。
その他のグラフには特に何も設定されていません。なので本来は自分の好きなキーにして良いのですが,今回は私の書いたスクリプトへ合わせ円グラフに「Shift+7」を割り当ててください。そうしないとうまく働かなくなってしまいますからね。
ちなみに私は考えるのが煩わしかったので,積み上げ棒グラフからレーダーチャートまで順番に「Shift+1~8」を振り分けました。そんなわけで円グラフは「Shift+7」になっています。
下準備はこれで終了です。
使いかた
以下からスクリプトをダウンロードしてください。
棒グラフ用のスクリプトが「prepareGraph-bar.scpt」,
円グラフ用のスクリプトが「prepareGraph-pie.scpt」です。
prepareGraph-bar.scpt, prepareGraph-pie.scpt
棒グラフの場合
「prepareGraph-bar.scpt」を起動するだけです。その後アートボード上の適当な場所をクリックするとグラフ生成ダイアログが出ますので,目的のサイズを入力してください。正しいサイズのグラフができます。
円グラフの場合
「prepareGraph-pie.scpt」を起動すると数値入力ダイアログが出ますので,目的の直径を数字のみ(単位のないただの数値)で入力してください。そうするとクリップボードに計算された結果がコピーされます。後は棒グラフのときと同じです。
グラフ生成ダイアログでは環境設定の一般の単位が使われます。そこでmmやptなどの文字を入力すれば単位の変換も可能です。
では試しに30mmの円グラフを作ってみましょう。
大成功です!
これでまた少し仕事が速くなりました。今日もさっさと仕事を切り上げて好きなことをしましょう!
コードはこちら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
property for_pie_graph : true -- 円グラフ・レーダーチャート用ならtrue,それ以外ならfalse property size_pie : 30 -- 円グラフ直径の初期値。単位のないただの数値 on run tell application "Adobe Illustrator" if not (exists document 1) then return set selection to {} -- 選択しているものがあれば解除 activate if (for_pie_graph) then repeat try set res to display dialog "円グラフの直径" default answer size_pie set txt to text returned of res if (txt is "") then error set size_num to txt as number exit repeat on error the error_message number error_number -- ユーザーによるキャンセルの場合は終了。不正な入力の場合はもう一度 if (error_number is -128) then return display dialog "数値の取得に失敗しました。" end try end repeat -- 数値を環境設定に保存 set size_pie to size_num -- 円グラフのサイズを計算しクリップボードにコピー set size_num to size_num * (1 / 0.875) set the clipboard to (size_num as text) -- ショートカットキーをセット set key_string to "7" set key_down to "shift" -- 修飾キーなしなら"",シフト同時押しなら"shift" else delay 0.5 -- ショートカットキーをセット set key_string to "j" set key_down to "" end if -- 線を2ptにセットしてグラフツールに切り替え set default stroked of document 1 to true set default stroke width of document 1 to 2 my key_stroke(name of it, key_string, key_down) end tell end run -- 指定されたキーを押す。セキュリティの許可はいらないようだ -- 例 my key_stroke("Adobe Illustrator", "s", "cmd shift opt ctrl") on key_stroke(app_name, key_string, key_down) set key_array to {} if (offset of "cmd" in key_down) > 0 then set end of key_array to command down if (offset of "shift" in key_down) > 0 then set end of key_array to shift down if (offset of "opt" in key_down) > 0 then set end of key_array to option down if (offset of "ctrl" in key_down) > 0 then set end of key_array to control down tell application app_name to activate tell application "System Events" tell application process app_name keystroke key_string using key_array end tell end tell end key_stroke |