忍者ブログ

ぼんぷろぐ

InDesignとかイラレとかのスクリプトよもやま話

新しいブログに引っ越しました。

こちらのブログはもう更新しませんが、コメント欄は生きてますので疑問、ご指摘などありましたらどうぞ。

[InDesign]
nullとの比較でオブジェクトの有無を確認できるじゃん!(InDesignスクリプト)

Indesign JavaScriptで、取得したInDesignオブジェクトがほんとに存在するかをチェックできるisValidプロパティはCS4からの実装で、それ以前はエラーをキャッチするくらいしかチェック方法がなかった…
ってなことを当ブログの『InDesign Javascriptについて』のとこで書いてたんですが、全然そんなことはなかった。

『null』と比較演算子を使って比較すればよかったのですね。

#target "InDesign"
var nDocu=app.documents.item("存在しないドキュメント");

$.writeln(nDocu==null); //これがtrue
$.writeln(nDocu===null); //これもtrue!?

$.writeln(nDocu!=null); //false
$.writeln(nDocu!==null); //false

if (null) {$.writeln(true)} else {$.writeln(false)} //nullはifカッコの中ではfalse扱い
if (nDocu) {$.writeln(true)} else {$.writeln(false)} //でもこれはtrue

$.writeln(nDocu); //[object Document]
$.writeln(nDocu.toSource()); //resolve("/document[@name=\"存在しないドキュメント\"]")
$.writeln(nDocu.isValid); //これはfalse(CS4以降)
$.writeln(null==null); //trueですよね
$.writeln(nDocu==nDocu); //まさかのfalse
$.writeln(nDocu>=nDocu); //trueとな

まずDocumentsのitemメソッドを使って、"存在しないドキュメント"という名前の存在しないドキュメントを取得。
これをnullと==で比較するとtrueが返ります。
さらになんと===で比較してもtrue。
これを見たら、なんだitem()がnullを返してるだけじゃんって思われそうですがそうじゃないのです。
toSource()とかやってみれば分かる通り、あくまでitem()が返したのは[object Document]で、それが『nullと比較するとtrueを返す』という特殊な性質を持ってるようです。
PR

[InDesign]
ドキュメント間のコピペでスタイル名被りを防ぐためのスクリプト

InDesignであるドキュメントから別のドキュメントにコピペするときってスタイル名に結構気を使います。

なにしろペースト先に同じ名前のスタイルがあるとそっちが適用されてしまうので、「ペーストしたらフォントが変わっちゃったんですけど??」的なことがよく起こります。
かといってちょっとした使い捨てのドキュメントでまでいちいちユニークなスタイル名をつけるのはめんどくさい。
ってことで作ってみました。
※CS3以下では動きません。

使い方

①コピーしたいものを選択して、『スタイルを移動してコピー.jsx』を実行します。
②別のドキュメントで普通にペーストします(元の位置にペースト等も可)。
③使われていたスタイルが『(ドキュメント名)からコピー』という名のスタイルグループに入った状態でペーストされます。
※段落、文字、オブジェクト、セル、表のすべてのスタイルに有効です。




[InDesign]
Bridgetalkの練習①:InDesign上の選択物のサイズでイラレ等で新規作成するスクリプト

InDesignのドキュメント上で選択中のオブジェクトのサイズで、イラレやフォトショ、InDesignで新規ドキュメントを作成するスクリプトです。
ダイアログで
・サイズに線幅を含むか含まないか(visibleBoundsかgeometricBoundsか)
・新規ドキュメントのカラーモードはCMYKかRGBか
・新規作成するアプリ
・フォトショで新規作成するときの解像度(dpi)
が選択できます。
何も選択してない状態で実行すると、編集中のInDesignドキュメントのページサイズが使われます。
CS4以下ではきっと動かない。

ダウンロード

[選択物のサイズで新規作成ver1.0]

[InDesign]
『レイヤーを記憶してペースト』はライブラリやスニペット配置にも効くみたい



レイヤーパネルメニューにこんなのあるんですね。
こいつはレイヤーを記憶してペーストするコマンドではなく、ペーストする時に元のレイヤーを保持したままするかどうかを選択する環境設定項目です。

かと思ったらこれペーストどころじゃなく、
配置系全般に効くみたい。
ライブラリアイテムの配置、スニペットファイル(.idms)の配置、別ウィンドウからのD&Dとかとか。
ヘタに使うと事故の元になる機能ですが、自分的にはこれを知ってライブラリが3倍くらい使いやすくなった。

プロフィール

kawamoto_α
(あるふぁ(仮))


InDesignで新聞組版のようなことをしています。

ツイッタ

※ブラウザによっては当ブログからDLしたzipファイルが拡張子なしになることがあるようですが、.zipを補って開いてください。



イラレ用トーンカーブスクリプト(¥1500)



クロソイド式角丸長方形スクリプト(¥500)
Illustrator用
InDesign用



イラレスクリプトをキーボードショートカットで実行するやつ(Win用)