通过另一个脚本将jsl脚本加载到数据表中你好,
我有几个脚本(XXX.jsl)用于生成单独的报告,每个报告内都包含许多图表。我还有第二个脚本,它从 exel 文件加载数据,修改生成的 JMP 表并保存该表。
我有兴趣在第二个脚本中包含一个部分,该部分从文件夹加载这些报告脚本,并使其在 JMP 表的左上角框中可用。
我这样做是因为我创建了一个 JMP 脚本,我的同事应该会用到。他们只需更改 Excel 文件的文件路径并运行该脚本即可。这样他们就能获得 JMP 表,并根据当前表选择运行报告。
我确信有一个选项,但目前的方法例如 include() 失败或 << 将脚本保存到数据表失败。
自动化和脚本回复:通过另一个脚本将 jsl 脚本加载到数据表中这是一个简单的例子,它将文件中的文本作为表格脚本添加到表中
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))
);
));
如果您希望保留评论,则会稍微复杂一些。
编辑:此外,如果不需要注释,您可以使用 Include 和 << Parse Only
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))
);
));
回复:通过另一个脚本将 jsl 脚本加载到数据表中非常感谢您的快速回复。
您能否进一步解释一下这个解决方案?
使用“名称默认为此处(1)”;您可以设置本地名称空间。
然后打开一个 jmp 表并删除打开的表附带的脚本,对吗?
接下来是处理需要加载的脚本的部分。你定义了变量 script_txt,它表示从指定目录加载的文本文件。最后五行代码是做什么的,能解释一下吗?
我总是喜欢详细了解代码的功能。这有助于我在实现过程中避免一些简单但致命的错误。
回复:通过另一个脚本将 jsl 脚本加载到数据表中我建议阅读JMP 脚本指南来了解基础知识。
- 关于名称默认为此处(1);您应该始终以此来启动您的脚本, 脚本指南>编程方法>高级作用域和命名空间。
- 打开表格和删除脚本只是为了演示目的,以便更容易地展示正在发生的事情。
- 最后的部分是使用表达式评估来确保以正确的格式将脚本放入表中,以便于运行, 脚本指南>编程方法>高级表达式,宏和列表。
回复:通过另一个脚本将 jsl 脚本加载到数据表中太棒了,谢谢你,它真的有效!非常感谢你的解释。