To check if the Pantone color printed on my own printer is the same as the official color swatch from Pantone i'm trying to create a Color Sheet with all the Pantone colors.
This is my applescript so far. It creates the first line with six rectangles with the first Pantone colors from the list (including a label below). I'm having trouble creating the next lines with the rest of the colors rectangles (The list of Pantone Colors is much longer)
tell application "Adobe InDesign CC 2017"
set pantone to {"PANTONE 159 C", "PANTONE Yellow C", "PANTONE Yellow 012 C", "PANTONE Orange 021 C", "PANTONE Warm Red C", "PANTONE Red 032 C", "PANTONE Rubine Red C", "PANTONE Rhodamine Red C", "PANTONE Purple C", "PANTONE Violet C", "PANTONE Blue 072 C", "PANTONE Reflex Blue C", "PANTONE Process Blue C", "PANTONE Green C", "PANTONE Black C", "PANTONE Yellow 0131 C", "PANTONE Red 0331 C", "PANTONE Magenta 0521 C", "PANTONE Violet 0631 C", "PANTONE Blue 0821 C", "PANTONE Green 0921 C", "PANTONE Black 0961 C", "PANTONE 801 C", "PANTONE 802 C", "PANTONE 803 C", "PANTONE 804 C", "PANTONE 805 C", "PANTONE 806 C", "PANTONE 807 C", "PANTONE 871 C", "PANTONE 872 C", "PANTONE 873 C", "PANTONE 874 C", "PANTONE 875 C", "PANTONE 876 C", "PANTONE 877 C", "PANTONE Medium Yellow C", "PANTONE Bright Orange C", "PANTONE Bright Red C", "PANTONE Strong Red C", "PANTONE Pink C", "PANTONE Medium Purple C", "PANTONE Dark Blue C", "PANTONE Medium Blue C", "PANTONE Bright Green C", "PANTONE Neutral Black C", "PANTONE 100 C"}
set myY1 to 3
set myX1 to {3, 10, 17, 24, 31, 38}
set myY2 to 6
set myX2 to {9, 16, 23, 30, 37, 44}
set x to 0
repeat 6 times
tell page 1 of document 1
set x to (x + 1)
make new rectangle with properties {fill color:(item x of pantone), geometric bounds:{myY1, (item x of myX1), myY2, (item x of myX2)}}
set textFrame1 to make text frame with properties {geometric bounds:{myY1 + 3.2, (item x of myX1), myY2 + 1, (item x of myX2)}, contents:(item x of pantone)}
set theStory to parent story of contents of textFrame1
set properties of theStory to {justification:center align, point size:8, applied font:"Arial"}
end tell
end repeat
end tell
In InDesign the coordinates of rectangle are X/Y of upper left corner and X/Y of bottom right corner and values are based on horizontal/vertical measurement units in Preferences. In your script, upper left corners of 1st row are X(vertical)=6.2 and Y(horizontal)=3,10,17,24,31,38 and bottom right corners are X=9,2 and Y=9,16,23,30, 37,44.
It means your rectangle is 3 units high and 6 wide. Instead I'll used variables _High=3 and _Wide=6.
Based on your script, the starting vertical position is _StartVert=6.2 and starting horizontal position is _StartHor=3.
The horizontal space between 2 rectangles is 1 (every 7, and 6 wide) and I assume you also want same vertical space between 2 rows. Then _SpaceCol and _SpaceRow are set to 1.
Last, but not least, the number of rectangles per row is set in _RectPerRow=6.
Using MOD and DIV operators, it is quite easy to determine the position of top left corner of any rectangle RefNum (RefNum from 1 to maximum number of rectangles).
The script bellow calculates the position of each rectangle :
I leave the log line to allow you to check that coordinates of your rectangles are correct.
In this case, you will draw 18 rectangles (_MaxRect) so 3 rows of 6 (RecPerRow=6).
I let you add the specific InDesign instructions using these rectangles for both 'make new rectangle' and 'make text frame'. Of course your variable Pantone must contained _MaxRect values (here 18 !).