21

一键剪藏网页内容到 macOS 备忘录

 5 years ago
source link: http://sspai.com/post/45774?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

从 OS X 10.11 和 iOS 9 开始,苹果更新了系统自带的备忘录应用,发展到今天,这个小巧的原生应用已经支持 iCloud 同步、多媒体内容和多级文件夹管理,具备了一个优秀笔记应用必备的功能。此外,Siri 和 Spotlight 系统级的接入甚至赋予了它更多场景使用的可能性。因此,很多人已经开始 使用备忘录作为自己的主力笔记应用

虽然备忘录作为原生 App 具备各种优势,但实际上它的操作过程却谈不上简单高效。来看普通的收集流程。当我们在某个应用里遇到认为值得保存的内容,步骤大概是:

⌘Command - C
⌘Command - V

乍看之下,这些操作不算麻烦,更算不上复杂。但是,在阅读一篇文章的时候,往往需要十数次地重复这些步骤。仔细分析下来,其中除了「选中文字」之外,其他步骤都是机械重复。于是我动手做了个简化流程,能做到 选中文字,按下快捷键,内容写入备忘录

URZVB37.gif 一键保存文字内容到备忘录

安装和使用步骤

要做到这一点不需要安装什么新软件,只用自带的 Automator 就可以做到。不想了解原理的话,只看这个部分,下载动作设个快捷键就搞定啦~

第一步,下载 Automator 文件,因为要做到「保存到备忘录」和「追加到备忘录」,所以有两个文件:

  • :link:保存到备忘录
  • :link:追加到备忘录 。

第二步,解压下载过的文件,双击安装「保存到备忘录」和「追加到备忘录」。

第三步,设置快捷键。在「系统偏好设置–键盘–快捷键–服务」中找到我们刚刚保存的服务,点击它,即可为它设置快捷键,我这里设置为了 ⇧Shift - ⌥Option - ⌘Command - C

MjeyErE.png!web 为服务设置快捷键

同样地,为「追加到备忘录」设置快捷键 ⇧Shift - ⌥Option - ⌘Command - A ,即可将选中的文字追加到备忘录中最近添加的一条备忘。

就 3 步,整个安装步骤就结束了。现在,你在任何应用程序中选中一段文字,就可以实现文章最初展示的效果,使用快捷键将文本快速保存到备忘录中了。

原理与引申

如果你只是想实现快速保存的功能,阅读以上内容已经足够。但如果你想进一步了解这个功能背后的原理,我们可以来试着探讨一下。

「服务」是 macOS 上的特色功能,它可以接受指定应用程序的输入,进而调动其他应用程序执行特定操作以形成整个工作流程。我们这里想要做的事情,就是以我们在其他应用程序中选中的文字作为输入,把它的内容快速地保存到备忘录中去。

为了实现这个目标, 第一步 ,我们从 macOS 自带的自动操作(Automator)应用程序新建一个服务。在打开的窗口顶端,选择服务的对象是「位于任何应用程序」的「文本」。

zaMBjyj.png!web 使用自动操作(Automator)应用程序新建服务

从窗口的左侧,我们可以看到资源库已经包含了一些原生应用程序的预设操作,Automator 的自动化,实际上就是把这些操作根据我们的需要连接起来,让它自动且连续地完成我们设定好的任务。通观这些操作,可以发现里面没有包含我们需要的备忘录编辑功能。在这种时候,就需要调用更加强大的、更够与应用程序实现更多互动的 AppleScript 了。

扩展:AppleScript 是 macOS 自带的脚本语言,少数派上已经有一些关于 教学或讨论 AppleScript 的文章

AppleScript 的语法规则自成体系,初学时很容易让人摸不着头脑。幸运的是,2014年苹果推出了 JavaScript for Automation,从此我们可以使用 JavaScript 制作 macOS 上的自动化工具。JavaScript 的语法相对来说与其他流行的编程语言更为相近,网上的教程也更加丰富,因此我们能够比较容易地理解和运用。

第二步,从左侧「资源库–实用工具」中选中「运行 JavaScript」并拖放到右端窗口,粘贴以下代码:

function run(input, parameters) {
    var Notes = Application("Notes")
    var newNote = Notes.Note({name: input})
    Notes.folders[0].notes.push(newNote)
    Notes.folders[0].notes[0].show()
}

如果追求更流畅的阅读体验,可以删掉最后一行代码 Notes.folders[0].notes[0].show() ,这样就不会在添加内容到备忘后打开备忘录。

vQZZVzr.png!web 将文本保存到备忘录

现在你的窗口内容应该和上面的截图一样,其中右侧即是我们设定好的工作流程,首先当你调用「服务」时,它会接收你选中的文字;然后,它把文字作为 input 发送给相应的 JavaScript 函数,这个函数很简单,只有四行代码,它们的作用分别是:

input

如果具备基础的编程知识,很容易可以看出,我们其实只是新建了一个 Note 对象然后把它放进了备忘录的 notes 数组里去,是不是很简单?

同样地,由于我们常常需要把来自同一篇文章中的信息保存到同一条备忘中,所以可以按照上述的步骤再建立一个「将文本追加到备忘录」服务,只需要其中的代码替换为:

function run(input, parameters) {
    var Notes = Application("Notes")
    var body = Notes.folders[0].notes[0].body()
    Notes.folders[0].notes[0].body = body + "<br>" + input
    Notes.folders[0].notes[0].show()
}

代码的原理和之前大致相同,只是把备忘的内容从 input 变成了备忘中已有的内容 body + input

如果你还想了解更多关于用 JavaScript 写自动化脚本的内容,可以观看 WWDC 2014 的相关主题演讲。

扩展:WWDC 2014: JavaScript for Automation

第三步,保存文件, ⌘Command - S ,命名为「将文本保存到备忘录」,并前往系统偏好设置中为刚刚保存的服务设置一个快捷键(同上文安装步骤最后一步),就大功告成了。

为服务设置快捷键是一项系统功能,很简单,但是我想多说两句。设置快捷键,其实可能也算得上是一门学问,既要避免与系统快捷键冲突,又要突出快捷键的功能才能方便记忆。没有经过仔细思考的快捷键往往因为冲突在许多程序中无法使用,或是因为不具备语义而被遗忘在记忆的深处失去了价值。因此,这里我选择“保存到备忘录”的快捷键的理由是,利用它和普通复制的相似性,加上更多功能键,这样既避开了系统快捷键又能代表它本质是另一种更复杂的 Copy 。这里使用了三个功能键,看起来操作复杂,其实这三个键的位置都在键盘的左下角或右下角,所以使用时大可一只手按住三个功能键,心理上进入「快捷键状态」,另一只手再根据 Copy 的目的从容地去按下 C 键。

AJR77vj.png!web 三个功能键作为快捷键的布局

而对于「追加到备忘录」,它的功能是把当前选中内容追加到最新一条备忘的末尾,因此快捷键设置为 ⇧Shift - ⌥Option - ⌘Command - A 功能键和上面一致,方便记忆,而 A 代表 Append。

这样,一个完全由自己制作的自动化流程就成型了。根据自己的需求,你还可以简单地对代码进行修改,例如,只需要对 input 变量进行字符串拼接,你就可以按照自己设定的模板保存内容了。

结语

曾经看到一篇文章说,自动化节省的不是时间,而是心理能量。

我常常觉得某个网页上某段话很有韵味,却懒得多花几步去保存下来,而宁愿在需要它的时候苦思冥想曾经是在何处相遇。这同生活何其相似,我们常常很明白哪些事情对我们是有价值的,却往往因为嫌麻烦懒得去做。那么既然如此,就一起探索用自动化的方式帮助我们更好更快地做有价值的事情吧!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK