給我的啟發?
建立時間
分類
狀態
專案
URL
https://www.jianshu.com/p/a22084e87b09
備註
好多東西要一直點來點去好麻煩
不然我 Alfred 大概只用了兩成功力
目前需求
1. 聲音輸出切換
Tags

初始 AppleScript
首先了解一下 Apple 公司创造 AppleScript 的初衷,它是用来编写运行于mac的脚本的。重要的是它是 mac 上操作应用程序为数不多的途径之一。非常方便实现一些平常工作中重复工作的脚本化,提升工作效率,避免重复劳动。
AppleScript 有啥用?
- 可以用来书写脚本直接生成脚本文件(.scpt)、App 文件;
- 可以用来编写 Cocoa App(也可以创建 Automation Action);
- 可以在 Alfred.app 和 Autormator.app 中使用;
- 可以非常方便的在 Shell 和 OC 中调用执行;
AppleScript 编辑器
MacOS 上有自带的脚本编辑器,目前支持 AppleScript 和 JavaScript。
其中有模版工程、模版代码、应用词典等功能,极大方便了 AppleScript/JavaScript 脚本的编写。

1.ScriptEditor.png
2.ScriptEditor.png
基础语法
基本数据类型
AppleScript有4种最基本的数据类型:number、string、list和record,分别对应编程概念中的数值、字符串、数组和字典。
number 类型
string 类型
list 类型
record 类型
条件/循环
注释
函数
换行
使用AppleScript中的对话框
使用弹出框有一些要注意的地方: 1.它可以有多个按钮的; 2.它是有返回值的,返回值是你最终操作的字符串; 3.它是可以增加输入框的,而且比你想的简单多了;
- result:记录最近一个命令执行的结果,如果命令没有结果,那么将会得到错误
- it:指代最近的一个 tell 对象
- me:这指代段脚本。用法举例 path to me 返回本脚本所在绝对路径
- tab:用于string,一个制表位
- return:用于string,一个换行
预定义变量
就是一些特殊的关键字,类似于其他语言中的 self、return等,有固定的含义; 千万不要用它来自定义变量。
- case 大小写
- diacriticals 字母变调符号(如e和é)
- hyphens 连字符(-)
- numeric strings 数字化字符串(默认是忽略的),用于比较版本号时启用它。
- punctuation 标点符号(,.?!等等,包括中文标点)
字符串比较:Considering/Ignoring语句
在 AppleScript 的字符串比较方式中,你可以设定比较的方式:上面 considering 和 ignoring 含义都是清晰的,一个用于加上xx特征,一个用于忽略某个特征;一个特征就是一个attribute。 atrribute应该为列表中的任意一个:
white space 空格
- 直接参数 紧跟list类型参数,包含所有备选项
- title 紧跟text,指定对话框的标题
- prompt 紧跟text,指定提示信息
- default items 紧跟list,指定默认选择的项目
- empty selection allowed 后紧跟true表示允许不选
- multiple selections allowed 后紧跟true表示允许多选
列表选择对话框
选择框有以下参数:
文件选择对话框
文件读取和写入
文件读取用read,允许直接读取; 但是写入文件之前必须先打开文件,打开文件是open for access FileName; 写入文件用write...to语句; 最后记得关闭文件close access filePoint
其它语法
上面的例子只是苹果官方文档的精简入门版,还有语言的面相对象特征,此处不再展开。
AppleScript 中还有比较丰富的其它 Command 集合,此处也不再一一列举。
案例列举
使用 mac 的邮件系统
让浏览器打开网页
让你的电脑说话
调用 mac 的通知中心
crontab + AppleScript + 通知中心 可以做很多定制的提醒工具
清理废纸篓
模拟键盘按键消息
其中 using command 可以使用组合,例如:key code 53 using {command down, option down} 其中的 key code 对照表如下
切换程序前台、设置焦点窗口
粘贴板操作
上面的例子都是一些比较简单的例子,还有很多有趣的例子可以自己根据需要,查询词典中涉及到的 App 的 AppleScript 接口自己做实现。关于如何使用 App 的 AppleScript 的词典,建议阅读Mac 的自动化 AppleScript 终极入门手册
何时使用?
- 一些跨应用的重复操作步骤使用 AppleScript/JavaScript 实现关键步骤
- 结合 Alread.app、Automator.app、crontab 等实现一些场景的触发调用
- 本地的一些工具脚本可以直接调用 AppleScript 做一些简单的输入、弹框、通知交互
- 用 AppleScript 写一个 CocoaApp 或者 Automator Action(但是可以用 Objective-C 我们就没必要使用相对不熟悉的 AppleScript)
- OC 的命令行工程可以借助 NSAppleScript 操作其它应用
- CocoaApp 工程可以通过 XPCService+ScriptingBridge+AppleScript(OC版本接口调用)启动其它应用(样例工程)
生成 Cocoa App 的 OC 接口文件
需要通过 OC 调用系统中某个 App 的接口,可以参照如下命令行导出其 .h 文件