You are using
gb = dt << Graph Builder(.........
for each execution of the Graph Builder Platform. It is not a vector of values. Each time you run the Graph Builder script, you are creating a new value for the variable "gb". That is, the pointer to the last instance of Graph Builder is moved to point to the new instance of Graph Builder. There is not a gb[1], gb[2], etc. the way you have the code setup.
One way to overcome this, is to move the Save Presentation area of code, inside the inititial For() loop.
Another way to solve this is in the initial For() Loop, save the values of "gb" into a list after it's creation. Then, point to the elements in the list in the second For() Loop, instead of gb[i] etc.
For( i = 1, i <= N Items( numericColNamesList ), i++,
gb = dt << Graph Builder(
Size( 900, 850 ),
Show Control Panel( 0 ),
Variables(
X( :MONTH ),
X( :WEEK, Position( 1 ) ),
Y( Column( numericColNamesList[i] ) ),
Y( Column( numericColNamesList[i] ) ),
Color( :MONTH )
),
Elements( Position( 1, 1 ), Histogram( X( 2 ), X( 1 ), Y, Legend( 14 ) ) ),
Elements(
Position( 1, 2 ),
Box Plot( X( 2 ), X( 1 ), Y, Legend( 16 ) ),
Line( X( 2 ), X( 1 ), Y, Legend( 17 ) )
),
SendToReport( Dispatch( {}, "400", LegendBox, {Set Title( "" )} ) )
);
If( i == 1,
Report( gb ) << Save Presentation( "C:\Users\Ann Ann\1.pptx" ),
Report( gb[i] << Save Presentation( "C:\Users\Ann Ann\1.pptx", Append ) )
);
);
Open( "C:\Users\Ann Ann\1.pptx" );
Jim