Manual worked for me, just a number of Dispatch statements one for each frame box, and they were all even numbered.
It is worth understanding the structure of GraphBuilder as a matrix of output, they are sequentially ordered as 1, top left and ordered by column: left most column , 1 top, 2 bottom., next column top 3, bottom 4, etc.
Here is an example script to do this via jsl. Since elements have a position, there should be a method to reference the frameboxes by position.
Names Default to Here(1);
dt =open("$Sample_data/Big Class.jmp");
gb = dt << Graph Builder(
Size( 570, 490 ),
Show Control Panel( 0 ),
Variables(
X( :height ),
Y( :weight ),
Group X( :age ),
Group Y( :sex ),
Color( :sex )
),
Elements( Points( X, Y, Legend( 5 ) ) ),
);
summarize(lgen=By(:sex));
summarize(lage=By(:age));
fbs = gb << Xpath("//FrameBox");
show(nitems(fbs), nitems(fbs)==nitems(lage)*nitems(lgen) ); // should be 12 = 2 (sex) * 6(age);
for(i=1, i <= nitems(lage), i++,
fbs[2*i] << Background Color(44);
);
wait(3);
fbs[2*(1::nitems(lage))] << Background Color(77);