JSL - obtenir les valeurs X et Y des graphes ouvertsBonjour
J'ai un script qui me permet de sélectionner dans une zone de liste déroulante n'importe quelle table de données ouverte

Si j'ai une table de données contenant des graphiques

comment puis-je sélectionner ces graphiques?
la raison est que je veux obtenir leurs noms de colonnes X et Y
par exemple dans le premier graphique marqué dans l'image ci-dessus, je veux obtenir test et test2

ces graphiques sont déjà ouverts dans JMP et je n'ai pas de contrôle sur eux (en termes d'édition du script qui les crée)
ScriptingRe: JSL - obtenir les valeurs X et Y des graphes ouvertsÉtant donné que vous n'aviez pas le contrôle de la session JMP avant d'exécuter le code que vous souhaitez écrire, vous pouvez essayer ce type d'approche:
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);
);
Utilisez «Aide> Index de script» pour voir comment les différentes commandes fonctionnent.
Une fois que vous avez la liste des rapports enfants, vous pouvez inspecter chacun d'eux pour en extraire ce que vous voulez. Mais gardez à l'esprit que les arborescences de rapports peuvent être complexes, il faudra donc du travail pour les rendre suffisamment robustes.
Re: JSL - obtenir les valeurs X et Y des graphes ouvertsMerci pour l'aide
Je veux maintenant obtenir les valeurs XY (ce qui est marqué en rouge) mais je ne sais pas comment accéder à cette valeur
tout ce que je peux faire, c'est obtenir le titre (ce qui est marqué en jaune).
J'ai trouvé qu'avec "get XML" au lieu de "get Text" me donne aussi les noms, mais il y a BEAUCOUP de données là-bas et j'espère qu'il y a un moyen plus simple

Re: JSL - obtenir les valeurs X et Y des graphes ouvertsVoici une approche qui utilise le JSL écrit par la plateforme (dans ce cas, Graph Builder) pour trouver les éléments, je l'inclus pour illustrer ce qui suit:
- expr ()
- nom expr ()
- arg ()
- diriger ( )
- << obtenir un objet scriptable (cela renvoie l'objet Graph Builder à partir duquel vous obtenez le script)
Vous voudrez les lire dans le guide de script si vous ne les avez pas déjà utilisés. Ils sont puissants mais nécessitent un peu de pratique.
Puisque je n'ai mis aucune condition (vous voudriez le faire ... vérifier les noms de fenêtre, etc.), procédez comme suit pour vous assurer que le script fonctionne comme indiqué ci-dessous.
1) Fermez les rapports et graphiques actuels.
2) Créez un graphique Graph Builder.
3) Exécutez le script ci-dessous dans une fenêtre de script. (Vous pouvez également l'envelopper dans une boucle externe pour parcourir plus d'une fenêtre graphique. Encore une fois, ce n'est qu'un script squelettique destiné à illustrer l'idée globale.)
À votre santé,
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 );