JavaScript for Automation (JXA) は、AppleScriptに代わる現代的なMacの自動化技術です。
JavaScript for Automation (JXA) の準備と使い方
開発環境の準備
JXAのコードを書くために特別なソフトウェアは必要ありません。macOSに標準で搭載されている「スクリプトエディタ」アプリを使用します。
スクリプトエディタの起動: Finderで「アプリケーション」フォルダ>「ユーティリティ」フォルダ>「スクリプトエディタ」をダブルクリックして起動します。(英語環境では Script Editor)
言語設定の変更: スクリプトエディタを起動したら、新規ドキュメントを開き、ウィンドウ上部にあるドロップダウンメニューが「JavaScript」になっていることを確認してください。デフォルトで「AppleScript」になっている場合は、必ず「JavaScript」に切り替えてください。
JXA の基本的な構文
JXAでは、Application()関数を使って操作したいアプリケーションのインスタンスを取得し、そのアプリケーションが持つオブジェクト(Numbersの場合はドキュメント、シート、表、セルなど)を操作します。
Numbersを操作するための基本コード(JavaScript)
// 操作したいアプリケーションを取得
const Numbers = Application('Numbers');
// Numbersアプリケーションが起動しているか確認し、起動していなければ起動
if (!Numbers.running()) {
Numbers.launch();
}
// アクティブなドキュメントを取得
// 'documents'プロパティで開いているドキュメントのリストにアクセスします
const doc = Numbers.documents[0]; // 最初の(最前面の)ドキュメントを取得
// シート(最初のシート)を取得
const sheet = doc.sheets[0];
// 表(最初の表)を取得
const table = sheet.tables[0];
// 特定のセル (例: B2) に値を設定
table.cells['B2'].value = 'JXAテスト';
// 処理完了をユーザーに通知(任意)
Numbers.displayAlert('処理が完了しました', { message: 'NumbersのB2セルが更新されました。' });
JXAでNumbersを制御するには、Numbersの「オブジェクト階層」を理解する必要があります。
階層レベル JXAでの表現(例) 説明
アプリケーション Application('Numbers') Numbersアプリケーション全体
ドキュメント Numbers.documents[0] 開いているNumbersファイル(スプレッドシート)
シート doc.sheets[0] ドキュメント内の個々のシート
表 sheet.tables[0] シート内の個々の表(シートには複数の表を配置できます)
セル table.cells['A1'] 表内の個々のセル
JXAでは配列が0から始まるため、最初のドキュメントやシートは [0] でアクセスします。
実行方法:スクリプトエディタでJXAコードを入力>ウィンドウ上部の「▶︎ 実行」ボタン(またはCommand+R)をクリックします。
保存方法:スクリプトエディタで「ファイル」>「保存」を選択する際、「ファイルフォーマット」のオプションに注意してください。
・スクリプト: (拡張子 .scpt または .applescript) ソースコードとして保存。再編集可能です。
・アプリケーション: (拡張子 .app) ダブルクリックで実行できるスタンドアロンのアプリケーションとして保存されます。
デバッグ: スクリプトエディタのウィンドウ下部にある「ログ」パネルを開くと、実行結果やエラーメッセージが表示されます。エラーが発生した場合は、このログを参考に修正してください。
公式リソース: Appleが提供している辞書(Dictionary)を参照するのが最も正確な学習方法です。
①スクリプトエディタのメニューバーから「ウインドウ」>「ライブラリ」を選択します。
②リストから「Numbers」を選択します。
③NumbersがJXA/AppleScriptを通じて提供しているすべてのコマンド、オブジェクト、プロパティ、クラスのリストを見ることができます。
④開いたウィンドウの右上にある言語ポップアップメニューで「JavaScript」を選択すると、そのアプリのJXA向けのリファレンスが表示されます。