LoginSignup
3
3

More than 5 years have passed since last update.

(Apple|Java)Scriptから操作可能なアプリのパスを全て取得 (JXA)

Last updated at Posted at 2015-02-17

何をしているのかはこの記事を見れば分かるかと。
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");
}

やってること。

  • スクリプトエディタを起動
  • 「用語説明」の選択画面を開く
  • ウィンドウ内から文字列を拾う
  • スクリプトエディタを終了

用語説明のウィンドウを表示して文字列を得てます。
かなりローテクです。もっといい方法あると思います。
実行結果はこんな感じ。

スクリーンショット 2015-02-18 3.36.15 1.png

追記: さっき気づいたこれを応用してコードと動作時間が少し短くなった。
Mac - JXAで子要素のプロパティを一気に得る - Qiita

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3