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

Mail字典
最左边那列显示出可用的命令组(Suites)。当你点击其中一个,会在下面看到它包含的所有内容。你可以点击第二列,看某一具体的方法,然后再点第三列,依此类推。每组都包含命令(蓝色圆C)和类(紫色方C),以及类属性(P)和元素(E)。为了弄清楚它们到底是怎么一回事,我们先用这个字典创建一个脚本。
创建脚本及其算法
首先,我们需要一个算法,它会准确的告诉脚本将要做什么。我们想创建一个脚本用于写电子邮件然乎发出去。我们想用变量来保存邮件内容以及收件人,这样便于修改。在我们写算法的时候,大脑要清楚AppleScript运作的方式。下面是我想的步骤:
- 创建变量用于保存收件人、收件人电子邮箱地址、邮件主题以及邮件正文
- 创建变量并通过不同的属性保存我们新的邮件
- 创建新的邮件
- 发送新的邮件
创建简单的变量
我们已经知道如何保存文本的变量,所以第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邮件
祝贺,你已经完成了第一个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.

