如何将动态创建的仪表板添加到数据表的脚本面板?大家好,
我有一个 JSL 脚本,它允许用户选择一个或多个数据文件,然后将这些文件连接在一起形成一个数据表。然后,该脚本为数据表创建一个仪表板。
为了生成仪表板的 JSL,我首先手动创建一个仪表板(文件 -> 新建 -> 新建仪表板),并在仪表板构建器中向其中添加手动生成的图表;然后,我从仪表板构建器复制仪表板代码(红色箭头 -> 保存脚本 -> 到脚本窗口)并将其粘贴到我的 JSL 脚本的末尾。
这一切都很顺利——但是,我的目标是将生成的仪表板保存到数据表的脚本面板中,就像从仪表板生成器中选择红色箭头 -> 保存脚本 -> 到数据表将仪表板保存到数据表一样。我还希望不要让仪表板自动出现(用户想要查看时应该在脚本面板中单击它)。
我尝试搜索 JSL 参考 PDF 和社区讨论,但没有找到我需要的内容。有人能给我指出正确的方向吗?已附上清理过的代码,省略了数据表生成。
谢谢!
安迪
自动化和脚本苹果系统视窗回复:如何将动态创建的仪表板添加到数据表的脚本面板?我不使用应用程序构建器,我会以不同的方式构建脚本。但也许@DonMcCormack有一些想法?这可能会给你一些想法,为什么你还没有使用应用程序构建器?-(2023-US-30MP-1401) (关于同一主题Scripters Club 2024:第 1 节 - 应用程序构建器)
回复:如何将动态创建的仪表板添加到数据表的脚本面板?您可以尝试这样的操作:
dashboardExpr = Expr(
/* Code for JMP App goes here */
);
Eval(Substitute(
Expr(Current Data Table() << New Script("Dashboard",dbExpr)),
Expr(dbExpr),Name Expr(dashboardExpr)
));
将当前数据表()更改为您要添加仪表板的参考表。在仪表板运行之前,可能需要初始化其他变量。第 17 行上的变量标题以及第 24 行左右不存在的 blob 导致了问题(尽管我可以理解为什么如果您选择将其省略,则不包括它)。
回复:如何将动态创建的仪表板添加到数据表的脚本面板?谢谢 Don!效果非常好(而且你对 'title' 和 blob 的看法是正确的)。
回复:如何将动态创建的仪表板添加到数据表的脚本面板?@DonMcCormack
嗨,Don,
我现在使用您的解决方案。
但是,您知道为什么不能用 Eval 和 Expr 来解决吗?
我相信我刚刚开始理解 Eval 和 Eval Expr,但它不适用于“新脚本”
回复:如何将动态创建的仪表板添加到数据表的脚本面板?你是如何使用它的?
编辑:
希望这能给出一些想法(我认为它的工作方式与仪表板表达类似)
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt << Delete Scripts(dt << Get Table Script Names);
gb_expr = Expr(Graph Builder(
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11)))
));
Eval(Substitute(
Expr(dt << New Script("GB1", myexpr)),
Expr(myexpr), Name Expr(gb_expr)
));
Eval(EvalExpr(
dt << New Script("GB2", Expr(Name Expr(gb_expr)));
));