JSL: obtenga valores X e Y de gráficos abiertosHola
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 hacer 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)
ScriptingRe: JSL - obtener gráficos abiertos valores X e YDado que no tenía el control de la sesión JMP antes de ejecutar el código que desea escribir, puede 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 distintos comandos.
Una vez que tenga la lista de informes secundarios, puede inspeccionar cada uno para extraer lo que desee. Pero tenga en cuenta que los árboles de informes pueden ser complejos, por lo que esto podría requerir algo de trabajo para que sean lo suficientemente sólidos.
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 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:
- expr ()
- nombre expr ()
- arg ()
- cabeza ( )
- << obtener un objeto programable (esto devuelve el objeto Graph Builder del que 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.
Dado que no he puesto ningún condicionante (le gustaría hacer eso ... verifique los nombres de las ventanas, etc.), haga lo siguiente para asegurarse de que el script funcione como se escribe a continuación.
1) Cerrar informes y gráficos actuales.
2) Cree un gráfico Graph Builder.
3) Ejecute el siguiente script en una ventana de script. (También puede envolver esto en un ciclo externo para recorrer más de una ventana de gráfico. Nuevamente, esto 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 );