![見出し画像](https://assets.st-note.com/production/uploads/images/170467451/rectangle_large_type_2_49a2f4e34e4e548d34c8bf2cba98d475.png?width=1200)
UXPScriptのソースコードを実行する Keyboard Maestro 用アクション
UXPScriptはAdobeアプリを自動で動かすための機能で、JavaScriptの1種です。InDesignでは2023(18.4)から搭載されました。ファイルの拡張子にはidjsを使用します。
InDesignではスクリプトパネルがついていています。ショートカットも簡単に設定できるため、さほど苦労しないかもしれません。しかしちょっとした書き捨てスクリプトを実行したいとき、ファイルで管理するのは面倒なことが多いでしょう。
そこで今回は、InDesignでUXPScriptのソースコードを実行するKeyboard Maestro用アクションを紹介します。
あらまし
![](https://assets.st-note.com/img/1737108829-W7ozd3tE16HND8GkgSqTpfs2.png?width=1200)
InDesignでUXPScriptのテキストを実行します。入力欄にUXP用のJavaScriptソースコードを書き込み、実行するだけです。引数を指定でき、スクリプト側ではuxpモジュールのscript.argsでそれを受け取ります。Argumentsに用がないときは、空白でも何か文字を入れておいても問題ありません。
Undo modeは指定できず、スクリプト実行後Undoしたときの挙動は常に、スクリプト内の各動作を個別のステップとして元に戻すScript Request相当になります(これはInDesignが進化したら改善するかもしれません)。
スクリプト実行結果を文字列として返し、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 用追加アクション]をご購入ください。すでにそちらの記事を購入済みの場合は、その記事からダウンロードできます。
単品で買いたい場合はこの記事をご購入のうえ、下のリンクからダウンロードしてください。
この記事が気に入ったらチップで応援してみませんか?