关于AppleScript

说到AppleScript,可能涉及到三个含义:

1.AppleScript语言:就是苹果脚本的语言,用来编写运行于Mac系统的脚本。

2.AppleScript脚本:就是使用AppleScript语言编写的一系列指令。以后简称脚本。

3.AppleScript脚本解释程序:用于解释和执行AppleScript脚本中指令的程序。是Mac系统的原生程序和重要组成部分。下面简称AppleScript脚本程序。

AppleScript Editor

要编写AppleScript脚本,当然就需要编辑工具了,首先打开AppleScript编辑器:

貌似可以使用Xcode编写Cocoa - AppleScript Application,这个暂时还没尝试。我们先从AppleScript编辑器开始。

界面很简单,主要分为工具栏、编辑区和运行结果区。编辑区用来编写脚本,工具栏用来编译和运行脚本等,运行结果区呈现运行结果,这个不用多说了吧。

say和beep

首先来玩两件很好玩的事:让Mac发音和说话。

在编辑区输入以下脚本:

say "How are you?" using "Zarvox"
say "Fine, thank you." using "Victoria"
say "Ha Ha"
beep

点击工具栏的编译(或Command + K),可以看到脚本变了颜色,具体颜色的含义,可以在偏好设置中查看并设置:

接着点击运行(Command + R运行,Command + .停止运行)。可以看到运行结果区的回复栏中的显示如下:

更加好玩的是Mac系统在自然自语了,还有最后的一声咚。

下面来解释下脚本和运行结果的意思:

say "说话的内容" using "指定人的嗓音"

这句脚本的意思就是让Mac系统按照指定人的嗓音说出我们指定的说话内容。当然using "..."是可以缺省的。

beep 发声次数

这句脚本的意思是让Mac系统发出咚的声音,发声次数决定了咚出现的次数,例如beep 2那么Mac会咚两次。发声次数缺省为1。

在运行时回复输出的意思是:

tell表明将以上say和beep的任务交付给current application去完成,也就是AppleScript脚本程序。

tell模块

同样道理,我们可以用tell模块将特定的任务交付给Mac中特定的程序去执行。

tell模块的语法为:

tell application "Application Name"
    do your job here
end tell

例如我们想让Finder程序清空垃圾篓然后打开磁盘,可以这样写:

tell application "Finder"empty the trashbeepopen the startup disk
end tell

注意"Finder"的双引号必不可少。

回复输出为:

tell application "Finder"empty trash--> current application--> error number 0beep--> error number -10004
end tell
tell current applicationbeep
end tell
tell application "Finder"open startup disk
end tell

可以看到empty the trash任务是交给Finder程序去完成的,而beep任务是交给current application程序去完成,接下来的open the startup disk任务还是交回给Finder程序完成。

在tell模块中的任意位置可以插入beep,say等由current application程序解释执行的语句。

注意,交付给某个程序执行的语句必须在tell模块之内。

错误写法:

tell application "Finder"empty the trashbeep
end tell
open the startup disk

编译时可以看到没有报错,运行起来看看:

运行结果区的回复输出如下:

tell application "Finder"empty trash--> current application--> error number 0beep--> error number -10004
end tell
tell current applicationbeep
end tell
tell application "AppleScript Editor"open startup disk--> missing value
end tell
结果:
missing value

boot应该由Finder程序去打开,但是由于超出了tell applicaiton "Finder"模块,所以给语句将交由AppleScript Editor程序解释执行,很可惜,AppleScript编辑器无法打开boot,报错。

AppleScript Editor的小技巧

1.使用esc键呼出代码补全菜单

在写te时按下esc键,此时出现代码补全菜单:

2.在编辑区点击右键(或按住control键再点击左键)呼出上下文菜单

在上下文菜单中我们可以将AppleScript语句快速地插入到编辑区中,例如:

也可以将一段语句插入到Tell语句块中,方法是先选中这段语句,再插入到Tell Blocks中:

3.编辑程序的补全和修正功能

你可以输入:

tell app "Finder"
end

在编译后将被替换为:

tell application "Finder"
end tell

在编写AppleScript脚本时,是不区分大小写的,当然在编译过后也会被替换成正确的大小写形式。

这些小技巧都非常有利于快速编写脚本。

保存脚本

写好了程序,当然是保存了。可以在菜单中点击文件 —— 存储(或按快捷键Command + S)。

在保存时有多种文件格式:

保存为脚本格式

如果保存为脚本,那么下次打开文件时还是用AppleScript编辑程序来打开。文件后缀为.scpt,桌面图标如下:

保存为应用程序格式

如果保存为应用程序,那么最好保留个脚本的copy,否则将不能用AppleScript Editor来打开编辑。

保存时的对话框如下:

如果选中“显示启动屏幕”,那么以后运行程序前会弹出一个对话框提示:

如果选中“运行处理程序后保持打开”选项,那么在程序运行完毕后会停留在Dock中。

保存的图标和脚本格式不同。文件后缀为.app,桌面图标如下(少了个纸张背景):

后记:

事实上,在保存为应用程序后,还是可以修改其脚本内容的。方法如下:

1.右击应用程序,点击显示包内容。

2.打开Contents —— Resources —— Scripts —— main.scpt(该文件可以用AppleScriptEditor打开并编辑其代码),如下:

3.修改其代码可以修改应用程序的功能。

第一篇学习笔记先到这里,后面会继续更新。

更多详细内容请参考《AppleScript for Absolute Starters》一书(中文名为《苹果脚本跟我学》)。

AppleScript学习笔记(一)初识AppleScript相关推荐

  1. Hadoop学习笔记—4.初识MapReduce

    一.神马是高大上的MapReduce MapReduce是Google的一项重要技术,它首先是一个 编程模型 ,用以进行大数据量的计算.对于大 数据量的计算,通常采用的处理手法就是并行计算.但对许多开 ...

  2. ASM学习笔记1 - 初识ClassVistor ——以ClassReader的应用为例

    ASM学习笔记1 - 初识ClassVistor --以ClassReader的应用为例 1 ASM简介 什么是ASM? Java操纵类字节码的工具.是一个jar包. 如何使用? ASM提供两类API ...

  3. C语言学习笔记-P1 初识C语言(2)

    C语言学习笔记-P1 初识C语言(2) C语言学习笔记-P1 初识C语言(2) 一.常量 1.字面常量 2.const修饰的常变量 3.#define定义的标识符常量 3.枚举常量 二.字符串+转义字 ...

  4. C语言学习笔记-P1 初识C语言(1)

    C语言学习笔记-P1 初识C语言(1) P1 初识C语言(1) 一.什么是C语言 1.定义 2.发展 二.第一个C语言程序 Hello World 三.数据类型 四.变量,常量 未完待续!!! P1 ...

  5. xilinx srio ip学习笔记之初识srio

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 xilinx srio ip学习笔记之初识srio 前言 IP 设置 总结 前言 因为工作原因,需要对rapidio 的协议进行了解, ...

  6. 吴恩达《机器学习》学习笔记一——初识机器学习

    吴恩达<机器学习>学习笔记一 一. 什么是机器学习? 二.监督学习 三.无监督学习 初识机器学习 这是个人学习吴恩达<机器学习>课程的一些笔记,供自己和大家学习提升.第一篇内容 ...

  7. 【人工智能学习笔记】初识人工智能

    文章目录 前言 一.人工智能的定义 二.人工智能的应用 1.计算机视觉技术 2.自然语言处理 3.其他具体应用举例 三.AI算法工程师主要工作流程 四.人工智能的基本概念 机器学习 有监督学习 VS ...

  8. C语言学习笔记之初识

    初识C语言 一.计算机和编程语言 1.初学者在学习c的时候,不仅会为语言本身的复杂而困惑,而且对其编程工具的选择同样困扰. 因为c语言出现的时间很早,而且在这么多年中也没有一个主要的组织对其编程工具进 ...

  9. C语言鹏哥学习笔记(初识)

    目录 初识 创建 文件 第一个程序 ----printf % ----sizeof() 单位 数据类型 浮点型float 变量.常量 变量的定义 局部变量.全局变量 ----scanf()输入函数 - ...

最新文章

  1. jquery实现点击页面其他地方隐藏指定元素
  2. 综述系列 | 多标签学习的新趋势
  3. 人工脑连接体:类脑人工智能的奇点时刻来临
  4. windows7安dns服务器_在Windows 7 上安装DNS服务器bind9方法详解
  5. Scala 位运算及代码块
  6. OpenCASCADE:可视化之基础概念
  7. Linux 命令之 wget -- 下载文件工具
  8. 使用OSHI 检索系统信息,超牛逼、超级秀、超级巴适!!快来看看吧!不然你会后悔的!!666
  9. Codeforces Round #326 (Div. 2) B. Pasha and Phone C. Duff and Weight Lifting
  10. 【Java】Java 对象头 真的是 32位 吗?
  11. SAP License:SAP All-in-One产品特点
  12. JSONP和CORS两种跨域方式的介绍和方案实例
  13. Activity/Fragment最强生命周期总结
  14. javascript英语单词音节拆分_英语单词音节的划分法
  15. 利用adb卸载手机预装软件(系统软件)
  16. 手机投影到deepin
  17. vue 封装图片预览组件
  18. 中国计算机学会推荐中文科技期刊目录(2019年)
  19. Autofac实现依赖注入
  20. CSS translation

热门文章

  1. 当前电子鼻系统数据处理中常用的模式识别技术
  2. Silverlight Tools
  3. 算法学习笔记五:最短路径
  4. 使用 i18n 时踩的坑
  5. GB/T28181协议视频平台EasyGBS视频快照优化,减少服务器性能消耗
  6. [车联网安全自学篇] ATTACK安全之Frida反调试检测
  7. U盘格式为RAW格式,空间为0字节的解决办法
  8. 全球首个支持华为鸿蒙 HarmonyOS 的游戏引擎来了:Cocos Creator 3.2 月底发布
  9. Unity Unet(四)多人在线游戏框架
  10. Object.assign 是浅拷贝还是深拷贝?