DTPab

印刷やデザイン、アドビ製アプリやスクリプトなど、雑多な技術ブログ

InDesignの表でセルの高さを自由に変えたい

割と知られた話かと思いますが、InDesignでのセルの高さは、最低値が決まっています。
それより小さくしようとすると怒られるんですよね。

f:id:uske_S:20200225230203p:plain
高さ3pt未満に設定できない

それが3ptという分水嶺。
しかしスクリプトから指定すると、これがすんなり受け容れられてしまうのです*1

f:id:uske_S:20200225230403p:plain
実際に1mmにしてみたところ

必要になるコードは下記だけ。

var doc = app.activeDocument;
var sel = doc.selection[0].cells;
for (var i=0, len=sel.length; i<len; i++) {
    sel[i].height = "1mm";
    sel[i].autoGrow = false;
}

ただこれだけだとなんの例外処理もしてないので実用的ではないかも。
というわけで最低限の処理を組み込んでみた感じが下記のスクリプトです。

gist.github.com

実行するとこんなダイアログが出ます。
f:id:uske_S:20200225231915p:plain

単位付きで構わないので、入力してOKを押します。そうするとセルの高さがその値にセットされます。
スクリプトで3pt未満の値に変更しても、InDesignから改めてセルの高さを入力し直そうとするとやっぱり怒られます。それはどうしようもない。

また、コードの通り、入力する値についてはなんのバリデーションもしてません*2。あしからずです。

スクリプト実行後に環境設定ファイルを書き出して、スクリプトを再実行する際に前回の設定値を覚えておく、なんて洒落たことをやるとモテると思いまーす。

*1:動作検証はCC2019/2020のみ

*2:無効な文字列を入力したらスクリプトがエラーで停止します