[System Events]UI elements スクリプティングの基本その2へ続きます
UI elements スクリプティングの基本
AppleScriptの辞書(sdef)に記述がない=AppleScriptでコマンド指示出来ない操作で
UI elementsを使った『ユーザーインターフェイス』の操作コマンドで
操作する事が『可能な物もあります』。
UI elementsの取得方法についてです。
UI elementsを取得するツール『UIBrowser』を使った方が早いのですが
ここでは『手動」で取得する方法を説明します
まずは
このコマンドを使って取得していきます。
get properties of every UI element
こちらの記事
[Printer]プリンターの『Printer Proxy』を作成する(macOS12.3対応)
https://quicktimer.cocolog-nifty.com/icefloe/2022/03/post-315101.html の場合を説明しましょう
ダウンロード - ui20elements.zip
まずは『システム環境設定を開いて』『プリンタとファックス』を開きます
そこでスクリプトを実行します
tell application "System Preferences"
activate
tell application "System Events"
tell process "System Preferences"
activate
get properties of every UI element
end tell
end tell
end tell
戻り値はこんな感じ
結果:
{{minimum value:missing value, orientation:missing value, position:{0, 25}, class:window, accessibility description:missing value, role description:"標準ウインドウ", focused:false, title:"プリンタとスキャナ", size:{668, 490}, help:missing value, entire contents:{}, enabled:missing value, maximum value:missing value, role:"AXWindow", value:missing value, subrole:"AXStandardWindow", selected:missing value, name:"プリンタとスキャナ", description:"標準ウインドウ"}, {minimum value:missing value, orientation:missing value, position:{0, 0}, class:menu bar, accessibility description:missing value, role description:"メニューバー", focused:missing value, title:missing value, size:{1440, 24}, help:missing value, entire contents:{}, enabled:true, maximum value:missing value, role:"AXMenuBar", value:missing value, subrole:missing value, selected:missing value, name:missing value, description:"メニューバー"}, {minimum value:missing value, orientation:missing value, position:{0, 0}, class:UI element, accessibility description:missing value, role description:"top level function row", focused:missing value, title:missing value, size:{685, 30}, help:missing value, entire contents:{}, enabled:missing value, maximum value:missing value, role:"AXFunctionRowTopLevelElement", value:missing value, subrole:missing value, selected:missing value, name:missing value, description:"top level function row"}}
これは以下を意味しています
続いて Class:windowのエレメントを取得していきます
tell application "System Preferences"
activate
tell application "System Events"
tell process "System Preferences"
activate
tell window "プリンタとスキャナ"
tell scroll area 1
get properties of every UI element
end tell
end tell
end tell
end tell
end tell
戻り値は
結果:
{{minimum value:missing value, orientation:missing value, position:{20, 98}, class:outline, accessibility description:missing value, role description:"アウトライン", focused:false, title:missing value, size:{196, 276}, help:missing value, entire contents:{}, enabled:true, maximum value:missing value, role:"AXOutline", value:missing value, subrole:missing value, selected:missing value, name:missing value, description:"アウトライン"}}
ここでわかる事は
左側のエリアは『class:outline』である事になります
あとはUIの要素を順番に掘り下げます
class:outline
tell application "System Preferences"
activate
tell application "System Events"
tell process "System Preferences"
activate
tell window "プリンタとスキャナ"
tell scroll area 1
tell outline 1
get properties of every UI element
end tell
end tell
end tell
end tell
end tell
end tell
戻り値は
--> {{minimum value:missing value, orientation:missing value, position:{20, 98}, class:row, accessibility description:missing value, role description:"アウトライン行", focused:missing value, title:missing value, size:{196, 24}, help:missing value, entire contents:{}, enabled:missing value, maximum value:missing value, role:"AXRow", value:missing value, subrole:"AXOutlineRow", selected:false, name:missing value, description:"アウトライン行"}, {minimum value:missing value, orientation:missing value, position:{20, 122}, class:row, accessibility description:missing value, role description:"アウトライン行", focused:missing value, title:missing value, size:{196, 40}, help:missing value, entire contents:{}, enabled:missing value, maximum value:missing value, role:"AXRow", value:missing value, subrole:"AXOutlineRow", selected:true, name:missing value, description:"アウトライン行"}, {minimum value:missing value, orientation:missing value, position:{20, 162}, class:row, accessibility description:missing value, role description:"アウトライン行", focused:missing value, title:missing value, size:{196, 40}, help:missing value, entire contents:{}, enabled:missing value, maximum value:missing value, role:"AXRow", value:missing value, subrole:"AXOutlineRow", selected:false, name:missing value, description:"アウトライン行"}, {minimum value:missing value, orientation:missing value, position:{20, 202}, class:row, accessibility description:missing value, role description:"アウトライン行", focused:missing value, title:missing value, size:{196, 40}, help:missing value, entire contents:{}, enabled:missing value, maximum value:missing value, role:"AXRow", value:missing value, subrole:"AXOutlineRow", selected:false, name:missing value, description:"アウトライン行"}, {minimum value:missing value, orientation:missing value, position:{20, 98}, class:column, accessibility description:missing value, role description:"列", focused:missing value, title:missing value, size:{196, 276}, help:missing value, entire contents:{}, enabled:missing value, maximum value:missing value, role:"AXColumn", value:missing value, subrole:missing value, selected:false, name:missing value, description:"列"}}
ようやく最終的な要素まで辿り着きました
こんな感じでUIの『エレメント』を取得して
対象のUIの値を探してClickなりselectなりする事になります
tell application "System Preferences"
activate
tell application "System Events"
tell process "System Preferences"
activate
try
select row 2 of outline 1 of scroll area 1 of window "プリンタとスキャナ"
select button "プリントキューを開く…" of group 1 of window "プリンタとスキャナ"
click button "プリントキューを開く…" of group 1 of window "プリンタとスキャナ"
end try
end tell
end tell
end tell