こんな世知辛い世の中だし、Script作れないし、あえてScriptも正規表現も使わずにやってみる。
要件は以下
- 8面付けのテンプレート使用
- ナンバーは開始1、増分1、任意の数で終わる
- 面付け数に応じて串刺しになるようにする
(※串刺しが何かは20101023東京勉強会関連 – These are the days of my life /?実験る?む 串刺し面付けってなぁに? を参照でよろ)
作業内容は以下
- ナンバーを作る
- 串刺しに敵うようにする
- InDesignに流し込んで自動でページ生成する
その前に計算する。500枚分作り、8面付けで割って一列の数字を出す。500÷8≠63 これが最左列の数字になる。
Excelちゃんを用意。
オートフィルで最左列に1から63までを入力させる。
右の列以降に次の式を入力
7列に全コピーして8列分作る。
(セルの選択はめんどくさいので、列選択でずらずらっと)
できたものをとりあえずコピー
下に余計なものができるけど気にしない。最左列の最下段から上に全選択してコピーする。
新規書類に貼り付けて、最右列に生成されちゃった501番以降を消しておく…手作業クリーニング。
csvに書き出し。
書き出したものをテキストエディタで開く(これからまたまた手作業クリーニング)
余計なスペースを検索置換で削除。
カンマを改行に置換。一行一項目にしておく。
整形し終わったデータがこれ
整形終わり。
InDesignのテンプレを開く
マスターにリンクしたテキストフレームを置いてるだけ。
データ結合とか使わない。
整形したデータは1行1項目なので、1行しか入らないフレームを用意してテキスト流し込みすりゃいいのさ。ははは。
流し込み。
できました。トンボ付いてないとか言わない、そこ。
速いです。ただの流し込み&ページ生成だし。
……ぁあああっ!めんどくせっ!!!
その上ちょっと、いやかなり恥ずかしい!!!(笑)
っと、思ったら
自動化できるところをマシンにやらせてみよう!(前振りなげぇ)
まず、
- ナンバーを作る
- 串刺しに敵うようにする
- InDesignに流し込んで自動でページ生成する
のうち、一番めんどくさかった1と2をなんとかしようそうしよう。
ん〜
どうしよう?w
何を使ってやろうか。
考えられるのは、
- JavaScript…となるとどれに生成させる?InDesignに?ハードル高い
- Excel…VBAか。今から覚えるのヤダ
- AppleScript…フルスクラッチしたことないし。
あ、ターミナル.app君がいるじゃないか!ShellScriptならなんとかやれそうだぞ!
というわけで書いてみる。
#!/bin/bash #20101102さらに修正(mori_tacsiさんThanks) #使い方 #kushi.sh 最大数 面付数 > filename #初期化 leftnum=0 countnum=0 maxnum=$1 mennum=$2 #一行の増分計算と前処理。剰余があれば1を足す plusnum=$[$maxnum / $mennum + (($maxnum % $mennum) > 0)] maxnum=$[$maxnum+1] #最右列がなくなるまで繰り返す while [ $leftnum -lt $[$plusnum] ] do leftnum=$[$leftnum+1] repcount=0 #面付け数分繰り返す while [ $repcount -lt $mennum ] do prnum=$[$leftnum+$repcount*$plusnum] repcount=$[$repcount+1] #最大値を超えないなら出力 if [ $prnum -lt $maxnum ];then echo $prnum countnum=$[$countnum+1] #トータルカウントが最大値を超えたら終了 if [ $countnum -gt $maxnum ];then exit fi #最大値を超えている場合空行を出力 else echo "" fi done done
でけたよー chmod +xして使うよー
(注意:別に使うのはいいですが、一切の責任は持ちませんのであしからず。エラー処理一切してないから、重要なファイルが消えても知らんで。まじで。おまけに筆者は数字が嫌いだから、結果に責任持てません。おまけにbashオンリーでごわす。うちでは動いてるから、動かないとか言われても困る)
これでリスト1と2が同時に行えてしまうのだ!
しかも実行時に数と面付け数を決められる!ということは汎用性が高い!
楽だ!
よね?(^^;
ぐぬぬ。まとめだ
もしなんか自動化とかやってみたいねぇ、と思ったら、いきなり新規にフロー変更やクソ高いソフトウェア導入のために稟議書書いて却下される日々を送る前に、
今あるフローのうち、いじれるところはどこか無いか、と考えてみると、いいかもね、という話でした。長いよ前振りが。
今回の要件のような単純な数字であればテキスト流し込みでいけてしまう。テキスト流し込みならInDesignでなくても、J-800やELWINやらでもデータさえ渡せばできるし。注意点は多いですよ。でも最小の学習で効果が出るんです。
やれるところでやっとけばいいんですよ。ということを言いたかった。はあはぁ。
今回ShellScriptを選んだのは、リスト1と2に適合しているからです。shellによる数値操作(&条件分岐)と、ファイル書き出しにより整形された数字が手に入ること、対話的操作ができること。
あと最も重要な理由は、他のプログラム言語よりもワタシにとっては近かったこと。
その気になれば、Excel関数を駆使してできなくもないかもしれません。保証はしない。…けれど。
今持ってる道具と知識を追い込んでみることで、次に必要な物も見えてくる。そー思います。
関連Link
お話してきました。 – These are the days of my life
串刺し印刷について。 – These are the days of my life
僕もScriptを使わずに串刺しナンバリング – たけうちとおるのスクリプトノート
あえてScriptを使って串刺しナンバリングしてみる(小ネタ) – 名もないテクノ手
30)僕もScriptを使って串刺しナンバリング – たけうちとおるのスクリプトノート
Sus scrofa liaodongensis: 串刺しナンバリング:焼き鳥の一品ではござらぬ
Sus scrofa liaodongensis: 串刺しナンバリング:改訂したけど、ウミスズメの黒焼きではありません。
Sus scrofa liaodongensis: 串刺しナンバリング:冗談なれど、王立協会は些かも疎かにせず
Twitter / @市川せうぞー: ruby -e ‘s=1;e=80;m=8;p=(( …
Adobe Forums: I need to number 20,000 tickets in…
karari blog ? Blog Archive ? 串刺しナンバリングをRubyでやってみる