AppleScriptTaskでJXAを使用する

October 1, 2023
excel vba Mac jxa Excel for Mac

AppleScriptTaskでJXAを使用する

AppleScriptTaskはExcel for MacのVBAをAppleScriptで機能を補完する重要な関数ですが、Macには標準で使用できるスクリプトにはもう一つJXA(JavaScript for Application)があります。

AppleScriptとJXAの違い

この2つのスクリプトの主な違いは以下になります。

AppleScript
JXA

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では気軽に文字列操作ができるので重宝しそうです。

Next Previous

3つの表

October 12, 2023
excel データ入力 操作

Excelで量産シミュレーション

October 12, 2023
excel データ入力 操作

テーブルについて

October 12, 2023
excel データ入力 操作