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進数にエンコードされます。
- 内容を確認したい場合は、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に関するその他の関連記事は、以下のリンクから確認できます。

レイヤー操作に関するスクリプトの解説はこちらです。

スクリプトの記事は、ほかにもあります。




まとめ
検証の結果、スクリプトをアクションから呼び出す運用はIllustratorの不具合により困難でした。
バージョンによる挙動の違いもあるため、アクションの自動処理を行いたい場合はスクリプト側からアクションを実行する方法をおすすめします。
Illustratorに関するほかの機能やテクニックは、Illustratorの使い方まとめにて詳しく解説しています。
この不具合がどのバージョンで直ったのかは、こちらでは確認できていません。
お使いのIllustratorで、アクションからスクリプトを直接実行できるかを先に試してください。
実行できるなら、この記事の回り道は不要です。

コメント