何をしているのかはこの記事を見れば分かるかと。
Macのキーボード入力、マウスクリックをJavaScriptで (JXA) - Qiita
get_all_scriptable_apps.js
function run(){
var SystemEvents = Application("System Events");
// GUIスクリプティングが有効になってなければエラー投げて終了
if (!SystemEvents.uiElementsEnabled()) {
throw "GUIにアクセスできないよ。「システム環境設定 > セキュリティとプライバシー > プライバシー > アクセシビリティ」から許可を与えてね。";
// 「スクリプトで開けよ」とか言わない
};
// スクリプトエディタを開く
var ScriptEditor = Application("Script Editor");
ScriptEditor.activate();
delay(0.3); //アクティブになってないかもしれないのでちょっと待つ
// スクリプトエディタのプロセスを取得し、メニューをクリック
var process = SystemEvents.processes["Script Editor"];
process.menuBars[0].menuBarItems["ファイル"].menus["ファイル"].menuItems["用語説明を開く..."].click();
// 「用語説明」のウィンドウとテーブルを取得
var win = process.windows["用語説明を開く"];
var table = win.scrollAreas[0].tables[0];
if (table.exists()) {
// パスを全て拾う
var paths = table.rows.staticTexts[0].value();
} else {
// メニュークリックしてるから開いてるはずだけど一応
throw "スクリプトエディタの「用語説明」選択画面を開いてね。";
}
// 「用語説明」のウィンドウを閉じる
win.buttons["キャンセル"].click();
// ScriptEditor.quit(); // 自動で閉じさせたい場合はコメント外す
return paths.join("\n");
}
やってること。
- スクリプトエディタを起動
- 「用語説明」の選択画面を開く
- ウィンドウ内から文字列を拾う
- スクリプトエディタを終了
用語説明のウィンドウを表示して文字列を得てます。
かなりローテクです。もっといい方法あると思います。
実行結果はこんな感じ。
追記: さっき気づいたこれを応用してコードと動作時間が少し短くなった。
Mac - JXAで子要素のプロパティを一気に得る - Qiita