Illustratorスタートアップスクリプト、アクションからのスクリプトの実行の副作用

ExtendScript

Adobeのアプリケーションの中でも一番需要のあるIllustratorのScriptですが中々細かい部分でトラブルを起こしたり誰も知らないようなマニアックな使い方とかあったりします。というわけで今回はScriptをアクションから実行した場合に起こるエラーとスタートアップスクリプトフォルダについて。

アクションからのスクリプトで起こるエラー

アクションからScriptを登録して実行する方法結構有名なのですがこの方法で実行すると結構な割合で不具合が多く、経験上動かなくなるようなことも少なくありませんでした。とりあえずまずはその方法から。

アクションからのScriptの実行の方法

以下の方法でアクションにScriptの実行を登録できます。

  1. 使用するScriptを事前にアプリケーションのスクリプトフォルダに入れておく
  2. 目的のScriptをメニューから選べるようになっている
  3. アクションを作成
  4. アクションパネルのメニューから実行を選んで目的のScriptをメニューから選ぶ

これでアクションから実行できるようになります。
これによるメリットはなんといってもアクションからの実行なのでショートカットに登録してScriptの実行をキーボードショートカットから実行できることでしょう。

アクションにScriptを登録

アクションから実行するデメリット

ただこのやり方で使っていたらいくつか問題に直面しました。

ファイルが何も開いていない時に実行できない

Illustrator上でファイルが何も開いていない時に実行するとエラーで実行できませんでした。Scriptの内容に関係なくアラートが出て有無を言わさず止められるのでドキュメントを生成するようなタイプのScriptは使用に支障が出そうです。

ドキュメントが開かれていないのでエラーになる
エラーの警告
アクションの実行(doScript)を含んだコードのScriptを実行すると止まる

アクションから実行するせいかアクションを実行するコードを含んだScriptを実行すると止まってしまいました。IllustratorのScript自体APIでアクセスできる項目が限られているのでアクションを生成して実行というやり方をどうしてもとらざるを得ない開発者も多いでしょう。その場合大きな壁となります。

おそらくアクションからアクションを実行するという処理内容が良くないのでしょうか。ちなみにこれらの実行環境はMac、WinのCC2023、2024、2025と一通り行ったので特定の環境下に依存するような現象でもないと思います。

ショートカットを使用する場合の代替案

ものかの氏のSPAiを使うといいでしょう。ショートカット登録の機能があって基本的にどんな内容のScriptでも動作が止まるような症状はありませんでした。快適に動くのでこちらの方がおすすめです。

スタートアップスクリプトフォルダとは

聞き慣れない言葉だと思いますが実はIllustratorにもアプリケーションを実行した時に自動的に特定のScriptを実行する機能があります。まずは以下のディレクトリに実行したいScriptを入れます。Startup Scriptsのフォルダがなければそのままの名前で作成してアプリケーションフォルダの中に入れてください。

この状態で再度Illustratorを起動すると起動直後にフォルダに入れたScriptが実行されます。ミス防止などのために環境設定を調べるScriptなんかを仕込むと使えそうな気もするしますが普及していないのには理由があって大きな欠点があります。

他のScript実行時も同時に発火してしまう

全く関係ないScriptを実行させるとそのままスタートアップスクリプトフォルダ内のScriptを発火してしまいます。これでは思わぬ結果を招いてしまいますが某有名なAdobe Illustrator Scripting Guideのサイトでも触れられていました。


JavaScript scripts with a .jsx extension placed in the Startup Scripts folder run automatically when:

The application is launched.
Any JavaScript file is selected from the Scripts menu (File > Scripts).

少なくともメニューからScriptを実行すると一緒にスタートアップスクリプトも実行されるわけですね。他の場合は試していませんがあまり使わない方が良さそうです。どうしてもスタートアップ時にScriptを実行させたい場合はCEPのイベントを使った方が良いでしょう。

参考リンク

By Me Beer サイトを応援する