Illustrator│アクションをスクリプト化して実行する方法

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進数の文字数を入力する必要がある。

アクションからスクリプトを実行するための検証

  1. C:\Program Files\Adobe\Adobe Illustrator CC 2017\Presets\ja_JP\スクリプト にスクリプト(例:親レイヤーの削除.jsx)を格納。
  2. アクションを録画し、ファイル > スクリプト からの登録はできない。
  3. メニュー項目から挿入 でスクリプトを選択するとアクション登録可能。
  4. Illustrator を再起動するとアクションが消える。
  5. ファイル > スクリプト > 親レイヤーの削除 を手動実行すると再び表示される。

アクションを登録するスクリプト

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にあるバグに阻まれ実行できませんでした。

最新版では修正されているようですが、古いバージョンでは動かないため、もどかしいです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次