JSL: ottieni i valori X e Y dei grafici apertiCiao
Ho uno script che mi consente di selezionare in una casella combinata qualsiasi tabella di dati aperta

Se ho una tabella dati con grafici sotto

come posso selezionare questi grafici?
il motivo è che voglio ottenere i nomi delle colonne X e Y.
per esempio nel primo grafico che è segnato nell'immagine sopra voglio ottenere test e test2

questi grafici sono già aperti in JMP e non ho il controllo su di essi (in termini di modifica dello script che li crea)
ScriptingRi: JSL - ottieni i valori X e Y dei grafici apertiDato che non avevi il controllo della sessione JMP prima di eseguire il codice che desideri scrivere, potresti provare questo tipo di approccio:
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);
);
Usa "Aiuto> Indice di scripting" per vedere come funzionano i vari comandi.
Una volta che hai l'elenco dei rapporti sui bambini, puoi ispezionarli ciascuno per estrarre quello che vuoi. Tuttavia, tieni presente che gli alberi dei rapporti possono essere complessi, quindi potrebbe essere necessario un po 'di lavoro per renderli sufficientemente robusti.
Ri: JSL - ottieni i valori X e Y dei grafici apertiGrazie per l'aiuto
Ora voglio ottenere i valori XY (ciò che è contrassegnato in rosso) ma non sono sicuro di come accedere a quel valore
tutto quello che posso fare è ottenere il titolo (quello che è segnato in giallo).
Ho scoperto che con "ottieni XML" invece di "ottieni testo" mi dà anche i nomi, ma ci sono MOLTI dati lì e spero che ci sia un modo più semplice

Ri: JSL - ottieni i valori X e Y dei grafici apertiEcco un approccio che utilizza il JSL scritto dalla piattaforma (in questo caso, Graph Builder) per trovare gli elementi. Lo includo per illustrare quanto segue:
- expr ()
- nome expr ()
- arg ()
- testa ( )
- << ottieni oggetto scriptable (restituisce l'oggetto Graph Builder da cui ottieni lo script)
Ti consigliamo di leggerli nella guida allo scripting se non li hai usati prima. Sono potenti ma richiedono un po 'di pratica.
Dal momento che non ho inserito alcuna condizione (vorresti farlo ... controlla i nomi delle finestre, ecc.), Fai quanto segue per assicurarti che lo script funzioni come scritto di seguito.
1) Chiudi report e grafici correnti.
2) Crea un grafico per il generatore di grafici.
3) Esegui lo script seguente in una finestra di script. (Puoi anche avvolgerlo in un ciclo esterno per scorrere più di una finestra del grafico. Ancora una volta, questo è solo uno script scheletrico inteso a illustrare l'idea generale.)
Saluti,
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 );