見出し画像

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相当になります(これは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 用追加アクション]をご購入ください。すでにそちらの記事を購入済みの場合は、その記事からダウンロードできます。

単品で買いたい場合はこの記事をご購入のうえ、下のリンクからダウンロードしてください。

ここから先は

11字
この記事のみ ¥ 300
期間限定!Amazon Payで支払うと抽選で
Amazonギフトカード5,000円分が当たる

この記事が気に入ったらチップで応援してみませんか?