Macの自動化用のJavaScript for Automation (JXA)
Macの自動化用のJavaScript for Automation (JXA)について。
AppleScriptだとAcrobatとのアクセント付きアルファベットのテキストの受け渡しで問題があったのでJavaScriptでエンコードするなどしてどうにかならないかと試す。
AppleScriptでデコードしてもいいかもしれないが、コードを流用したいのでJavaScriptで統一したい。
既存のAppleScriptをいいように変換してほしいがそうもいかないので、ちまちまとググりながらやるしか無いようだ。
しかしながら……、
実際JXAで作りたいものはできたが、InDesign上でそもそもJXAのスクリプトが実行できないので、JavaScript上でURLエンコードしてAppleScript上でデコードするスクリプトに落ち着いた。
サンプルコード
//Finderで選択しているファイル名を表示する.scpt var Finder = new Application("Finder"); Finder.includeStandardAdditions = true; //標準機能拡張(StandardAdditions.osax)を使用する var selectedItems = Finder.selection(); var selectedItemsNames = []; for (var i=0; i<selectedItems.length; i++) { selectedItemsNames.push(selectedItems[i].name()); } Finder.displayAlert(selectedItemsNames.join(", "));
補足
- 行末のセミコロンは無くても動く。
- ライブラリの用語説明に載っているプロパティーは後ろに「.()」をつけてメソッドとして使用する場合がある。
- 例)「name (text) : the name of the item」 →
name.()
- 例)「name (text) : the name of the item」 →
- ダイアログ等を出したい時は「標準機能拡張(StandardAdditions.osax)」を使用する。
公式ドキュメント
テキストの読み込み
- JXA でテキストファイルを読み書きする四つの方法 - Qiita
app.write()
app.read()
は文字コードを指定する事が出来ない。日本語環境で実行した場合は MacEncoding(Shift_JIS) で処理される。 - JavaScript for Automation (JXA)でUTF-8テキストの読み書き: kanzメモ
doShellScirpt
を使用する例が紹介されている。