Illustratorでアクションをスクリプト化して実行する方法を解説します。
本来はスクリプトをアクションで実行したかったのですが、Illustratorに長年存在するバグにより実行できませんでした。
最新版ではバグが修正されているようですが、古いバージョンではうまく動作しません。
そのため、アクションをスクリプト化する方法を紹介します。
目次
アクションからスクリプトを作成する方法
オブジェクトを選択し、以下のスクリプトを実行するとオブジェクトが縮小されます。
アクションの作成とスクリプト化
アクションを保存して中身を取得し、スクリプトで実行する方法です。
アクションを一時的に作成し、実行後に削除する動作を行います。
var set = 'action_resize10';
var action = 'resize';
// アクションの中身
var actionStr = ['/version 3',
'/name [ 15',
' 616374696f6e5f726573697a653130',
']',
'/isOpen 1',
'/actionCount 1',
'/action-1 {',
'/name [ 6',
'726573697a65',
']',
'/keyIndex 0',
'/colorIndex 0',
'/isOpen 1',
'/eventCount 1',
'/event-1 {',
'/useRulersIn1stQuadrant 0',
'/internalName (adobe_scale)',
'/localizedName [ 18',
'4d69736520c3a0206c27c3a96368656c6c65',
']',
'/isOpen 0',
'/isOn 1',
'/hasDialog 1',
'/showDialog 0',
'/parameterCount 4',
'/parameter-1 {',
'/key 1970169453',
'/showInPalette -1',
'/type (boolean)',
'/value 1',
'}',
'/parameter-2 {',
'/key 1818848869',
'/showInPalette -1',
'/type (boolean)',
'/value 1',
'}',
'/parameter-3 {',
'/key 1935895653',
'/showInPalette -1',
'/type (unit real)',
'/value 10.0',
'/unit 592474723',
'}',
'/parameter-4 {',
'/key 1668247673',
'/showInPalette -1',
'/type (boolean)',
'/value 0',
'}',
'}',
'}'].join('\n');
createAction(actionStr, set);
app.doScript(action, set);
app.unloadAction (set, '');
function createAction (actionStr, set) {
var fpath = Folder ('~/Desktop');
var f = File(fpath +'/'+ set + '.aia');
f.open('w');
f.write(actionStr);
f.close();
app.loadAction(f);
f.remove();
}
※ オブジェクトを選択していないとエラーが発生するので注意
アクションスクリプトに関するメモ
- メニュー名などは16進数に変換される。
- 確認したい場合は変換ツールを利用。
value
の数は16進数の文字数を入力する必要がある。
アクションからスクリプトを実行するための検証
C:\Program Files\Adobe\Adobe Illustrator CC 2017\Presets\ja_JP\スクリプト
にスクリプト(例:親レイヤーの削除.jsx)を格納。- アクションを録画し、
ファイル > スクリプト
からの登録はできない。 メニュー項目から挿入
でスクリプトを選択するとアクション登録可能。- Illustrator を再起動するとアクションが消える。
ファイル > スクリプト > 親レイヤーの削除
を手動実行すると再び表示される。
アクションを登録するスクリプト
var set = 'my';
var aia = File('~/Desktop/my.aia');
try {
// アクションが存在する場合アンロード
app.unloadAction(set, '');
} catch (e) {}
app.loadAction(aia);
このスクリプトを実行すると、アクションが登録されます。
アクションを実行するスクリプト
app.doScript('remove_layer', 'my');
しかし、エラーが発生します。簡単な alert
のスクリプトでも実行できませんでした。

app.doScript('復帰', '初期設定アクション');
結論
- スクリプトをアクションから実行することはできない。
- アクションをスクリプトから実行するのは可能。
- ただし、Illustratorのバージョンによって挙動が異なるため注意。
まとめ
もう一度書きますが、本来はスクリプトをアクションで実行したかったのですが、Illustratorにあるバグに阻まれ実行できませんでした。
最新版では修正されているようですが、古いバージョンでは動かないため、もどかしいです。
コメント