Chargement de scripts JSL dans une table de données par un autre scriptSalut,
J'ai plusieurs scripts (XXX.jsl) qui génèrent des rapports distincts contenant de nombreux graphiques. J'ai également un second script qui charge les données d'un fichier Excel, modifie la table JMP obtenue et l'enregistre.
Je serais intéressé d'inclure dans le deuxième script une section qui charge ces scripts de rapport à partir d'un dossier et les rend disponibles dans la case supérieure gauche de la table JMP.
Je fais cela car je crée un script JMP destiné à mes collègues. Il leur suffit de modifier le chemin d'accès au fichier Excel et d'exécuter le script. Ils devraient alors obtenir la table JMP et, en fonction de leur table actuelle, la possibilité d'exécuter les rapports.
Je suis sûr qu'il existe une option, mais actuellement, les approches avec par exemple include() ont échoué ou << l'enregistrement du script dans la table de données a échoué.
Automatisation et scriptsRe : Chargement de scripts JSL dans une table de données par un autre scriptVoici un exemple simple qui ajoute du texte d'un fichier à une table en tant que script de table
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt << Delete Scripts(dt << Get Table Script Names); // demo
script_txt = Load Text File("$SAMPLE_SCRIPTS/chaosGame.jsl");
Eval(EvalExpr(
dt << New Script("S",
Expr(Parse(script_txt))
);
));
Si vous souhaitez conserver les commentaires, ce sera un peu plus compliqué.
Modifier : Même si les commentaires ne sont pas nécessaires, vous pouvez utiliser Inclure avec << Analyser uniquement
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt << Delete Scripts(dt << Get Table Script Names); // demo
script_expr = Include("$SAMPLE_SCRIPTS/chaosGame.jsl", << parse only);
Eval(EvalExpr(
dt << New Script("S",
Expr(Name Expr(script_expr))
);
));
Re : Chargement de scripts JSL dans une table de données par un autre scriptMerci beaucoup pour votre réponse rapide.
Serait-il possible que vous expliquiez un peu plus cette solution ?
Avec « Noms par défaut ici (1) », vous définissez votre espace de noms local.
Ensuite, vous ouvrez une table jmp et supprimez les scripts fournis avec la table ouverte, n'est-ce pas ?
Vient ensuite la partie concernant le script à charger. Définissez la variable script_txt, qui doit contenir le fichier texte chargé depuis le répertoire indiqué. À quoi servent les cinq dernières lignes de code ? Pourriez-vous m'expliquer brièvement ?
J'aime toujours comprendre en détail le fonctionnement du code. Cela m'aide beaucoup à éviter des erreurs simples, mais fatales, lors de l'implémentation.
Re : Chargement de scripts JSL dans une table de données par un autre scriptJe suggère de lire le Guide de script JMP pour les bases.
- Concernant les noms par défaut ici (1) ; vous devez toujours démarrer vos scripts avec celui-ci, Guide de script > Méthodes de programmation > Portée et espaces de noms avancés .
- L'ouverture du tableau et la suppression des scripts sont uniquement à des fins de démonstration pour faciliter la démonstration de ce qui se passe.
- Les dernières parties utilisent l'évaluation des expressions pour vous assurer que vous obtenez le script dans votre table au format correct, pour qu'il soit facile à exécuter, Guide de script > Méthodes de programmation > Expressions avancées, macros et listes .
Re : Chargement de scripts JSL dans une table de données par un autre scriptSuper, merci, ça marche ! Et merci beaucoup pour l'explication.