UXPScriptのソースコードを実行する Keyboard Maestro 用アクション
UXPScriptはAdobeアプリを自動で動かすための機能で、JavaScriptの1種です。InDesignでは2023(18.4)から搭載されました。ファイルの拡張子にはidjsを使用します。
InDesignではスクリプトパネルがついていています。ショートカットも簡単に設定できるため、さほど苦労しないかもしれません。しかしちょっとした書き捨てスクリプトを実行したいとき、ファイルで管理するのは面倒なことが多いでしょう。
そこで今回は、InDesignでUXPScriptのソースコードを実行するKeyboard Maestro用アクションを紹介します。
あらまし

InDesignでUXPScriptのテキストを実行します。入力欄にUXP用のJavaScriptソースコードを書き込み、実行するだけです。引数を指定でき、スクリプト側ではuxpモジュールのscript.argsでそれを受け取ります。Argumentsに用がないときは、空白でも何か文字を入れておいても問題ありません。
Undo modeを指定することで、スクリプト実行後Undoしたときの挙動を制御できます。
Script Request:スクリプト内の各動作を個別のステップとして元に戻す
Auto Undo:前のステップの一部としてスクリプト全体を元に戻す
Entire Script:スクリプト全体を単一のステップとして元に戻す
Fast Entire Script:スクリプト全体を単一のステップとして高速に元に戻す
おすすめはEntire Scriptです。Fast Entire Scriptにすると、オブジェクトレイヤーオプションを変更するスクリプトなどで止まることがあります。
スクリプト実行結果を文字列として返し、Keyboard Maestroでそれを通知したり変数にセットしたりできます。
動作環境・インストール方法はそれぞれリンク先をご確認ください。macOSとKeyboard Maestroを使用中のかたのみご利用できます。
使いかた
InDesignを開いた状態で、このKeyboard Maestroアクションを実行してください。指定したスクリプトが実行されます。
UXPScriptの引数の取得(※開発者向け情報)
Argumentsはuxpモジュールのscript.args[0]で受け取ります。次のスクリプトは、Argumentsに指定したテキストをダイアログに出すものです。
const { app } = require('indesign') ;
const { script } = require('uxp') ;
(() => {
alert(script.args[0]) ;
})() ;
function alert(msg) {
const theDialog = app.dialogs.add() ;
const col = theDialog.dialogColumns.add() ;
const colText = col.staticTexts.add() ;
colText.staticLabel = '' + msg ;
theDialog.canCancel = false ;
theDialog.show() ;
theDialog.destroy() ;
return ;
}UXPScriptの結果のセット(※開発者向け情報)
結果はUXPScript開発者が積極性にセットする必要があります(ExtendScriptのようにreturnした値が自動で使われるわけではありません)。次のコードのようにsetResultで結果をセットしてください。
const { script } = require('uxp') ;
(() => {
script.setResult('Success message from InDesign') ;
})() ;買う
すべてのアクションをまとめてほしい場合は、マガジン[MaestroPack]または記事[前面にあるAdobeアプリを自動で動かす Keyboard Maestro 用追加アクション]をご購入ください。すでにそちらの記事を購入済みの場合は、その記事からダウンロードできます。
単品で買いたい場合はこの記事をご購入のうえ、下のリンクからダウンロードしてください。
ここから先は

MaestroPack
前面にあるAdobeアプリケーションで,スクリプトやアクション・整列などを実行するKeyboard Maestro用追加アクションのセット…
この記事が気に入ったらチップで応援してみませんか?
