You've created a script. Now how can you share what you’ve created?You've created a script. Now how can you share what you’ve created?You've created a script. Now how can you share what you’ve created?You've created a script. Now how can you share what you’ve created?您已经创建了一个脚本。 现在您如何分享您所创建的内容?
欢迎回来! 如果您已经完成了这一步,那么您可能已经获得了某种工作脚本。 恭喜! 如果你刚刚发现这个系列,您可能想在本文中添加一个图钉并从头开始。
以下是您可能错过的链接:
所以,您已经获得了一段不错的新代码。 你对此有何计划? 如果您在创建脚本时遇到了麻烦,您可能应该考虑如何将其打包以供其他人(或您自己)轻松使用。 在最后一篇文章中,我想给您一些关于如何分享您所创建的内容的想法。 联合管理计划有多个选项,具体取决于您想要共享的方式。
分享你的工作
有四到五种方法(取决于您与谁交谈)可以打包脚本供其他人使用:JSL 文件、查询生成器文件、JMP 插件、JMP 应用程序以及 JMP Live 和/或 JMP Public 报告。 对于我们在这里所做的脚本编写级别,其中一些方法有点超出范围(特别是应用程序;我们将把它们保存到另一个系列中)。 我在这里想做的是为每种方法提供一些选择和良好的资源,并通过一些示例来了解那些可以在脚本编写之旅的当前阶段为您带来最大收益的示例。
JSL 文件
这就是人们谈论在 JSL 工作时想到的。 如果您一直在关注该系列,那么这就是您的脚本当前所在的位置。 问题是,JSL 文件并不是存储或共享文件的最佳方式。 它们可能会被意外编辑。 他们需要有人知道如何运行脚本。 而且,说实话,对于某些人来说,看到代码有点令人生畏。
JSL 文件可能只应用于最琐碎的任务或用于较大项目的原型方法。 当然也有例外。 如果您要创建函数库或其他内容,它将作为 JSL 文件存在。 还有一些 JMP 可以让您直接提供 JSL(例如,代码折叠关键字文件),但这些往往是例外而不是规则。 我个人的偏见是,如果我正在与其他编码人员就某些内容进行协作,或者代码完全供我个人使用(例如,用于测试某些内容的代码片段),那么仅将 JSL 文件作为最后的手段。
查询生成器文件
JMP 的查询生成器通过 ODBC 驱动程序或 JMP 数据表支持大多数文件类型。 如果您的脚本涉及数据操作步骤,那么您很可能可以将大量繁重的工作卸载到查询生成器文件中,并使用查询后脚本(稍后会详细介绍)来执行查询生成器可以执行的操作不处理。 使用这些文件作为打包方法可以简化工作流程并使脚本更加健壮。 他们还使脚本可移植。 另外,您还可以使用内置的过滤器提示来使您的代码更加灵活。
让我们看一个简单的例子。 我将使用下面的 JMP 数据表查询生成器表 > 查询生成器而不是用于 ODBC 或 SAS 连接的连接,只是为了让事情变得简单,但这些情况的工作流程是相似的,并且有资源可以展示它们是如何工作的。
首先,让我们设置一个表查询。 我不会把它写出来。 JMP 文档团队出色地完成了 SATByYear 样本数据的示例。 只需按照以下说明进行操作即可这个例子并在运行查询后停止,但保持查询生成器打开。 获得数据表后,创建 Graph Builder 地图:
- 打开图形生成器(图形 > 图形生成器)。
- 将 State 拖动到 Y 轴下方的地图形状放置区域。
- 将 % Take (2004) 拖动到颜色放置区域。
- 转到图形生成器旁边的红色小三角并选择重做 > 列切换器。
- 选择服用百分比 (2004)作为您想要切换的内容并单击好的。
- 选择所有连续变量作为您想要切换的变量,然后单击好的。
选择完毕关闭控制面板。
现在,要查看图表需要进行大量的点击操作,并且对于此类数据来说这是一个非常常见的视图。 使用我们新的脚本编写技能,我们可以让查询生成器重现此图表(以及我们稍后可能选择添加的任何其他图表)。 操作方法如下:
- 选择保存脚本 > 到剪贴板d 来自图形生成器。
- 在查询生成器中选择查询后脚本窗口下半部分的选项卡。
- 粘贴 ( CTRL+P对于 PC 或命令+P对于 MacOS)将脚本添加到“查询后脚本”选项卡中。

- 单击保存查询生成器文件节省。
- 现在,关闭查询生成器创建的数据表和图形生成器。
- 点击运行查询。
看看效果如何? 通过使用查询生成器,您可以以过滤对话框的形式免费获得一些交互性,并且能够显着提高此工作流程的效率。 如果某人拥有这两个数据文件,您可以将查询生成器文件发送给他们,它将产生相同的结果。
JMP 插件
如果您想让您的代码显示在 JMP 中,那么插件就是您的最佳选择。 插件显示在 JMP 的插件菜单中,仅在安装第一个插件后才会出现。 它们存储在 JMP 文件系统中,因此用户不必记住脚本文件的位置。 它们为已完成的项目提供了一定的润色元素。 诚然,它们一开始可能会令人生畏,但使用加载项向导它们确实很容易使用。
我将创建一个使用以下代码的非常简单的加载项:
// Set up the namespace
Names Default to here(1);
// open the log window and clear it
Open Log();
Clear Log();
// write my message
Write(“Hello World!”);
该代码将打开日志并打印一条消息。 我们将将此加载项称为“我的第一个加载项”。第一步是打开插件生成器(文件>新建>新加载项)。 之后,只需填写表格即可。 界面顶部有五个选项卡。 我们的外接程序只需要前两个。 第一个选项卡(一般信息)更多地涉及簿记和让 JMP 了解事物的位置。 第二个选项卡实际上设置 JMP GUI 中的位。
在“常规信息”下,“加载项名称”和“版本”字段非常不言自明。 您可以限制旧版本的 JMP 运行使用最低 JMP 版本的代码。 您还可以使用主机限制加载项在 MacOS 或 Windows 上运行。 我建议设置最低版本和主机以匹配编写代码的系统的配置(除非您有能力在其他配置上进行测试)。 这比试图确保您的代码在所有情况下都无懈可击要容易得多,尤其是当您刚刚开始时。 插件 ID 是安装插件时在 JMP 文件系统中创建的唯一文件夹名称。 JMP 建议使用“反向 DNS”命名约定(不知道为什么)。 它基本上意味着您创建一些看起来像网站地址的东西并将其反转。 对于加载项,我们将使用 com.myAddin.MyFirstAddin。 第一个选项卡应如下所示:
在下面菜单项选项卡,您只需单击添加命令按钮。 然后在“详细信息”下,为菜单项命名。 如果您想变得更奇特,您可以给它一个工具提示来解释当您将鼠标悬停在加载项上时它会做什么。 然后,您只需将 JSL 复制并粘贴到“操作”区域即可。 如果您使用上面的代码片段,您的菜单项选项卡应如下所示:

就是这样。 只需保存文件即可完成! 因为默认操作(在基本信息选项卡)是在保存时安装加载项,单击节省将创建一个文件发送给其他人并将其安装在您自己的 JMP 实例上。 保存加载项后,您应该会在加载项的菜单中看到如下所示的条目:
JMP 应用程序
那么,您想要制作一些看起来像是 JMP 原生部分的东西吗? 在我看来,Application Builder 是生成高质量、定制 JSL 解决方案的最灵活、最有效的方法。 它使您能够控制软件的各个方面、利用 JMP 的现有部分以及使用定制设计的例程。 这种灵活性和强大的能力确实是以学习曲线的形式付出代价的。
也就是说,你不应该让它吓倒你。 有很多资源可以帮助您开始使用 Application Builder,并且您可以用它做很多令人难以置信的事情。 只需要做一些工作即可启动并运行。 JMP 中还内置了“精简”版本的 Application Builder。 您会知道它是一个名为 Dashboard Builder 的拖放工具。 一旦您获得了一些 JSL 经验, SAS Education 的“应用程序构建器”课程了解这个非常强大的工具并不是一个坏方法。 我还打算在某个时候就这个主题制作另一个“五件事”系列,所以请留意!
JMP Live 和 JMP Public
虽然 JMP Live 和 JMP Public 更注重“使用”端,但您可以使用此方法创建和发布仪表板和报告以供其他人使用。 大多数情况下,您只是使用我在本系列中向您展示的 JSL 部分。 丹·瓦伦特做了一个关于编写 JMP Live 脚本的精彩博客文章(和 JMP Public)发布流程,所以我不会详细说明这一点。
家庭作业
好吧,你成功了! 最后的作业真的很简单。 打包您的代码,将其交给同事,让他们尝试一下,看看是否有效。 如果没有,请查看错误消息并找出原因。 如果是,那么您已经制作了第一个 JMP 插件! 干得好。
从这往哪儿走
就像我之前说的,这个系列并不是为了让你把头发吹到后面并用我的脚本能力让你眼花缭乱。 它的目的是让你的鼻子指向正确的方向,给你一张好的地图,拍拍你的背,并在你遇到困难时提供一些帮助。 这是一个起点;你前面的路比你后面的路还多。
因此,从这里开始,诀窍就是不断尝试和试验。 不断将人们的加载项和应用程序拆开,看看它们是如何工作的。 不断尝试新事物并寻找机会,通过少量脚本使您的工作流程更加高效。 你做得越多,你就会做得越好,你正在考虑的更大的项目也会显得更平易近人。 坚持下去。