Practice makes Perfect !

ExtendedScript素人です。同じ境遇の方、一緒に脱素人を目指しましょう!

AdjustPageItems.jsxとdoScript

AdjustPageItems.jsxは単位をミリでつかえるようにしたい

InDesignのサンプルスクリプトに含まれている「AdjustPageItems.jsx」。複数ページのPDFをInDesignに流し込んだ後で奇数ページと偶数ページに分けてそれぞれ位置をずらすことができるので重宝してます。

ただデフォルトのままだと単位がポイントになっていて入力するたびにmmも一緒に入力しないといけないのが面倒。(自動で換算してくれるのはありがたいが)
そしてたまにスクリプト実行後にドキュメントの単位設定がミリポイントに変わってしまうという現象も。(ちょっと戻ろうかなと思ってUndoした後に起こる現象??)

なので使いやすいようにカスタマイズしました。

①staticLabelを日本語表記に。わたしは垂直方向の移動が+-どっちがどっちか覚えられ人なのでついでに(下+上-)っていれちゃってます。

②オリジナルの65,66行目にあるeditUnits:MeasurementUnits.pointsをeditUnits:MeasurementUnits.millimetersに変更。これで入力単位をミリに設定するのでいちいちmmまで入力しなくて済む。

③しかし入力した数字がなぜかポイントのまま…。5ミリ動かすつもりで5と入力しても5ポイント分(1.8mm弱)しか移動せず。何故。わからず。

そこでオリジナルの90~93行目に注目

var myEvenX = myEvenXField.editValue;
var myEvenY = myEvenYField.editValue;
var myOddX = myOddXField.editValue;
var myOddY = myOddYField.editValue;

④これにそれぞれ0.352778を掛けてミリに変換したけどこんなんでいいのかなとは思う。まあ今のところは問題ないです。

var myEvenX = myEvenXField.editValue*0.352778;
var myEvenY = myEvenYField.editValue*0.352778;
var myOddX = myOddXField.editValue*0.352778;
var myOddY = myOddYField.editValue*0.352778;

doScript

これでまあ満足したんですが、入力する数値を間違えた時にUndoしようと思ってもページ数が多いと戻りたいところまで戻るのが大変!ってなってました。一度のUndoでスクリプト実行前に戻れないものだろうかと思ってました。

そこで検索して出てきたのがdoScript。Uske_SさんのDTPabのサイトを拝見させていただきました。

uske-s.hatenablog.com


ちょっと大変そうだなと思ってたんですが、何の問題もなかったです。ちょうどオリジナルも「function main(){」から始まっているので先頭に次のように入れるだけ。

app.doScript (main, ScriptLanguage.JAVASCRIPT, [], UndoModes.FAST_ENTIRE_SCRIPT);

これでスクリプト実行後に間違いに気づいてもCtrl+Zで瞬時に戻れてしまいます。

サンプルスクリプトはなかなか使えるのがありますのでお時間のある時にいろいろ見たりいじったりするのはおすすめです。