Lazy loaded image
下半年要找時間把 AppleScript 掌握
00 分钟
2021-6-25
給我的啟發?
建立時間
分類
狀態
專案
URL
https://www.jianshu.com/p/a22084e87b09
備註
好多東西要一直點來點去好麻煩 不然我 Alfred 大概只用了兩成功力 目前需求 1. 聲音輸出切換
Tags
notion image

初始 AppleScript

首先了解一下 Apple 公司创造 AppleScript 的初衷,它是用来编写运行于mac的脚本的。重要的是它是 mac 上操作应用程序为数不多的途径之一。非常方便实现一些平常工作中重复工作的脚本化,提升工作效率,避免重复劳动。

AppleScript 有啥用?

  • 可以用来书写脚本直接生成脚本文件(.scpt)、App 文件;
  • 可以用来编写 Cocoa App(也可以创建 Automation Action);
  • 可以在 Alfred.app 和 Autormator.app 中使用;
  • 可以非常方便的在 Shell 和 OC 中调用执行;

AppleScript 编辑器

MacOS 上有自带的脚本编辑器,目前支持 AppleScript 和 JavaScript。 其中有模版工程、模版代码、应用词典等功能,极大方便了 AppleScript/JavaScript 脚本的编写。
notion image
1.ScriptEditor.png
2.ScriptEditor.png

基础语法

    • 基本数据类型
      AppleScript有4种最基本的数据类型:number、string、list和record,分别对应编程概念中的数值、字符串、数组和字典。
      • number 类型
      • string 类型
      • list 类型
      • record 类型
    • 条件/循环
    • 注释
    • 函数
    • 换行
    • 使用AppleScript中的对话框
      使用弹出框有一些要注意的地方: 1.它可以有多个按钮的; 2.它是有返回值的,返回值是你最终操作的字符串; 3.它是可以增加输入框的,而且比你想的简单多了;
    • 预定义变量
      就是一些特殊的关键字,类似于其他语言中的 self、return等,有固定的含义; 千万不要用它来自定义变量。
    • result:记录最近一个命令执行的结果,如果命令没有结果,那么将会得到错误
    • it:指代最近的一个 tell 对象
    • me:这指代段脚本。用法举例 path to me 返回本脚本所在绝对路径
    • tab:用于string,一个制表位
    • return:用于string,一个换行
    • 字符串比较:Considering/Ignoring语句
      在 AppleScript 的字符串比较方式中,你可以设定比较的方式:上面 considering 和 ignoring 含义都是清晰的,一个用于加上xx特征,一个用于忽略某个特征;一个特征就是一个attribute。 atrribute应该为列表中的任意一个:
    • case 大小写
    • diacriticals 字母变调符号(如e和é)
    • hyphens 连字符(-)
    • numeric strings 数字化字符串(默认是忽略的),用于比较版本号时启用它。
    • punctuation 标点符号(,.?!等等,包括中文标点)
      • 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 文件

更多资料

被以下专题收入,发现更多相似内容

上一篇
读书盘点|2022年世界读书日
下一篇
第三周刊_No.33|从白塔到虎跑,记一次随意的徒步