前言
Google Apps Script 是一个快速的应用程序开发平台,可以快速、轻松地创建与 Google Workspace 集成的商业应用。你可以用现代的 JavaScript 编写代码,并可以访问最喜欢的 Google Workspace 应用程序的内置库,如 Gmail、日历、Drive 等。没有任何东西需要安装--我们在你的浏览器中给你一个代码编辑器,而你的脚本在谷歌的服务器上运行。
上述引用来自于 Google Apps Script 引导页。根据描述,用户可以通过编写 JavaScript 代码,对 Google 家的部分应用进行操作。
例如读取 Gmail 的邮件、日历的日程、表格的单元格等。也可以实现发送邮件等操作。
看到可以读取 Gmail 和发送邮件,突然来了点子💡
我们是不是可以自动提取行程信息,根据自己需求,定制自己的行程助理?例如火车票、机票预定、酒店预定等信息,收到邮件后,由脚本处理再转发到 GTD 软件,到了时间后自动提醒,可以完美执行 GTD 理念中的 “记录,然后忘掉” 的原则~既然想到了,那就开始做!
当然,可以操作 Google 家数据 ,哪只能实现这点需求,故本文将是 App Script 分享的第一篇,之后还会折腾,实现各种需求~也可以在评论区中添加您的需求,我会尽力而为。
效果
解锁,右滑,一目了然。「右上+下方小组件」
PS: 自动添加到 Google 日历已实现,待优化后补充在评论区
为啥有这个需求?
问:明明携程的小组件显示效果不错,为啥你要自己做一个?
答:每回买票时候,我只记一个出发时间,到了车站之后才开始看车次、检票口、座位等信息。如果打开 12306 需要验证,还要多点几步等待加载,比较麻烦。前段时间携程推出的小组件做的挺直观的,但它显示信息不全啊😡,想看检票口还要进入 App 才能看到。什么启动速度它自己没点数吗?啊?!为什么不能在小组件里一并显示呢?「注: 携程的小组件显示效果如上图左上角所示」
遗憾
但也有遗憾的事,发送到滴答清单的邮件不适用滴答的自然语法。
例如文本为“2021年08月18日18:18提前15分钟D1818号,18车18A,检票口18A~提醒事项#12306”
在滴答清单的 App 中输入,将会被识别为标题为 "D1818号,18车18A,检票口18A",提醒时间为2021年8月18日18点18分并且提前十五分钟提醒,所在的列表为“提醒事项”,标签为“12306”的任务。
但通过邮件发送,将会被识别为标题为 “2021年08月18日18:18提前15分钟D1818号,18车18A,检票口18A~提醒事项#12306”,提醒时间为2021年8月18日18点18分的任务。
文本中带的时间不会被自动抹除📅,无法指定标签🏷️,无法设置提前提醒时间⏰,总归还是需要进入 App 多操作几步,就有点不太舒心…「此处偷偷@滴答官方人员,自然语法为啥不能套用在邮件添加中呢…」
还有… 我这边 12306 的邮件发送不到 Gmail 里面,找了半天没找到为啥(´Д` )
哎… 最后舍近求远,由 QQ 邮箱转发所有 12306 的邮件到 Gmail …
如果有知道为啥的朋友,可以帮忙在评论区解解惑😂
废话说了不少,下面正式开始讲解实现逻辑。
如何实现匹配与转发
仅做抛砖引玉,相信各位大佬能做的比我更好。更能开发出更多信息的聚合。
相关代码详见此 GitHub 仓库。(粘代码有凑字数嫌疑
使用到的服务与软件
项目准备
- 登陆 Apps Script
- 新建项目
实现思路详解
- 获取到需要处理的邮件。
- 初步匹配“出发时间、车次、座位、检票口等”相关信息「作为后续匹配的基础」。
- 精确匹配“出发时间”、“车次”、“座位”、“检票口”,作为独立变量为拼接文本做准备。
- 根据自身需求,拼接成任务文本
- 发送邮件到滴答清单提供的邮箱中
- 执行测试
脚本何时触发
最好的触发器应该是收到邮件就触发一次脚本。但是仅支持时间驱动和日历驱动…
所以此处用了时间驱动的形式触发脚本。
因为一般来说买车票都是提前好几天就买好了,对及时性要求不高。所以我把时间设为每15分钟读取一次。
滴答清单设置
根据当前脚本添加的任务如下图所示
重新修改标题,添加标签。
设置小组件到负一屏,设置过滤规则
尾巴
操作步骤偏多,还需要编写代码,结果完了之后还要再重新编辑。
好像距自动化理念相差甚远。甚至写代码、调试的时间,够我接下来一年自行编辑出差任务用。
那为什么还要折腾呢?
但是如果想想,通过这一次,从今往后的 Gmail ,它收到什么,您想要它做什么,您想让它成为什么?您都能自定,全权掌控。这不是一件很 Cool 的事情吗?
就如标题所说,“从零开始,定制您的行程助理”。将来,您也可以定制您的生活助理、提醒助理…
让工具更好的服务于自身🚗
那这一切都物超所值。
感谢您读到这,下次再见~
相关链接
- Google Apps Script
- 滴答清单
- Google Apps Script Awesome List - Github
- 笔者的 GitHub 仓库
- 题图来自 person writing on white paper photo – Unsplash