AppleScript终极入门指南(下)

续上:AppleScript终极入门指南(上)

制胜法宝:AppleScript字典

尽管AppleScript本身有大量不同的可用于任何OS X程序的命令,但是任何开发者都需要保证它的应用程序对AppleScript具有很好的支持。也就是说,开发者必须著有简单的说明,告诉大家如何通过AppleScript与他的程序进行通信。这些说明被称为字典(Dictionaries)。要想查看字典,打开Script Editor的File > Open Dictionary。把应用程序列表向下拉,点Mail,然后OK,便能看到下面这个窗口:

Mail字典

Mail字典

最左边那列显示出可用的命令组(Suites)。当你点击其中一个,会在下面看到它包含的所有内容。你可以点击第二列,看某一具体的方法,然后再点第三列,依此类推。每组都包含命令(蓝色圆C)和类(紫色方C),以及类属性(P)和元素(E)。为了弄清楚它们到底是怎么一回事,我们先用这个字典创建一个脚本。

创建脚本及其算法

首先,我们需要一个算法,它会准确的告诉脚本将要做什么。我们想创建一个脚本用于写电子邮件然乎发出去。我们想用变量来保存邮件内容以及收件人,这样便于修改。在我们写算法的时候,大脑要清楚AppleScript运作的方式。下面是我想的步骤:

  1. 创建变量用于保存收件人、收件人电子邮箱地址、邮件主题以及邮件正文
  2. 创建变量并通过不同的属性保存我们新的邮件
  3. 创建新的邮件
  4. 发送新的邮件

创建简单的变量

我们已经知道如何保存文本的变量,所以第1步我们已经搞定了。下面是具体的代码:

--Variables(变量)
set recipientName to "John Doe"
set recipientAddress to "nobody@nowhere.com"
set theSubject to "AppleScript Automated Email"
set theContent to "This email was created and sent using AppleScript!"

正如你所见的,我们直接把姓名、邮件地址、主题以及内容存放在了变量中。你可以随意修改它们的内容。请一定要把你自己的邮箱地址放在recipientAddress变量中,这样你一旦收到邮件就表示这个脚本是正确的。

用Mail字典创建邮件变量

我们还不知道如何创建一个新的邮件,这部分需要参考AppleScript字典。如果你点击“Standard Suite”(标准组件),你会看到其中的常见命令。为了知道如何创建(create)新的邮件,我们在选项(options)里寻找相关的命令,但是却找不到“create”(创建)命令,但是却在里面发现了“make”命令。这看起来不错,我们现在确实要让AppleScript做(make)些什么。

下面点击“Mail”组件,我们已经知道了要用的命令(make),所以向下滚(scroll down),略过那些命令(动词),看那些类(名词)。首先你会看到“outgoing message”,太棒了,这正是我们想要的。现在点“outgoing message”,可以看到它可用的属性(如下所示)。

我们需要导入接受者姓名、接受者电子邮件地址、主题以及内容这些变量。但是在属性列表中,却没有发现任何关于接收者的,不过有主题和内容属性。我们现在知道了引用这些属性的正确语法。可以看到,字典里告诉了你定义属性的格式,拿主题来说,首先是键入“subject:”,之后跟随主题的文本。

主题内容

主题内容

在这个组件中,你可以看到“send”(发送)命令,我们现在还需要知道收件人姓名以及电子邮件地址的正确语法。但是,它却不在这个组件中,点“Message”组件,在列表中间的位置,我们找到了recipient。点recipient类,看到了其中的属性,我们可以用普通的文本(只需键入“name”和“address”)引用recipient的属性。

你可以利用搜索功能迅速找到想要的属性(properties)、类(classes)、元素(elements)以及命令(commands)。

好了,现在就用刚刚学到的语法创建我们的邮件吧,代码如下所示:

--Variables(变量)
set recipientName to "John Doe"
set recipientAddress to "nobody@nowhere.com"
set theSubject to "AppleScript Automated Email"
set theContent to "This email was created and sent using AppleScript!"
--Mail Tell Block(Mail的Tell代码块)
tell application "Mail"
--Create the message(创建邮件)
set theMessage to make new outgoing message with properties {subject:theSubject, content:theContent, visible:true}
end tell

可以看到,我用tell代码块包含了所有给Mail程序的命令。然后我让一个变量(theMessage)去用上面的属性创建(make)新的邮件(outgoing message)。要注意的是,所有属性都包含在大括号({})中。

最后一步:设置接收者并发送邮件

我们创建了自己的邮件变量,现在需要调用这个变量,并用theMessage的属性创建一个新的邮件。我们还需要设置接受者并把邮件发送出去。要想实现它,我们需要给变量使用一个tell代码块。下面是最终的脚本:

--Variables(变量)
set recipientName to "John Doe"
set recipientAddress to "nobody@nowhere.com"
set theSubject to "AppleScript Automated Email"
set theContent to "This email was created and sent using AppleScript!"
--Mail Tell Block(Mail的Tell代码块)
tell application "Mail"
    --Create the message(创建邮件)
    set theMessage to make new outgoing message with properties {subject:theSubject, content:theContent, visible:true}
    --Set a recipient(设置接收者)
    tell theMessage
        make new to recipient with properties {name:recipientName, address:recipientAddress}
        --Send the Message(发送邮件)
        send
    end tell
end tell

首先,我们创建了一个新的theMessage(它结成了我们赋予它的所有属性),然后为其赋予接收者的属性。这也就告诉了Mail我们需要用通过下面的几个属性增加接收者。这里用到的语法就是上面刚刚学的。

最后,我们调用“send”命令,把邮件发送了出去。可以看到,最后要关闭两个tell代码块。当你编译完代码,并修正了报错以后,点击“Run”(运行)。Mail应当会自动创建并发送这封邮件。欧了(Tadaah)!检查一下你的发件箱,看看是否一切正常。

Mail邮件

Mail邮件

祝贺,你已经完成了第一个AppleScript脚本。你可以把它保存为一个简单的脚本(Script)回头可以再编辑,或者保存为一个程序(application),当你打开它的时候,就会自动运行。

总结:深入学习

我希望本入门指南能够让你考虑一下那些能够自动化的过程与任务。这里为你展示的AppleScript字典中的语法已够你应付日常工作。但是,如果你真想用AppleScript做很多有用的事情,你还得深入学习一下。Apple在其网站上提供了很多AppleScript的内容,你可以从那里开始

另外一个我认为很有用的网站是T&B,它为你提供了一些深入的技术文章与教程(略显老久,但很有料,并且是免费的)。

This entry was posted on Monday, August 10th, 2009 at 1:44 am and is filed under development, mac, novice, translation, tutorial. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a Reply