工作中常常遇到这样的场景:一边开着 IM 应用,一边打开多个标签页查资料,忽然需要把某个网页链接发送给他人,此时需要在浏览器和聊天软件之间频繁跳转,还得在一堆标签页里翻找,非常低效。
三年前 John Gruber 就为这个痛点写了一份 AppleScript,不过它只能识别 http 链接,已经很难适应今天的网络环境了;今年 Dr. Drang 又为此做了一个 Keyboard Maestro 动作,不用跳转到浏览器,在聊天软件输入界面里按下快捷键,就可以直接插入当前任意标签页的链接: 拷贝 Safari 标签链接
其实这个动作的核心是一段 AppleScript 脚本,不一定要有 Keyboard Maestro,系统自带的 Automator 也可以用。我们先来认识一下 Drang 的脚本,它适用于 Safari,不要看有几十行代码,拆开来并不复杂。
从上至下可以按颜色划分三个部分,构成了简单而有序的一套流程:获取标签页链接和标题,弹出列表让你选择,在当前 App 里粘贴。下面我用中文翻译一下,也许你会忍俊不禁。
粉色-获取
告诉 Safari
造一个标题列表
再造一个链接列表
获取最上面那页的标题(一会儿默认选项就是它)
把最上面的窗口拿过来
把这窗口里的标签页挨个拿出来
每拿一个出来
把它的标题丢到标题列表最后面
把它的链接丢到链接列表最后面
好了不要它了
Safari 你可以走了
这一步就像剥毛豆一样,把标题和链接剥出来放好,等下一步用。
黄色-弹出
告诉系统
现在就当前位置做点事情
开始吧
弹出一个名为「Safari Tabs」的列表供你选择,默认选项是最上面的标签页
只要你没点取消
就说明你选中网页标题啦
否则
啥也不干了
休息一下
系统君你也去休息一下
这里有一个特别实用语法:choose from list 列表名,它可以直接弹出一个列表窗口,这里就用它来罗列网页标题。
绿色-粘贴
把 activateApp 君叫醒
从头开始在标题列表里翻找!
如果找到和刚才所选标题一样的标题,就去链接列表里找和它序号一样的链接,然后把它给我
辛苦啦
这里利用了标题和网页链接巧妙的一一对应关系,不用直接拿标题去索求链接,只需要找到标题序号,然后按图索骥对应序号的链接就行了。
拷贝 Chrome 标签链接
不是人人都用 Safari,如果你是 Chrome 用户,那么对应动作的 AppleScrip 语法会略有不同。事实上,真正需要改写的地方少得可怜,只有「获取」部分的几个名词:
喏,你看,只有蓝色部分是改动过的。我倒觉得 active tab of front window 这个表达比 Safari 还要直白,一看就知道要获取最前面那页标签。
运行结果和 Safari 版动作别无二致:
你一定想问,从何得知 Chrome 的 AppleScript 语法呢?查字典。打开「脚本编辑器」,使用快捷键 ⌘Command+⇧Shift+O 打开 AppleScript 字典,找到 Chrome,在 Tab(标签页)相关目录下一找就找到了 title,而 URL 的命名则和 Safari 一样。
如果你使用的是别的浏览器,也请如法炮制。
触发方式
无论你是用 Automator 还是 Keyboard Maestro,都需要找一个合适的方法来启用这串脚本,快捷键是最容易想到的,不过 Drang 为 Keyboard Maestro 用户提供了另一种思路:输入关键字来触发。
其实我们做这个快速粘贴的动作,就是为了用在在各种输入框里,那么通过打字来触发动作也就是情理之中了。如果你也喜欢这么干,可以在 Keyboard Maestro 里加这个 Trigger(触发条件):
小结
现在我用中文为你介绍了一遍 Drang 的脚本,相信这里面已经没有什么深奥的东西了。事实上,完全看不懂的人也可以直接下载 Marco 去用,但能了解它们大致思路的读者,无论是写脚本还是像 Workflow 那样组合一个自动化动作,都会得心应手。
Keyboard Maestro 动作下载:
AppleScript 脚本下载: