DTPab

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

表組の列幅をまとめて変更したい

先日、同僚から「表組の列幅をポチポチ手動で決まったサイズに変えていかなきゃいけないんだけど、表組がぶつ切りになっていて辛い。スクリプトでなんとかできないの?」と相談されました。
そのときは適当に5分くらいで書いたスクリプトを渡して事なきを得たのですが、同僚からは「これ汎用性もたせたらめっちゃ便利じゃない?」と言われたので僕なりに考えた汎用性とやらを実装してみました。

想定したシチュエーション

そこでできたのがこのスクリプト(コードは後述)。
○列目は幅▲mm、●列目は幅◆mm…、最初と最後の列で残りを均等に割り付けて。
というケースに対応してみた試作品です。
(画像の赤字が指定サイズ)

f:id:uske_S:20180823210421p:plain

  • たくさん表組を作ったんだけど、列幅を一括で変更したい
  • だけど特定の列はその残りで均等に割り付けたい

んで、この表組に対してスクリプトを実行すると…

f:id:uske_S:20180823210729p:plain

指定した列以外の幅をテキストフレーム幅に合わせて均等に割り付けます。

コード

コードはこちら(GitHubです)。
GitHubの仕様が変わったのかコードが見えなくなっていましたので、コードへのリンクを貼っておきます。

github.com

ダウンロードしたい方はこちらにファイルを用意しました。

使い方

InDesign上でセル、もしくは表組全体を選択した状態でスクリプトを実行してください。

設定の変更

冒頭にあるwidthsオブジェクトに設定を定義します。
定義の仕方は、

n番目の列の幅をXXにしたい → n : "XX",

とします。 スクリプトなので n は0ベースインデックスです。1列目(いちばん左の列)であれば0です。
XXには単位を付けて指定することができます。今回は"20mm"とかmm指定にしましたが、HAやptも使えます。

現状から列幅を変えたくない

XXの部分を空の文字列""としてください。
もし後述のfillを使わないのであれば、記述しなくても動作します。
例では1番目(左から2列目の列)に空の文字列を定義しましたが、fillを利用しない限りは1: "",の行自体なくてもいいです。

残りのスペースで割り付けたい

XXに"fill"と記述してください。

注意事項

  • nの部分には整数値以外を指定しないこと
  • XXの部分は単位表記がない限りは二重引用符不要ですが、付けておいたほうが間違いがなくていいかも
  • nに存在しない列を指定した場合、エラーで止まってしまいます

その他、開発者が意図しないエラーが出るかもしれませんので、用法・用量を守って正しくお使いください。

余談

注文番号がダブってるのでこのままだと印刷事故ですね…(ボソ