UIスクリプトの階層を探る

2016年11月1日(火)

「スクリプト参照式」は、macOSのUIユーザインターフェースの階層を探るアップルスクリプトです。

ダウンロード(28KB)

「スクリプトエディタ」か「スクリプトメニュー」で実行してください。

僕はこんな使い方をしています。
自動化したい作業のアプリケーションのUI階層を探ってスクリプトを編集します。
例えばSafariで表示したクロネコヤマトの荷物追跡のホームページで番号を自動入力させるスクリプトを編集するとか、 ホームページもUIで階層化されているのがほとんどなので、そのスクリプトを編集などしています。

2018年9月23日(日)更新

サンプル:クロネコヤマトの荷物追跡のサンプルページ
サンプル:佐川急便荷物追跡のサンプルページ
サンプル:日本郵便荷物追跡のサンプルページ
サンプル:TMG荷物追跡のサンプルページ

2018年11月24日(土)お好みのトラックパッド設定にするスクリプトサンプル

サンプル:トラックパッドのシステム環境設定をUIアップルスクリプトで操作設定する

2018年11月26日(月)

サンプル:環境設定→ユーザー辞書を書き出す 環境設定→ユーザー辞書登録 タブ区切りテキスト



使用前の準備

(1) 「システム環境設定」を開く

(2) 「セキュリティとプライバシー」アイコンをクリック

(3) 「プライバシー」タブをクリック

(4) 左側のリストから「アクセシビリティ」を選びます。

(5) 「変更するにはカギをクリックします」で変更できるようにします。

(6) 「+」ボタンをクリックして、「アプリケーション」→「ユーティリティ」→「スクリプトエディタ」を選んで登録します。

(7) 「+」ボタンをクリックして、「Macintosh HD」→「System」→「Library」→「CoreServices」→「SystemUIServer」を選んで登録します。
(Finderの「フォルダへ移動」を利用する場合のパス → /System/Library/CoreServices/SystemUIServer.app/

(8) 「変更できないようにするにはカギをクリックします」で準備完了


(予備)UI(ユーザインターフェース)のボタンやメニューのアイテムを利用するための作業です。SystemUIServerはスクリプトメニューでUIを利用するために登録しています。

「スクリプト参照式をコピー15.scpt」の使い方

ダウンロードした「スクリプト参照式をコピー15.scpt」を「スクリプトエディタ」で開きます。実行ボタンを押します。

(1) メインダイアログは空欄でも構いません。(ofとクラス、インデックスで区切られた階層を理解している方は入力して利用してください。)


例:tab group 1 of window "セキュリティとプライバシー" of application process "System Preferences"
(2) UIのアイテムがリストされますので選んでください。次の階層が表示されたら繰り返して選んでいってください。


(3) 「コピー」ボタンが表示されたらUIの末端にたどり着いたので「コピー」ボタンを押します。
ヒント:次へボタンは続けて別の階層を探る時に押してください。


(4) 「スクリプトエディタ」で「新規」書類を開き、そこへペーストします。

ヒント: UI階層の行の先頭に「click」「select」を入力して動くスクリプトに編集します。 repeatやif exists などの繰り返しや判定文でインデックス番号をプロパティにして律儀に階層を羅列するのではなく、省略して利用すると良いと思います。





例:Safariなどでホームページの階層を利用した場合はこんな感じです。
tell application "System Events" to set value of text field 1 of group 2 of UI element 1 of scroll area 1 of group 1 of group 1 of tab group 1 of splitter group 1 of window 1 of application process "Safari" to "アップルスクリプト"
●メモ「インターネットブラウザSafariでUIスクリプト参照式を取得するコツ」2019年10月1日

スクリプト参照式で途中まで階層を探って、例えばSafariで閲覧したホームページでは、 Safariの階層がUI element 1 of scroll area 1 of group 1 of group 1 of tab group 1 of splitter group 1 of window 1 of application process "Safari" で、この先がホームページの階層になります。なので、これの先頭に「 every UI element」か「 UI elements of 」とコピーしておき、後ろに検索条件の「whose name is "検索文字"」(text fieldの内容の場合はvalue is "検索文字")を追加して、先頭にペーストして追加しながらスクリプトエディタで繰り返し実行していくと、 結果に式が返されます。ちなみにこのページの検索条件というtext fieldとstatic textは、
tell application "System Events"
UI elements of UI elements of UI elements of UI elements of UI elements of UI elements of UI element 1 of scroll area 1 of group 1 of group 1 of tab group 1 of splitter group 1 of window 1 of application process "Safari" whose name is "検索文字"
end tell
で結果が得られ、このようになります。
{{{{{}, {{}}, {{}}, {{}}, {{}}, {{}}, {{}}, {{}}, {{}}, {{}}, {{}}, {{}}, {{}}, {{}}, {{}}}}, {}, {}}, {{{{{static text "検索文字" of group 1 of UI element 1 of scroll area 1 of UI element 1 of scroll area 2 of UI element 1 of scroll area 1 of group 1 of group 1 of tab group 1 of splitter group 1 of window "AppleScriptクラブ" of application process "Safari" of application "System Events", text field 1 of group 1 of UI element 1 of scroll area 1 of UI element 1 of scroll area 2 of UI element 1 of scroll area 1 of group 1 of group 1 of tab group 1 of splitter group 1 of window "AppleScriptクラブ" of application process "Safari" of application "System Events"}, {}, {}, {}}, {}}, {{{}}}}}}


検索文字

トップページ