串刺し会長やまさん
「ExcelVBAとIndesignデータ結合」やまさんThese are the days of my life
やもさんのブログに
やもめも「あえてScriptを使わずに串刺しナンバリングしてみる(小ネタ)」
そして市川せうぞーさんが大人げなくも作られたブログはこちら!
あえてScriptを使って串刺しナンバリングしてみる(小ネタ)
chalcedonyさんのも貼っておきます。準備中らしいですが
くしざし試作 - Quill.to/chalcedony
串刺しナンバリングをご存じない方はあさうすさんの下記をごらんください。(僕も串刺しはしらなかった)
んで大人げなくスクリプトバージョンも作ってみました。twitterでスクリプトで連番つくってセットするのが速いとつぶやかれていたので!
まずはマスターページにチケットを面付けして連番が入るテキストフレームを連結しておきます。ここは同じ
InDesignの1ページ目のマスターページの連番テキストフレームをオーバーライドし一つ目のテキストフレームを選択しておきます。
スクリプトを実行したら串刺しチケットの出来上がりです。
ソースはこちら。大人げなくAppleScriptです。(わざとね)最後のmy_format_fncは連番をformatする巻数です。AppleScriptはこういうのが苦手。あと最初のエラー処理はへたくそですいません。
tell application "Adobe InDesign CS4" set my_tf to item 1 of selection try if class of my_tf is not text frame then display dialog "text frame1つを選択して下さい。" return end if on error display dialog "text frame1つを選択して下さい。" return end try set my_start_tf to my_tf set my_end_tf to end text frame of my_tf set tf_count to 1 repeat until my_tf is my_end_tf --連結ボックスの数を数える set my_tf to next text frame of my_tf set tf_count to tf_count + 1 end repeat set start_num to text returned of (display dialog "スタート番号を入力" default answer "1") as integer set end_num to text returned of (display dialog "終了番号を入力" default answer "1000") as integer set upnum to round ((end_num - start_num) / tf_count) set set_text to "" repeat with i from 1 to upnum repeat with ii from 0 to tf_count - 1 set my_num_str to my my_format_fnc(ii * upnum + i) set set_text to set_text & my_num_str & return end repeat end repeat set contents of my_start_tf to set_text end tell on my_format_fnc(my_num) set format_str to "000000" set OriginalDelimiters to AppleScript's text item delimiters set AppleScript's text item delimiters to "" set cha_count to (count characters of format_str) - (count characters of (my_num as string)) set re_str to (characters 1 thru cha_count of format_str as string) & my_num as string set AppleScript's text item delimiters to OriginalDelimiters return re_str end my_format_fnc
ダウンロードはこちら。
kushizashi_as.zip
(InDesignフリーウェアの仲間にしました。)
InDesign39
AppleScriptには切り上げceilは無いのでroundを使っていますが
このことで微妙な数値の場合はナンバーが足りなくなるかもしれません。
1000までのところ999で終わるとか。
0.5足してからroundすればいいのかな?
set upnum to round (((end_num - start_num) / tf_count)+0.5)
AppleScriptにも各種丸めがあるようです。
「rounding up」でceilと同じでだそうです。
Command Referenceに載ってます。
http://developer.apple.com/library/mac/#documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html%23//apple_ref/doc/uid/TP40000983-CH216-SW59
あ。そうでしたか。スイマセンありがとうございました。