初识AppleScript

字符集

从OS X v10.5(AppleScript 2.0)开始, AppleScript的字符集是Unicode。AppleScript在全球范围内正确保留所有字符,脚本中的注释和文本常量可能包含任何Unicode字符
AppleScript语法使用多个非ASCII字符,可以使用特殊键组合键入。有关AppleScript特别处理的字符的信息,请参阅相关章节。IdentifiersCommentsTextThe Continuation CharacterRaw Codes

身份标识

AppleScript标识符是一系列字符,用于标识类名,变量或其他语言元素,例如属性和处理程序的标签。
标识符必须以字母开头,并且可以包含以下任何字符:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_

身份标不是大小写敏感的,如myvariableMyVariable这两个变量的命名在AppleScript中的都是指同一个变量

AppleScript会记住并强制执行标识符所带来的第一个大小写。因此,如果它首次遇到myAccount标识符,它将在稍后编译期间将MyAccount和myaccount等版本更改为myAccount。

以下是有效标识符的示例:areaOfCircle,Agent007,axis_of_rotation。

以下是无效的标识符:C-,back&forth,999,why^not。

AppleScript为前面的规则提供了一个漏洞:第一个和最后一个字符是竖线(|)的标识符可以包含任何字符。前导和尾随垂直条不被视为标识符的一部分。

Important: This use of vertical bars can make scripts difficult to read, and is not recommended.
这种垂直条的使用会使脚本难以阅读,因此不建议使用。

下面的命令规则是合法的:|back&forth|, |Right*Now!|
标识符可以包含以反斜杠(\)字符开头的其他竖条,如标识符|This|Or|That|

关键词

关键字是AppleScript语言中的保留字。关键字由小写字母字符组成:abcdefghijklmnopqrstuvwxyz。在少数情况下,例如除了aside from之外,它们成对出现

Important: You should not attempt to reuse keywords in your scripts for variable names or other purposes. Developers should not re-define keywords in the terminology for their scriptable applications.
和大多数编程语言一样,保留关键字不允许被定义成变量,也不允许被重定义。

下图是AppleScript的保留关键字


01A88A0ABDF90FA9394FF432786A1844.jpg

注释

1、使用(* )注释 例如( hello world *)
2、AppleScript 2.0后可以使用 #来表示注释 例如 #!/usr/bin/osascript
3、使用--标识注释内容 列如--hello world

延续性

在AppleScript 中可以使用¬(打出该字符的快捷键option + L)来给你个完整的 appleScript语句换行而不会破坏语义的完整性
列如

display dialog "This is just a test." buttons {"Great", "OK"} default button "OK" giving up after 3

//可以写成
display dialog "This is just a test." buttons {"Great", "OK"} ¬ 
default button "OK" giving up after 3

基本数据类型

Boolean
与其他一些变成语言一样,Boolean 类型的变量的值只能是 true or false
Constant
AppleScript中的全局常量描述了可在整个脚本中使用的常量。
List
数组类型,写法{1,6,"hello",4.5}。

  • 一个数组可以包含另一个数组。(可以创建多维数组)
  • 空数组 {}

Number
数字文字是一系列数字,可能包括其他字符,例如一元减号,句号(实数)或“E +”(指数表示法)。以下是一些数字文字:

-94596
3.1415
9.9999999999E+10

Record
Record是标记属性的无序集合。Record在脚本中显示为大括号中包含的一系列属性定义,并以逗号分隔。每个属性定义都包含唯一标签,冒号和属性值。例如,以下是具有两个属性的Record

{product:"pen", price:2.34}
  • 各大编程语言中的 Dictionary

Text
字符串

Operators

(+ - * /)等操作符。AppleScript 中完整操作符介绍

Variables(变量)

set myName to "John"
copy 33 to myAge

将值赋给变量的语句称为赋值语句。

当AppleScript遇到变量时,它会通过获取其值来评估变量。变量包含在脚本中,当您关闭包含它的脚本时,它的值通常会丢失。

AppleScript变量可以保存任何类的值。例如,您可以将整数值17分配给变量,然后将布尔值true分配给同一个变量

Expressions(表达式)

表达式是具有值的任何词汇元素系列。表达式在脚本中用于表示或派生值。最简单的表达式(称为文字表达式)是脚本中值的表示。更复杂的表达式通常包含文字,变量,运算符和对象说明符。

运行脚本时,AppleScript会将其表达式转换为值。此过程称为评估。例如,当计算以下简单表达式时,结果为21:

3 * 7 --result: 21

对象说明符指定查找另一个对象所需的部分或全部信息。例如,以下对象说明符指定命名文档:

document named "FavoritesList"

更多关于表达式的内容

Statements(语句)

语句是一系列遵循特定AppleScript语法的词法元素。语句可以包括关键字,变量,运算符,常量,表达式等。

每个脚本都包含语句。当AppleScript执行脚本时,它会按顺序读取语句并执行其指令。

控制语句是确定何时以及如何执行其他语句的语句。 AppleScript定义了标准控制语句,如if,repeat和while语句,这些语句在“控制语句参考”中有详细描述。

一个简单的陈述是可以写在一行上的陈述:

set averageTemp to 63 as degrees Fahrenheit

Note: You can use a continuation character (¬) to extend a simple statement onto a second line.

复合语句写在多行上,可以包含其他语句,并在其最后一行中包含单词end(跟随,可选地,由语句的第一个单词)。例如,以下是复合tell语句:

tell application "Finder"
    set savedName to name of front window
    close window savedName
end tell
  • 符合语句可以包含其他的复合语句

Commands(命令)

命令是AppleScript语句中用于请求操作的单词或一系列单词。每个命令都指向一个目标,该目标是响应该命令的对象。目标通常是应用程序对象或macOS中的对象,但它也可以是脚本对象或当前脚本中的值。

以下语句使用AppleScript的get命令获取窗口的名称;目标是Finder应用程序的前窗口:

get name of front window of application "Finder"

了解更多的命令语句可以查阅

Results(结果)

语句的结果是执行语句时生成的值(如果有)。例如,执行语句3 + 4会产生值7.将myText设置为“keyboard”的语句的结果是文本对象“keyboard”。结果可以是任何类。 AppleScript将结果存储在AppleScript Constant中描述的全局可用属性结果中

Raw Codes(原始代码)

使用脚本编辑器打开,编译,编辑或运行脚本时,您可能偶尔会看到用双尖括号或V形符号括起来的术语(«»),在脚本窗口或另一个窗口中。这些术语称为原始格式或原始代码,因为它们代表基础Apple事件代码 AppleScript用来表示脚本术语。

为了与亚洲国家编码兼容,“”和“”“允许作为”«“和”»“的同义词(美国键盘上分别为Option- \和Option-Shift- \),因为后者可以在某些亚洲编码中不存在。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容