はじめに
自動化作業の一部にApplesScriptを使用していて、よく使うやつをまとめていこうかと思う。今回は画面上部のメニューを選択するスクリプト
まず、メニューの要素を調べる
メニューの要素を調べるには、以下のようなAppleScriptを実行する
tell application "System Events"
tell process "SystemUIServer"
menu bar 1's menu bar items's attribute "AXDescription"'s value
end tell
end tell
すると、結果にメニューの要素が表示される。
これはあとで使うのでメモっておく
指定したメニューを選択する
今回は、例として「入力メニュー(text input)」を選択して、入力モードを日本語IMの「カタカナ」に指定する動作をしてみる
tell application "System Events"
tell process "SystemUIServer"
set num to 0
set one to menu bar 1's menu bar items's attribute "AXDescription"'s value
repeat with two in one
set tt to two as text
set num to num + 1
if tt = "text input" then
set num2 to num
end if
end repeat
click menu bar item num2 of menu bar 1
click menu item "カタカナ" of menu 1 of menu bar item num2 of menu bar 1
end tell
end tell
適当な名前だけれどもnumは、選択したいメニューを調べるための変数、oneは、メニューのアイテム要素を変数に入れている。
set num to 0
set one to menu bar 1's menu bar items's attribute "AXDescription"'s value
次に、選択したいメニューがリストの何番目にあるのかを調べる。今回は「入力メニュー(text input)」を調べたいので、if = tt "調べたい要素" に"text input"を入れている。
repeat with two in one
set tt to two as text
set num to num + 1
if tt = "text input" then
set num2 to num
end if
end repeat
ヒットした順番をnum2に格納して、クリック動作を指定させる。menu bar 1 はシステムの上部メニューのこと。1回目のクリックでメニューを表示させ、2回目のクリックで入力メニューから指定したIMの入力モードを選択している。
click menu bar item num2 of menu bar 1
click menu item "カタカナ" of menu 1 of menu bar item num2 of menu bar 1
menu bar item を指定するときに num2 を使っているのは、menu bar item を文字指定しても動かないから。(指定の仕方が違うのかもしれないが)入力メニューの一覧から入力モードを指定する場合は、リストで表示されている文字列で指定できるので、"カタカナ"としている。ちなみに数字でも指定できる。
ただ、数字で指定した場合、入力メニューの場合はインプットメソッドの入れ替えやOSのアップデートで順番が入れ替わったりすることがあるので、どの環境でもスクリプトを動かしたい場合は、文字列で指定したほうがいいかもしれない。
一つのインプットメソッドしか使っていないのであれば、キーボードのエミュレートだけでできると思うが、インプットメソッドアプリを切り替えたいときなどにはこのスクリプトがいいかなと思う。