JSL: obtenga gráficos abiertos valores X e YHola
Tengo un script que me permite elegir en un cuadro combinado cualquier tabla de datos que esté abierta

Si tengo una tabla de datos que tiene gráficos debajo
¿Cómo puedo seleccionar estos gráficos?
la razón es que quiero obtener los nombres de las columnas X e Y
por ejemplo, en el primer gráfico que está marcado en la imagen de arriba, quiero obtener test y test2

estos gráficos ya están abiertos en JMP y no tengo control sobre ellos (en términos de editar el script que los crea)
secuencias de comandosRe: JSL - obtener gráficos abiertos valores X e YAquí hay un enfoque que usa el JSL escrito por la plataforma (en este caso, Graph Builder) para encontrar los elementos. Lo incluyo para ilustrar lo siguiente:
- expresión ( )
- expresión de nombre ( )
- argumento ( )
- cabeza ( )
- << obtener un objeto programable (esto devuelve el objeto Graph Builder desde el cual obtiene el script)
Querrá leer sobre estos en la guía de secuencias de comandos si no los ha usado antes. Son poderosos pero requieren algo de práctica.
Como no he puesto ningún condicional (usted querrá hacer eso... verifique los nombres de las ventanas, etc.), haga lo siguiente para asegurarse de que el script funcione como está escrito a continuación.
1) Cerrar informes y gráficos actuales.
2) Cree un gráfico de Graph Builder.
3) Ejecute el siguiente script en una ventana de script. (También puede envolver esto en un bucle externo para recorrer más de una ventana de gráfico. Una vez más, este es solo un guión esquelético destinado a ilustrar la idea general).
Salud,
Brady
</CODE></P>
<PRE><CODE class=" language-jsl">Names Default To Here( 1 );
winList = Get Window List( Type( "reports" ) );
obj = winlist[1][Outline Box( 1 )] << Get Scriptable Object;
script = obj << get script;
i = 1;
//move through the script's arguments until you get to the Variables ( ) argument.
While( Head( exp = Arg( Name Expr( script ), i ) ) != Expr( Variables ), i++ );
xList = ylist = {};
nexp = name expr ( exp ); //optional; this allows us to type nexp instead of name expr ( exp ) in the code below.
//cycle through the arguments in the Variables ( ) section. If X ( ) or Y ( ) is
//encountered, insert into the appropriate list.
For( i = 1, i <= N Arg( nexp ), i++,
If( Head( var = Arg( nexp, i ) ) == Expr( X ), Insert Into( xList, Arg( Name Expr( var ), 1 ) ));
If( Head( var = Arg( nexp, i ) ) == Expr( Y ), Insert Into( yList, Arg( Name Expr( var ), 1 ) ));
);
Show( xList, yList );
Re: JSL - obtener gráficos abiertos valores X e YGracias por la ayuda
Ahora quiero obtener los valores XY (lo que está marcado en rojo), pero no estoy seguro de cómo acceder a ese valor
todo lo que puedo hacer es obtener el título (lo que está marcado en amarillo).
Descubrí que con "obtener XML" en lugar de "obtener texto" también me da los nombres, pero hay MUCHOS datos allí y espero que haya una manera más fácil

Re: JSL - obtener gráficos abiertos valores X e YDado que no tenía el control de la sesión de JMP antes de ejecutar el código que desea escribir, podría probar este tipo de enfoque:
NamesDefaultToHere(1);
tableOfInterest = "Big Class";
allWindows = GetWindowList();
tableWindows = {};
for (w = 1, w <= NItems(allWindows), w++,
winTitle = allWindows[w] << GetWindowTitle;
if (StartsWith(winTitle,tableOfInterest) & (allWindows[w] << WindowClassName) == "Report", InsertInto(tableWindows, allWindows[w]));
);
for (w = 1, w <= NItems(tableWindows), w++,
Print(tableWindows[w] << GetWindowTitle);
);
Utilice 'Ayuda > Índice de secuencias de comandos' para ver cómo funcionan los diversos comandos.
Una vez que tenga la lista de informes secundarios, puede inspeccionar cada uno para obtener lo que desee. Pero tenga en cuenta que los árboles de informes pueden ser complejos, por lo que podría requerir algo de trabajo para que sea lo suficientemente sólido.