苹果优山美地 JavaScript 自动化实例

461 查看

苹果刚发布优山美地的新操作系统的时候,每个人都一直讨论iOS 8、iPhone 6、iPhone 6+ 和手表,但还有一个重要的特性是OS X的JavaScript自动化作业。当它可能被所有的记者忽略时,没有被我们忘记。 Burke Holland写了一篇非常精彩的论述JavaScript目前是怎么作为第一公民的博文。除了苹果公司网站上的初级的文档,几乎没有任何关于此内容的资料,既然如此,那这篇文章将会为你展示怎么使用Javascript来实现OS X 自动化作业。


注意:我正使用的API还处于开发中。下面展示的任何内容可能会发生变化。


开始

在你安装优山美地后,进入“应用程序(Applications)” -> “实用工具(Utilities)”,下翻直至你看见如图1所示的脚本编辑器(Script Editor)


图1:脚本编辑器路径以前你编写自动作业的唯一选择是 AppleScript,现在你发现 Javascript 被添加进去了。


图2:脚本编辑器选择 JavaScript,我们一起创建些东西。

 

实例:自动发送邮件

如果你曾经自动化过作业,你肯定和邮件应用(Mail app)打过交道。 下面是一个AppleScript片段。

我用同样的片段,加一点点复杂的正文,但全部是由 JavaScript写成的。

这里有一些事情需要注意:

  • 分号是可选的,因为分号自动插入
  • 我实例化了一个全局变量;而不是使用下面的代码: var Mail = Application(Mail);
  • 我可以使用单引号或者双引号包给出硬编码的值

如果运行这个脚本,将出现下面的邮件对话框,如图3所示

图3:邮件信息和已填的域

 

但是我们如何知道哪些属性是可用的?

好问题,如果你处在脚本编辑器中,点击“窗口(Windows)”->“资源库(Library)”,看到一个你可以交互的应用列表。

如果我们选择邮件应用,它会默认使用AppleScript。 简单换成 JavaScript,你可以看到图4中我们刚使用的OutgoingMessagen类上可用的属性。

图4:文档中检查OutgoingMessagen类

 

很酷,但是其他的应用呢?

备忘录是我们可以交互的另一个应用程序,但是苹果设置了安全提示来阻止恶意脚本。 我们可以简单地用几行 JavaScript 和备忘录进行交互。

若你运行这个应用,你会遇到下面如图5所示的对话框。

图5:安装和策略对话框点击打开“系统偏好设置”后,你可以授予这段脚本权限,笔记本程序就会自动打开。

现在,我确信你想知道不在脚本编辑器中如何运行这些脚本。 你可以点击文件->导出,改变格式为应用,如图6所示。

 

其他自动化作业

你可能不想和一个应用程序交互,而是希望你的应用朗读东西给用户。你可以用几行 JavaScript实现这。

这将会使用你系统已安装的默认语音和语言来朗读出这些文字“Hello from Telerik Headquarters”。

你也可以用它来获取输入,例如名字:

这会显示一个提示框(图7),你可以在Results 窗口中看见他们实际输入的内容(图8)。 这个例子中,我输入我的名字,“Michael”。

 

也可以通过终端使用JavaScritp自动化作业

已经足够惊喜了,JavaScript自动化对来那些使用 bash来自动化作业的人也是非常有用的。 这里是一个使用 osacriopt 交互模式打开 Safari,新建一个 tab 页并导航到 http://www.telerik.com 的命令行。以下是我们前面说到的纯 JavaScript 脚本。

图9中的截图显示了它在终端中的呈现。

Safari 会被打开并新建一个tab 页,如下图所示

回顾终端,注意当我调用window.name()时,它返回“ Top sites”。这对了解用户处在哪个页面是非常有用的。

 

利用Objective-C桥接器

如果你希望使用不在默认Foundation库中的库,它是非常有用的。 你可以实现下面的代码来利用类似 Cocoa的库。

这段代码导入了Cocoa库,用文本实例化一个 NSString并传入文件位置和设置第二参数为True来调用writeToFileAtomically方法。这确保在磁盘上完全写完新文件完之前,旧文件不会被修改或者删除。

我们可以进到我们的文件夹来打开文本文件,并看到如图10所示的预期结果。

图10:Obj-C桥接器写文件到磁盘上

 

JavaScript开发人员的更多机会

我们感受到越来越多关于JavaScript 作为优山美地中一等公民的影响。 对于NativeScript来说是前沿且核心的。NativeScript使得开发人员可以用JavaScript轻易地利用可用的或自定义设备的API,如摄像头,加速器,地理位置等,来构建原生应用。有许多关于NativeScript 的讨论,如果你想了解更多,我将给出FAQ链接。


NativeScript允许我们用JavaScript为iOS,Android和通用的Windows创建原生应用。


前瞻

对于目前我所看到关于优山美地自动化的JavaScript,我感到非常兴奋。在写这篇文章前,我从未使用过 AppleScript,但我写过JavaScript。 我能用我熟悉的语法成功地写自动化任务。 全世界的JavaScript 开发者应该庆贺,即使他们不打算编写自动化任务,因为专长变得越来越重要。