忍者ブログ

ぼんぷろぐ

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

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

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

[InDesign]
テキストを分割しながらペーストするスクリプト

あいうえお,かきくけこ,さしすせそ

っていうテキストをコピーしているとき、
  • InDesignのテキスト中にカーソルを置いてこのスクリプトを実行すると、「あいうえお」を挿入して、クリップボードに「かきくけこ,さしすせそ」が残ります。
  • 再度実行すると「かきくけこ」を挿入して、クリップボードに「さしすせそ」が残ります。
  • 再再度実行すると「さしすせそ」を挿入して、クリップボードに「,」が残ります。
  • 再再再度実行すると、何も起きません。
(区切り文字に","を指定している場合)

InDesign上で何も選択してない状態でこのスクリプトを実行すると、下のようなダイアログが出て、区切り文字を変更することができます。


なお、デフォルトの区切り文字は"\r\r"(改行2回)です。

2行目の
var KeepFormat=false;

var KeepFormat=true;
にしたらコピペ元の書式を維持できるかもしれないけどあまり調べてないので非推奨。
PR

[InDesign]
ページアイテムの属性をコピペするスクリプト

(2015.06.10 ちょっと更新ver1.1)
たとえばあるページアイテムについて、「右端をこの座標に合わせないさい」って言ったら、
ページアイテムを左右に移動させて右端がその座標にくるようするか、
ページアイテムを変形(左右方向に伸縮)して左端は動かさずに右端の座標を合わせるか、
2通りが考えられるわけですが、

今まで勝手に前者にしてたのを、選択できるようにしたというアップデートです。
↓こんな感じ



ダウンロード

[属性コピペver1.1]



InDesignで、オブジェクトスタイルにあるような各種設定や、大きさ、位置、回転、シアーの設定値を選択アイテムから取得し、別のアイテムに適用するスクリプトです。適用先が別のドキュメントでも使えます。コピペと言ってますがクリップボードは使用しません。

オブジェクトスタイルを作る手間を省いたり、大きさや位置を揃えたり、いろんな使い方ができると思います。選択キーオブジェクトが実装されてないCS5.5以前では、キーオブジェクトを使った整列の代替にもなるかも。

使い方 その1

①ページアイテムを選択し、属性コピ.jsxを実行します
②ダイアログからコピーしたい属性にチェックを入れてOKを押します(複数選択可)
 
③別のページアイテムを選択して、属性ペ.jsxを実行します
 
※属性コピ.jsx、属性ペ.jsxのキーボードショートカットを登録しとくと楽チンです。

使い方 その2(CS6以降)

①複数ページアイテムを選択し、さらにその中から一つをクリックしてキーオブジェクトにします
②属性コピ.jsxを実行し、揃えたい属性にチェックを入れてOKを押します

③キーオブジェクトの設定が他のオブジェクトに適用されます


[InDesign]
UndoModes.FAST_ENTIRE_SCRIPTとisValidのバグ(InDesignスクリプト)

バグっぽいものに出くわしたのでメモ。
UndoModes.FAST_ENTIRE_SCRIPTでスクリプトを実行しているとき、値がfalseであるようなisValidプロパティにアクセスすると、それまでの変更が元に戻ってしまうらしい。(CS6@Windows7で確認)

app.doScript(main,ScriptLanguage.JAVASCRIPT,[],UndoModes.FAST_ENTIRE_SCRIPT);
function main(){
    var Sel0=app.activeDocument.selection[0];
    Sel0.contents="かきかえたよ";
    alert(Sel0.contents);
    $.writeln(app.documents.item("ないよ").isValid);
    alert(Sel0.contents);
}

上記のスクリプトを、適当に文字を入れたテキストフレームを選択して実行すると…

テキストフレームのコンテンツを"かきかえたよ"に書き換え、アラートにそのコンテンツを表示する。もちろん "かきかえたよ" と表示される。
ここで、"ないよ"という名前のドキュメントを取得し、そのisValidプロパティにアクセスしてみる。そんな名前のドキュメントは無いのでfalseが返ってくる。
再度、テキストフレームのコンテンツをアラートすると、なぜか書き換える前のものが表示される。

回避方法:UndoModes.ENTIRE_SCRIPT にしておく。
速いからってなんでもFAST_ENTIRE_SCRIPTにしときゃいいってもんじゃないようですな。



(2019/11/07 追記)
ちなみにobj.isValidを同等な別の表現
obj!=null
とか
(function(){try{obj.name;return true;}catch(e){return false}})()
にしてもダメです

[InDesign]
InDesignスクリプトについての大ざっぱな情報

Indesignスクリプトが増えてきたので使い方とか知ってることをまとめておきます。間違いの指摘など歓迎します。

プロフィール

kawamoto_α
(あるふぁ(仮))


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

ツイッタ

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



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



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



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