執筆:EugeneAmnis
AppleScriptTaskでJXAを使用する
AppleScriptTaskはExcel for MacのVBAをAppleScriptで機能を補完する重要な関数ですが、Macには標準で使用できるスクリプトにはもう一つJXA(JavaScript for Application)があります。
AppleScriptとJXAの違い
この2つのスクリプトの主な違いは以下になります。
AppleScript
- 自然言語系のプログラム言語で英語に近い形でプログラムができる。
- OSの機能に直結した機能を簡単に呼び出して使用することができる。
- 日本語圏内では比較的資料が多い。
- 文字列の扱いが特殊。
- テキストファイルで利用可能。
JXA
- Webでも利用されるメジャーなJavaScriptでプログラミングができる。
- OSの機能利用はひと手間が必要。またAppleScriptTaskでは動かない場合がある。
- DOM系等を除く豊富な関数群を利用できる。
- JXAとしては日本語圏内では資料は少ない方だが、JavaScriptとしてはかなり豊富。
- スクリプトの標準設定ではコンパイルしないと利用不可。(scptファイルとして保存)
AppleScriptTaskでの利用
Excel for MacのAppleScriptTaskでJXAを利用する際は~/LibraryApplication Scripts/com.microsoft.Excel/にコンパイル(scptファイルとして保存)した状態で保存し、通常のAppleScriptと同様に利用するだけです。ただし、主に2つの問題点があります。
シェルスクリプトが利用できない
まず、シェルスクリプトが利用できない点から説明するとスクリプト単体として以下のコードを実行することができますが、AppleScriptTaskでは利用できませんでした。
var app = Application.currentApplication()
app.includeStandardAdditions = true
function shell(){
var ans = app.doShellScript("シェルコマンド");
return ans;
}
現象としては何も起こらないが発生します。 JXA単体では使用可能なのでセキュリティ上の観点から機能が塞がれている可能性があります。
DOM関連など利用できない関数がある
JavaScriptに準処したスクリプト言語なので仕方のない事ですがDOM関連は使用できない為、XMLなどの構造化データを有効に使用することが難しいです。また、リファレンスが読みづらい(使いづらい)為、トライ・アンド・エラーが必然的に多くなります。
JXAのメリット
上記2点のデメリットはありますがそれを超えるメリットが文字列操作です。AppleScriptでは文字列操作はかなり面倒くさい事になっていますが、JXAでは分割・置き換え・切り取り等が簡単にできます。
AppleScriptでの文字列操作は今まで鬼門でした。操作できないわけではないがモダンなプログラミング言語と比べるとまどろっこしいので基本は避けていたのが実情でした。その反面JXAでは気軽に文字列操作ができるので重宝しそうです。
Contact and Tags
excel vba Mac jxa Excel for Mac