30)僕もScriptを使って串刺しナンバリング

| コメント(3)

串刺し会長やまさん
「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

Comments are nofollow setting

コメント(3)

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

あ。そうでしたか。スイマセンありがとうございました。

コメントする

エントリー一覧

OpenID対応しています OpenIDについて
Powered by Movable Type 8.0.2
漢字イラストロジック-脳トレ京
FREE ONLINE SUDOKU