I ran your included script, and found that the Capability Platform does create what I believe are incorrectly structured spec limit column properties. I have sent this off to JMP for their response.
All that given, what has to change, is the method for extracting the current spec limits, given your current structure. The new structure is not a List,
Here is the reworked script that I believe will work with your data. Remember, once the Show Limits value is set, JMP will change the structure of the spec limit property, so future "get property("spec limits")" will return the spec limits as a list, not the strange structure assigned by the Capability Platform.
Names Default To Here( 1 );
dt=current data table();
// Get all of the numeric columns in the data table
Numeric Columns = dt << get column names( numeric, string );
// Loop across all of the columns and set the Show Limits
For( i = 3, i <= N Items( Numeric Columns ), i++,
// If the request to get the spec limits returns an empty value the
// column does not have spec limits, so don't set Show Limits
If( Is Empty( Column( dt, Numeric Columns ) << get property( "spec limits" ) ) == 0,
// This is the structure of the spec limits list. If you only set the
// Show Limits, it will wipe out the other limits, so they need to be
// retrieved and substituted into the structure
speclimitvals = Char( column(dt,Numeric Columns) << get property( "spec limits" ) );
LSL = Try( Num( Word( 2, Substr( speclimitvals, Contains( speclimitvals, "LSL(" ) ), "()" ) ), . );
USL = Try( Num( Word( 2, Substr( speclimitvals, Contains( speclimitvals, "USL(" ) ), "()" ) ), . );
Target = Try( Num( Word( 2, Substr( speclimitvals, Contains( speclimitvals, "Target(" ) ), "()" ) ), . );
Eval(
Substitute(
Expr(
Column( dt, __col__ ) << Set Property(
"Spec Limits",
{LSL( __LSL__ ), USL( __USL__ ), Target( __Target__ ), Show Limits( 1 )}
)
),
Expr( __col__ ), Numeric Columns,
Expr( __LSL__ ), LSL,
Expr( __USL__ ), USL,
Expr( __Target__ ), Target
)
);
)
);
Jim