前言
许多软件公司受限于团队的开发时程、商业策略考量,用户需要的功能不一定都能提供。
例如我在使用 Evernote 时,希望能让 Evernote 每天自动建立一则笔记,让我能够纪录当天的生活。
但… 这么简单的自动化 Evernote 竟然没办法满足我。 其实不只 Evernote,就连 Notion, OneNote… 等知名的笔记软件也都没有这项功能。 根据我的调查,目前有这项自动化功能的笔记软件只有 Roam Research 。

不见得所有人都需要这样的功能,但当我们有一个微小且明确的需求时,是否可以靠自己的能力做一个呢?
如果你是 Mac 的用户,这项心愿就能够实现,我们要使用的就是 Mac 内置的 Apple Script 和 Automator。
Apple Script 是 Mac 内置的原生程式语言,语法非常贴近人类的自然语言。 由于 Apple Script 在 1993 年 (18 年前) 就有了,网络上有 “超级多” 其他人的讨论与范例,是一个相对容易入门的程式语言。

Apple Script 实际上能做到哪些事情呢? 不夸张地讲,只要你 Mac 上安装的软件、看到的功能,几乎都可以撰写 Apple Script 进行操控。 实际上,我们也用不到多困难的功能。
使用 Apple Script 的初衷应该放在把每天在 Mac 上重复做的事情,交给 Mac 自己去处理。
这篇文章分享我如何使用 Apple Script + Automator 解决上述的自动化问题。備註
1. Windows 也許有這樣的套件,如果知道的人可以在下方留言告訴我。2. 根據 Evernote 論壇討論,新版 Evernote (版本 10.0 以上) 不支援 Apple Script。我目前使用的是 Evernote Legacy 版本 (舊版本),你可以在這裡下載。
一、初探 Apple Script
这篇文章不会特别解说 Apple Script 的语法,入门者请参考下方文章。 给自己 30 分钟,你就会最简单的 Apple Script 语法:
- 呼叫 Finder 跟你打招呼
- 打开 Mac 邮件软件自动寄信
二、直接应用,让 Evernote 每天自动创建一则笔记
开始写程序前的思考
写任何程序前,一定要先思考:
我究竟要叫这支程序帮我做什么?
我的目的很简单,一共有3个需求
- 创建一则新笔记,将 Title 命名成【每日行动列表】 YYYY. MM.DD
- 笔记内文的默认内容为“ 💡 日志今天发生过的事情吧”
- 指派 tag 给这则笔记,tag 名称为「2021 daily note」
当我开启 Apple Script 之后 ,我的第一件事情应该是:
上网百度有没有参考范例。 如果有的话就不需要重复造轮子,如果没有的话再重新思考。

很幸运地,Evernote 技术文件 有提供相关的范例,不过无法满足我的需求,因此我必须自己增加一些代码。

代码
下方是我最终的代码,简单说明如下:
1. 处理日期格式
Apple Script 的日期函数支持弱,因此需要手动去读取需要的年、月、日。
例如 Apple Script 内置的 只能抓取到这台电脑此时此刻的 ,依据需求需要自行做格式处理。current time
年/月/日/星期幾/時/分/秒
2. 注释
Apple Script 的注释格式是 — ,记得写注解才不会忘记这段程序在做什么
3.查看Dictionary
Apple Script中如果要查找某个函数(function)的功能如何使用,可以按(或是文件>打开指令词汇) 查看Dictionary。⌘⇧O
Dictionary 中可以清楚看到每个软件支持的函数、可取用的属性 (property) ,有趣的是 Apple Script 是用 v. (动词)、n.(名词) 来定义,因此写 Apple Script 看起来就像在写一句英文。

最后按下 ▶︎ 看结果,成功的话就出现以下画面!

三、加入 Automator 排程,让 Mac 自动帮你执行
写完 Apple Script 很开心,但每次都要按执行也太麻烦了,我们试着让 Mac 自动帮我们执行吧!
我们要使用同样是 Mac 内置的软件 —— Automator。 操作步骤如下:
1.开启 Automator,选择「日历闹钟」

2.点击 「工具程式」>「执行 AppleScript」

3.将刚才写的 Apple Script 代码贴到 Automator 中

請留意只需覆蓋掉 Automatro 中的紅色區塊文字即可,要保留 on run, end run
4.关闭 Automator,系统自动询问是否储存,替文件命名并储存
5.查看 Mac 行事历,会看到已建立好的 Automator 排程,可自行调整运行时间

如果要每天執行,記得將重複時間設定成「每天」
四、总结与延伸学习
在学习 Apple Script 并写出这个小小的自动化程序,给了我 3 个体悟:
- 思考是否有更好的作法,如果有就去尝试
- 尝试的过程不一定会成功,但折腾的结果会让自己更懂了某样东西
- 不要受到职位、学历、产业的影响,任何人都可以学习写程序。
我们的目标不是建立一个多伟大的功能,而是多一个工具去解决问题。
写程序是一个循环过程 :
- 定义问题
- 寻找方法
- 动手实作
- 接受反馈与修正
直接从「问题」下手去了解某样必须的知识,可以让自己学的更有成就感。