【解決】Keyboard MaestroのIllustratorスクリプト実行を簡単にしたい!

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る
Keyboard MaestroでIllustratorスクリプト アイキャッチ図版

Keyboard MaestroでのIllustratorスクリプト実行を解説した記事としては,三階ラボさんの記事が有名です。私もお世話になりました。
3flab inc. | Keyboard Maestro で Illustrator のスクリプトをサクっと実行

記事の要点は,スクリプトのjsxファイルをIllustratorで開くように設定すると,呼び出したとき実行できるということです。シンプルでわかりやすいですね。

ところが慣れてくると,次の項目が気になってきました。

  • スクリプトを開くIllustratorのバージョンが固定されているので,別のバージョンを併用するときどうすればいいのかよくわからない
  • バージョンが増えるたびにいちいち全バージョン登録するのは面倒くさい
  • JavaScript(ExtendScript)のみ対応で,AppleScriptやJXAはそれぞれ別の方法を用意しなければいけない

一方スクリプト起動アプリとして有名なSPAiでは,ExtendScript/AppleScript/JXA の違いを気にすることなく実行できます。あまり気にしていないかもしれませんが,Illustratorのバージョンについても管理してくれています。

具体的には,スクリプトの種類によって

  • 目の前に出ているバージョンで実行する
  • 複数バージョン起動中は実行を中止する

といった判断をしています。Keyboard Maestroでもこういうのをやってほしいですね。

そこで今回はKeyboard MaestroにSPAi風スクリプト起動ヘルパーを組み合わせ,適切な方法やバージョンでスクリプトを実行してもらう方法を紹介します。

2022/03/15追記:
こちらはもう情報が古くなっています。新しいツールに引き継いだので,スクリプトファイルを実行する Keyboard Maestro 用アクション|note をご覧ください。

下準備

ちょっと最初のセッティングが面倒なのですが,最初だけなので頑張ってついてきてくださいね。

では,こちらのファイルをダウンロードしてください。

Yatakagami.scptというAppleScriptが,スクリプト起動ヘルパー本体です。まずはこのファイルを,そう簡単に移動・改名しない場所に置いてください。この次に説明するKeyboard Maestroマクロでこの場所のパス文字列を使います。

[sttk3] Function.kmmacrosというのがKeyboard Maestroマクロです。ダブルクリックするなどして開くとインストールされますので,そうしてください。

中には2つのマクロが入っています。そのうちexecute_script(exec_path, exec_args)のほうには,Yatakagami.scptのパスを入力する必要があります。
osascript という文字の隣にある””の間に,Yatakagami.scptのファイルをドロップしてください。パスが入ります。

下準備:Yatakagamiのパスを入力 の図版

このマクロは他のマクロから呼び出すためだけに存在します。なぜそういう作りかたをするかと言うと,あとでパスなどを変更したくなったとき,ここだけ直せば済むからです。コピーしてしまうとコピーした分全部変えなければいけないですよね。

さて下準備の最後は,Keyboard MaestroでIllustratorのみで有効なマクログループを作ることです。実はこのYatakagami.scpt,PhotoshopとInDesignでもスクリプトが呼び出せます。なのでIllustratorで使う場合は,目の前のアプリがIllustratorのときだけ反応するようにしておくのが便利です。

マクログループを作って選択し,Avilable in these applicationsの中に使いたいIllustratorバージョンを全部追加してください。PhotoshopやInDesignの場合でもやることは同じです。そのアプリの全バージョンを追加します。

下準備:マクログループにバージョンを追加 の図版

試してみたところどうやら,他のマシンからインポートしてきたマクログループに,直接Avilable in these applicationsを指定すると動かないようです。自分で作ったグループに設定してください。

ここまでできたら下準備は完了です。

スクリプト登録のしかた

[sttk3] Function.kmmacrosのもう片方macro_templateは,その名の通りスクリプト実行マクロの雛形です。このマクロを下準備のとき作ったIllustrator用グループに複製し,自分が管理しやすい名前をつけてください。

複製したマクロの中に「Set Vatiable “exec_path” to Text」というアクションがあります。次は,そのアクションのto: という文字の右にある大きめのテキスト入力欄に,実行したいスクリプトのパスを入力します。下準備でやったのと同じように,ファイルをドロップすればパスが入ります。

スクリプト登録:パスを入力 の図版

あとはNew Triggerで,キーボードショートカットなどお好きな起動方法をセットすれば登録完了です。もうその方法で呼び出せるようになっています。

その下のexec_argsって何?

Adobeのスクリプトでは,実行時に引数を渡せます。引数(ひきすう)とはスクリプトに渡す文字や数字などのデータのことです。スクリプトはそのデータを見てふるまいを変えることができます。そのため,ちょっとだけ内容の違う似たような処理を1つのファイルで管理できて便利です。

今まではその引数を管理するインフラが整っていなかったので,ファイル名で代用していました(【解決】スタイルにショートカットを割り当てたい!を参照)。こういうのがもっと使いやすくなります。ただし,引数受け取りに対応したスクリプトを書けばの話ですが……

引数の設定方法は,単に「Set Vatiable “exec_args” to Text」のto: に文字を入力するだけです。特に引数が必要ない場合は入力欄を空にしておいてください。このアクションや変数を削除してしまうとIllustratorが落ちるので,消してはいけません。

スクリプト登録:引数を入力 の図版

サンプルスクリプトalert.jsx,alert.scptでそれぞれ動作をお試しできます。引数を受け取ってダイアログに出すというものです。開発者の方はそれをベースに書いてみてください。

このスクリプトを開発するにあたって,GOROLIB DESIGN(@gorolib)さん三階ラボ 長藤寛和(@kanwa)さんものかの(@monokano)さんにテストなどご協力いただきました。ありがとうございます。

これでまた少し仕事が速くなりました。今日もさっさと仕事を切り上げて好きなことをしましょう!

 

コードは長くなったのでダウンロードして見てください。

このサイトで配布しているスクリプトやその他のファイルを,無断で転載・配布・販売することを禁じます。
それらの使用により生じたあらゆる損害について,私どもは責任を負いません。
スクリプトやファイルのダウンロードを行った時点で,上記の規定に同意したとみなします。

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。

広告

コメント

  1. Oyatu より:

    はじめまして。
    いつも記事を参考にさせていただいております。
    今回、記事通りに設定してもKMからマクロキャンセルのメッセージが出てしまいます。
    KMは8.2 IllustratorCC2017 CS6 MacOS10.10.5
    何か解決のヒントがあれば教えてください。
    よろしくお願いします。

    1. したたか企画 より:

      はじめまして。コメントありがとうございます。

      まだそれだけだとどこに原因があるのか絞りきれないので,
      ・何をしたときに
      ・何というメッセージが出る
      などの情報をいただけますでしょうか。

      実行したマクロのスクリーンショットがあるともっと助かります。
      よろしくお願いいたします。

      1. Oyatu より:

        返信ありがとうございます。

         ①ここに掲載してあるサンプルの「alert.scpt」をIllustratorCC2017で実行した時
        ②KMから「Macro Cancelled」/ 「~/~/Yatakagami.scpt」のメッセージが出ます。

        SSを送りますが、どこへ送ればよいですか?

        1. したたか企画 より:

          何となくYatakagami.scptのパスを指定する部分が違って行方不明になっている気がします。
          execute_script(exec_path, exec_args)のosascriptのあたりですね。

          SSはTwitterのDMや,オンラインストレージに置いて連絡フォームにリンクを載せるなどしてください。

          1. したたか企画 より:

            こちらはTwitterで解決。最終的に効果があったのは
            ・マクログループを作り直す
            ・Yatakagami.scptをスクリプトエディタで保存し直す
            のいずれか,または両方(絞りきれなかった)。

  2. Kz.hattori より:

    はじめまして。
    Yatakagami.scptいつも使わせていただいています。ありがとうございます。
    IllustratorCC2019までは大丈夫ですが、今回Illustrator2020でも使わせていただいたところKMから Macro Cancelled
    ~/~/Yatakagami.scpt: execution error: Illustratorでエラーが起きました: JavaScript code was missin…
    と返されてしましいました。
    環境は KM:9.0.4 MacOS 10.14.6 Illustrator2020 24.0
    実行したのはここに掲載のサンプル「alert.jsx」
    解決策などありましたらば、教えていただきますようよろしくお願いいたします。

    1. したたか企画 より:

      わざわざコメントありがとうございます。ご利用していただいて嬉しいです。

      Yatakagami.scptはAppleScriptのdo javascriptという命令を経由してスクリプトを実行しているのですが,Illustrator 2020はそこにバグがあってjsxファイルを受け付けない状態になっています。プログラムの仕様を変更しないと動かないので,応急処置としてこちらのマクロをお勧めしています。

      https://twitter.com/sttk3com/status/1197284303593299968?s=20

      画像で表示しているだけなんですが,再現できそうでしょうか。

  3. Kz.hattori より:

    ご対応ありがとうございます。
    紹介いただいた方法で再現できました!
    快適なDTP環境が構築できそうです。感謝です!

    1. したたか企画 より:

      よくあれだけでわかりましたね! とりあえず解決してよかったです。

コメントを残す