This started as a simple 1-up script for numbering tickets using a laser printer. This version will handle up to a 5-up layout (labeled piece1, piece2, etc.), but can be easily modified to do more by adding to the "columns_list."
For usage of InDesign's data merge functions, search for "data merge" in InDesign's help.
set columns_list to {"1", "2", "3", "4", "5"} on my_trim(text_to_trim) set the character_count to the number of characters of the text_to_trim set the new_text to (characters 1 thru (the character_count - 1) of the text_to_trim) as string return new_text end my_trim set columns_n to choose from list columns_list ¬ with prompt "How many up will pieces be printed?" default items {"1"} given «class appr»:"N-up" set columns_text to "" if columns_n is not false then repeat with n from 1 to columns_n set columns_text to columns_text & "piece" & n & "," end repeat set columns_text to my_trim(columns_text) else return end if on zero_pad(the_input, the_zeroes) set the_input to the_input as string set n to count of characters in the_input if n < the_zeroes then repeat until n = the_zeroes set the_input to "0" & the_input set n to n + 1 end repeat end if return the_input end zero_pad on my_sort(the_list, the_columns, the_zeroes) set return_this to "" set the_columns to the_columns as integer set row_jump to (round ((count of the_list) / the_columns) rounding up) as integer set row_jump_n to row_jump repeat with i from 1 to row_jump set first_cell to item i of the_list as integer set this_row to "" as text if the_zeroes is not "0" then repeat with c from 1 to the_columns set this_row to this_row & zero_pad(first_cell, the_zeroes) & "," as text set first_cell to first_cell + row_jump end repeat else repeat with c from 1 to the_columns set this_row to this_row & first_cell & "," as text set first_cell to first_cell + row_jump end repeat end if set return_this to return_this & my_trim(this_row) & return end repeat return return_this end my_sort set my_start to text returned of (display dialog ¬ "Enter the starting number" default answer "1") if my_start is not "" then set my_end to text returned of (display dialog ¬ "Enter the ending number" default answer "10") set the_zeroes to text returned of (display dialog ¬ "Leading zeroes. Enter count you need leading the end number " & ¬ "(start number will be padded to match)." & return & return & ¬ "'Fill' = fill to match end number. 001-100" & return & ¬ "'0' = no leading zeroes. 1-100" default answer "Fill") if the_zeroes is in {"Fill", "fill"} then set the_zeroes to count of characters in my_end else if the_zeroes is "0" then set the_zeroes to "0" else set the_zeroes to (count of characters in my_end) + the_zeroes end if set num_list to "" repeat with i from my_start to my_end set num_list to num_list & i as list end repeat set num_list to my_sort(num_list, columns_n, the_zeroes) set columns_text to columns_text & return & num_list as text tell application "Finder" set the_file to choose file name with prompt "Save as" default name "Number_table.csv" set newFile to (open for access the_file with write permission) set eof newFile to 0 write columns_text to newFile close access newFile end tell end if

