在开始之前,我想先解答几个问题:
Q1:IFTTT 几乎是全英文界面,上手有些困难?
A1:针对这个问题,我想简单说明两点。第一,IFTTT 虽然是英文界面,但是它的界面中用到的都是我们能够常见的 IT 或互联网相关的基础词汇;第二,IFTTT 创建任务流的界面非常固定化,只需要回答 This 和 That 即可,有一定的学习成本,但是绝对没有大家想象的那么难,相信大家跟着教程由浅入深地学习,一定会掌握如何创建自动化任务。
Q2:IFTTT 是否一定需要编程基础?
A2:简单回答就是「不一定」。绝大部份简单的自动化任务,不需要大家会编程,IFTTT 都替我们封装好了。但是还有一小部分高阶用法,需要懂一点编程,比如正则表达式、循环嵌套、数组等概念。不过大家不用担心,在接下来的文章里我会尽量用大家听得懂的词汇来介绍用法。
Q3:IFTTT 能为我做哪些事?
A3:这是最常见的问题,到底 IFTTT 能为我们做哪些事?
IFTTT 是一个「自动化服务平台」,它能连接两个服务,并根据设定好的规则自动化处理任务。比如我们可以设定:
如果第二天气温降到 10 度以下,自动发通知提醒我添衣保暖;
如果女朋友生日了,可以自动发短信(邮件、Slack、Telgram)通知我,可以创建多个 IFTTT 自动化任务,多个平台同时发,防止漏掉;
如果晚上 10 点了,提醒我写日记,并且自动生成日记模版在 Evernote 中;
每天晚上 11 点,自动关闭我的智能灯。
总之,IFTTT 会替我们自动化地处理事情,在玩转 IFTTT 系列教程中,会有大量事例带领大家实现各种自动化任务。
在上一篇文章中,我们了解了什么是 IFTTT,它能做什么。接下来的文章中,我们通过一些简单的事例入手,带领大家创造出属于自己的「自动化任务」,大家只需要跟着教程操作,相信一定会掌握 IFTTT 的使用方法。
01. 提醒类
Notifications 是 IFTTT 提供的提醒服务,通过 Notifications 我们可以完全自定义各种提醒任务,在手机上许多任务管理工具甚至 iOS 官方的「提醒事项」都提供了非常好的提醒体验,而我们什么还要用 IFTTT 的提醒服务呢?
1. 更智能的提醒条件
IFTTT 是典型的 If This Then That 服务,所以提醒服务的「条件」可以更加智能,比如「印象笔记里添加了一条新笔记」,比如 「Twitter 发布了一条新消息」等,而不是简单地按时间提醒或者按地点提醒。
2. 无痕
如果我们用 iOS 平台的「提醒事项」做提醒服务,在接收到提醒的时候,这件事并不算完成,我们必须「处理」这条提醒消息。因为这条提醒消息背后关联着「某个任务」,你必须修改这个任务的状态为「已完成」或「延期」,否则它会一直骚扰你。
而 IFTTT 的提醒消息是通过官方应用推送的,我们只是收到一条提醒记录,看一眼消息,就可以算处理完这条消息(简单说就是我知道了),所以这样的推送是「无痕的」。
接下来我们通过两个事例来感受一下 IFTTT 的提醒服务。
降温提醒
如果第二天的气温降到 10 摄氏度以下,提醒我注意保暖。
这个任务中我们的条件是「如果第二天的气温降到 10 摄氏度以下」,IFTTT 提供了 Weather Underground 服务让我们可以非常方便地获取到天气相关的条件,接下来我们一步步操作,实现这个自动化任务。
创建新的自动化任务
我们先来认识一下 IFTTT 的界面(iOS 客户端为例):
我们点击 + 创建新的自动化任务。
创建 Trigger(触发器)
选择 Trigger 对应的服务,这里我们选择官方提供的 Weather Underground 服务,我们通过搜索可以找到。
设置 Trigger 的条件,根据需求我们设置「如果第二天气温降到 10 摄氏度以下」,很显然选择「Tomorrow’s low drops below」,并且设置条件为「10 摄氏度以下」。
接下来我们继续创建 Action 。
创建 Action(动作)
选择 Action 对应的服务,这里我们选择官方提供的 Notifications,并且设置具体 Action 为推送消息到 IFTTT 应用。
设置 Action 模版,提醒注意保暖以及第二天的最低温度。可以看到 IFTTT 自动添加了通知消息的模版,它是否符合要求呢?
图中特殊样式的单词分别是 LowTempFahrenheit,LowTempCelsius,它们分别代表「最低气温(华氏)」、「最低气温(摄氏)」。这里之所以样式特殊,是因为这几个单词都不是手动输入的(实际上手动输入也不起作用),它们必须通过选择才能添加到输入框里,那这是为什么呢?这里有一个重要的概念变量。
变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。
变量简单地说就是在一个系统中,用一个「单词」代表一个值,这个值的内容会随着系统的不同状态发生变化(比如本例中每一天的气温都会不同),所以称呼这个单词为「变量」。
在本例中,IFTTT 用 LowTempFahrenheit 这个单词代表「最低的华氏温度」这个值,因为日期不同这个值也不同,所以它的值是会随着时间不同发生变化的。同样的我们就不难理解 LowTempCelsius 这个单词代表 「最低的摄氏气温」。
每当一个 Trigger 条件满足时,IFTTT 就会把 LowTempCelsius 转换成任务执行那一刻的「真实值」(这个值由 Weather Underground 服务提供),然后再用这个真实值去执行 Action(也就是发送通知),所以我们每次收到的通知中的 LowTempCelsius(最低摄氏气温)都是变化的。
说完概念再来看一下模版,我们的需求提醒消息中显示第二天的「最低的摄氏气温」,于是修改模版如下:
查看运行结果
小结
「降温提醒」是本系列教程的第一个事例,我们看到通过 IFTTT 官方 app 创建一个自动化任务还是很简单的,相信大家跟着上边步骤操作一遍就能明白,并且对什么是「Trigger」,什么是「Action」也有所了解。
这个例子里我们接触了 Weather Underground 服务,它只能作为 IFTTT 中的 Trigger 存在,提供了许多触发条件,当然它除了可以提醒第二天降温外,还可以做到很多,比如:
本例中,我们第一次接触到了「变量」这个概念,大家如果不理解也没关系,后续我们还会多次介绍变量的使用。变量也是 IFTTT 最强大的武器之一,有了变量我们才能设置各种各样的规则,使得任务自动化执行。
还记得开头我们讲的,对于 IFTTT 提醒的「无痕」,对于降温提醒通知,我们只需要看一眼知道就可以了,不需要进行后续操作,非常轻量级的提醒服务。接下来我们再通过一个例子了解「通知服务」。
离开公司(家),提醒关闭 Wi-Fi
我希望离开公司(家)的时候,收到关闭设备 Wi-Fi 的提醒。
相信许多人和我一样,在家和公司都连着 Wi-Fi 使用,可我们离开这些场所的时候 Wi-Fi 就不起作用了,这时候我就需要一个离开某地提醒我关闭 Wi-Fi 的功能了,为什么在不使用 Wi-Fi 的情况下关闭 Wi-Fi 这么重要呢?
它会不停地搜索附近有什么可以连接的 Wi-Fi,比较耗电。
它还有可能连上莫名其妙的 Wi-Fi,有安全风险。
接下来我们使用 IFTTT 实现离开上述场所时提醒关闭 Wi-Fi。
我们分析一下这个自动化任务:
Trigger :当我离开公司(家)的时候。
Action :提醒我关闭 Wi-Fi。
创建 Trigger
选择 Trigger 对应的服务,这里选择官方提供的 Location 服务,通过搜索可以找到,并设置触发条件为「当离开某地时」。
设置公司(家)的地址。
创建 Action
选择 Action 对应的服务,这里我们选择官方提供的 Notifications,并且设置具体 Action 为推送消息到官方 app,设置推送内容为「提醒关闭 Wi-Fi」。
小结
「离开公司(家),提醒关闭手机 Wi-Fi」这个事例是一个比较实用的例子,它之所以能够感知「用户离开了某地」是通过 IFTTT app 获取到地理位置的,所以在使用的时候,大家需要先将 IFTTT 启动,然后不退出后台。
Location 服务提供的是关于地理位置的服务,基于地理位置我们还可以做很多有意思的自动化服务,比如标记一下健身房的地理位置,我们可以做到每次去健身房的时候,在 Google Sheets(Google 出品的云端表格服务,类似 Excel) 里记数一次,这样就可以很方便地在 Google Sheets 中统计每月去健身房的次数(后续文章里会有类似的事例)。同理,包括我们去超市的次数等都可以很方便地统计。 02. 定时类
Date & Time 是 IFTTT 提供的定时服务,有点类似我们手机上的闹钟应用,设定一个时间点提醒我们做某事。不过 IFTTT 的定时服务有所不同,它能够当到了我们设定的时间点时,按照规则自动帮我们做某事(一般是基于互联网的事情),我们通过下边这个例子感受一下。
每晚自动在印象笔记中创建日记模版
相信许多人写日记都有两个问题:
不知道写什么?
总是忘记写日记。
不知道写什么,我的解决办法是,制定一个符合自己的日记模版(也就是问自己几个问题),大家可以参考我的模版:
一日概述:
反思与意义:
评分:
效率:
社交:
知识:
趣味:
思考:
我只需要每天按照模版回答问题,即可完成当天的日记。第一个问题解决,我们看第二个问题「总是忘记写日记」。
关于忘记写日记,简单说设置一个提醒即可,接下来我们通过 IFTTT 实现「每天定时创建模版日记」,创建成功后 IFTTT 会自动发一条消息到我们的手机。
我希望每天晚上 9 点,自动在印象笔记中创建一篇模板日记。
我们可以使用 IFTTT 的 Date & Time 和 Evernote 实现此定时任务,任务拆解如下:
Trigger:每天晚上 9 点。
Action:根据模版在印象笔记中创建一篇笔记。
创建 Trigger
选择 Trigger 对应的服务,这里选择官方提供的 Date & Time 服务,通过搜索可以找到。
设置 Trigger 条件,根据需求我们需要每天定时提醒,很显然选择「Every day at」,并且设置条件为「每天 21:00」。
创建 Action
选择 Action 对应的服务,这里我们选择 Evernote,并且设置 Action 为创建一篇新文章。
设置 Action 模版,将日记模版添加进去,并设置保存到名为「日记」的笔记本,设置笔记的标签为「日记」。
拷贝如下日记模版到 IFTTT:
<h3>一日概述:</h3>
<h3>反思与意义:</h3>
<h3>评分:</h3>
<ul>
<li>效率:</li>
<li>社交:</li>
<li>知识:</li>
<li>趣味:</li>
<li>思考:</li>
</ul>
查看结果
小结
本例中我们使用 Date & Time 和 Evernote 实现了「每天晚上 9 点生成日记模版」的自动化任务。有的同学可能有疑问,上边我们提到过 IFTTT 的提醒是「轻量级提醒」,收到提醒消息,就算处理了,并没有没有后续操作。如果自动创建好日记模版,还是会忘记写日记怎么办?
我的办法是,在你习惯的任务管理软件里比如「提醒事项」,设置每天 21:30 提醒写日记,当时间到了以后由于有了「每天晚上 9 点生成日记模版」这个自动化任务,我们只需要打开 Evernote 就能够看到创建好的模版,直接开始写日记。
由于「提醒事项」并不是看到提醒就算处理了,我们需要在写完日记后,去软件里把这个提醒设置为「已完成」,否则这条任务就会一直提醒你去完成。这样我们就不会忘记写日记了。
本例也是我们第一次接触 Date & Time 服务,借助它我们还可以实现许多「自动化定时任务」,这里举几个例子供大家参考:
定时提醒我喝水。
女朋友生日自动发祝福短信。
新年第一天自动在新浪微博发送新年祝福。
感兴趣的话可以手动创建以上任务作为练习。
03. 社交类
许多人都有发微博的习惯,在社交媒体记录并分享着自己的感知。我也是一个微博用户,我在使用微博的时候,会将微博内容同步到印象笔记中,那么为什么我要这样做呢:
我们发布的微博内容由于某些不明原因可能会被删除,所以我会将微博保存到印象笔记中一份,做到万无一失。
印象笔记提供了比微博更强大的搜索功能,方便我们检索。
印象笔记支持离线(高级帐户),可以做到离线查看任意内容。
印象笔记就是一个「知识库」,它为知识的保存和管理提供了非常强大的支持,所以我会将我的微博内容保存到印象笔记。
如果想要实现「将发布的微博信息同步到印象笔记」的自动化,就需要用到 IFTTT 的 Sina Weibo 和 Evernote 服务,接下来我们详细介绍一下如何使用。
新浪微博内容自动同步到印象笔记
我希望如果我发布一条新浪微博信息,该信息将自动同步到印象笔记。
拆解一下任务:
Trigger:在新浪微博中发布一条信息。
Action:将信息同步到印象笔记。
创建 Trigger
选择 Trigger 对应的服务,我们选择 Sina Weibo 服务,可以通过搜索找到它,并设置触发条件为「每当发布一条微博时」。
创建 Action
选择 Action 对应的服务,这里选择 Evernote,并且设置 Action 为创建一篇新文章,最后设置文章内容为新浪微博发布内容。
上图中特殊标记的文字代表变量,温习一下变量的概念:
变量简单地说就是在一个系统中,用一个「单词」代表一个值,这个值的内容会随着系统的不同状态发生变化,所以称呼这个单词为「变量」。
为什么用到变量呢?
想一下,在这个自动化任务中,我们希望把「新浪微博发的内容转存到印象笔记中」,这里不是针对某一条特殊的微博,而是针对所有在新浪微博发布的微博,所以我们就要设置一套规则,告诉 IFTTT 把我发布的微博的具体哪些内容(比如图片和文字)保存到印象笔记。这套规则肯定是通用的,不能代表某一篇具体的微博,所以这里使用了编程思想中的「变量」概念。
还是在本例中,我们希望用发布的新浪微博内容当作文章标题,所以这里就将 text 这个变量插入到 Title 中。我们希望文章正文中显示微博图片,所以我们将变量 PhotoURL 插入到 Body 中。同时我们还希望文章中记录当前微博的用户名,创建时间和当前微博的访问地址,于是我们分别插入变量 UserName、CreatedAt、WeiboURL。
小结
本例中我们用到了 Sina Weibo 和 Evernote 两个服务实现了「将新浪微博发表的内容同步到印象笔记」的自动化。而且我们第二次提到了变量的概念,相信大家应该有了更直观的印象。后续文章中我们会继续介绍变量的用法。
注:由于新浪微博 API 问题,如果微博是多张图片,只会将其中一张导入到 Evernote 中。
许多人都有各社交平台的账户,经常面临的问题是同样的内容要在各平台都发一遍,幸好 IFTTT 对各社交平台支持的比较全面,现在利用 IFTTT 我们可以很方便的做到「在一个平台发布内容,同时同步到各个平台」,这里我只是抛砖引玉,希望感兴趣的同学可以尝试创建以下事例作为练习:
04. 任务管理类
Gmail 是非常优秀的邮箱服务,而 Todoist 也是非常优秀的任务管理工具,我在用 Gmail 邮箱的时候经常遇到几个问题: 有的邮件不需要我当下立即处理,我需要到了将来某一天再根据邮件内容处理这件事。
有的邮件信息量比较大(比如会员通讯录),需要稍后找时间阅读。
为了解决这俩问题,我通常是在 Todoist 中创建一个任务,提醒我某一时刻阅读这封邮件(最好邮件的正文作为任务的任务描述)。
毫无疑问 IFTTT 提供了对这两个服务的支持,接下来我们尝试创建「邮件稍后读」的自动化任务。
开始前我想先回答一下问题,可能有人会有疑问,许多优秀的邮箱客户端都提供了「稍后阅读」的功能,比如 Airmail,Spark,为什么我们要使用 IFTTT 的服务呢? 工具提供的稍后读服务,通常都会预制一些提醒选项,比如明天 8 点提醒,今天晚上 8 点提醒等,但是预制的时间无法自定义,如果你像我一样喜欢睡前一小时整理「待办事项」的话,就无法愉快的使用了。
通常我喜欢在一个软件里统一管理我的「待办事项」,就只能将各种场景的待办事项发送到 Todoist。虽然 Airmail 提供了 Todoist 插件,但是使用场景略微复杂,无法像 IFTTT 一样「一键发送」,大家看下边俩图对比一下。
Gmail 邮件稍后阅读提醒
我希望在处理 Gmail 邮件的时候,如果遇到需要稍晚一些处理的邮件(比如我在家,但是需要到公司才处理的邮件),可以自动在 Todoist 中创建一条提醒任务,提醒我需要稍后处理该邮件。
创建 Trigger
选择 Trigger 的服务,这里选择 Gmail。设置触发条件为「给邮件打星标时」。
创建 Action
选择 Action 对应的服务,这里我们选择 Todoist,并且设置具体 Action 为「创建一条任务到 Todoist」,很明显我们应该选择 Create Task。
设置 Action 对应的模版,即告诉 Todoist 创建什么样的任务。这里我们的需求是任务的标题和 Gmail 中打星标的那封邮件标题一样,任务详情就是那封邮件的详情。我们看一下模版都有哪些内容需要填写:
设置任务所属项目:在 Todoist 中我设置了几个项目,我希望这个任务能够属于 Todoist 中的「个人」项目,我们看一下如何做到。
IFTTT 非常智能地读取到了 Todoist 中我们设置好的项目名称,我们只需要点选即可,使用起来非常简单。
用户使用简单但它背后的实现逻辑却是很复杂的,IFTTT 会通过 Todoist 的 API 获取所有创建好的项目并且展示出来,我们选择的是项目名称,但是 IFTTT 是用项目 ID 进行后续操作的。不过这也正是 IFTTT 强大的地方,隐藏复杂的实现,显示简单的结果,我们作为普通用户只需要会用即可,无须关心它是如何实现的。
设置任务标题:接下来我们设置任务的标题,我们想让任务的标题和 Gmail 中的邮件标题一样,那么该如何设置呢?首先我们看到标题输入框里 IFTTT 已经预先填写了默认内容,内容是「邮件发件人以及邮件标题」,如图:
这里还是要用到之前提到的变量,在图片里特殊样式的单词有两个分别是:FromAddress 和 Subject,他们分别代表打星标的那封邮件的「发件人地址」和「邮件标题」。
我们看一下「如何设置 Todoist 的任务标题为打星标的邮件的标题?」其实很简单,我们只需要找到代表邮件标题的「变量」,插入到任务标题输入框中即可,如图:
设置任务详情:按照需求我们希望任务的详情和打星标的邮件内容一样,设置方法和设置标题一样,通过插入变量实现:
以上几步,就完成了对应的 Action 设置,告诉 IFTTT 当 Trigger 被执行的时候,自动执行设置的 Action 模版,换句话说,当在 Gmail 中给一封邮件打星标,就会自动在 Todoist 中创建一条任务。
小结
这是本篇中最复杂的事例,在本例中,我们通过设置 Gmail 的 Trigger ,监控是否对邮件进行了「打星标」操作,如果进行了操作那么 IFTTT 会自动创建一条提醒任务到 Todoist,从而实现了「邮件稍后读」自动化任务,对于最后一个任务,大家有条件的可以多尝试,有助于大家更好的理解变量和 API。
05. 网络存储类
Dropbox,优秀的跨平台网盘服务,该服务以稳定和功能强大著称,免费用户最高可得 20GB 左右空间,并提供 30 天历史记录功能。Dropbox 有着非常优秀的 API,能够满足绝大多数我们对网盘服务的需求。
下边我们结合 Dropbox 和 Email 服务提供一个事例供大家参考。
Dropbox 自动推送书籍到 Kindle
Kindle 是 Amazon 2007 年发布的一款电子书阅读硬件,十年来 Kindle 凭借出色硬件体验和 Amazon 提供的电子书商城,俨然成为了电子阅读领域的领头者。
为了方便用户导入书籍阅读,Amazon 提供了免费的「个人文档转换服务」。Amazon 为每个用户分配一个邮箱地址,并通过设置发送白名单(Amazon 只处理白名单里指定邮箱发送的书籍),Amazon 会将我们发过来的书籍转换成可以在 Kindle 阅读的格式并推送到我们的 Kindle 设备。
目前 Amazon 智能转换并发送以下格式的文档:
Microsoft Word(.doc, .docx)
RTF 文件(.rtf)
HTML(.htm, .html)
TXT 文件(.txt)
Zip、x-zip 压缩文件
Mobi 格式电子书
JPEG(.jpg)、GIF(.gif)、Bitmap(.bmp)和 PNG(.png)格式的图片。
Adobe PDF(.pdf)文档可维持原文件格式,发送至你的 Kindle。
Adobe PDF(.pdf)文档可转换为 Kindle 格式发送,目前处于试用阶段。
如果我们有一本书向发送到 Kindle,我们需要打开邮箱客户端,输入 Amazon 分配的邮箱地址,将书籍作为附件发送之后,才可以在 Kindle 中收到并进行阅读。现在利用 IFTTT,我们可以通过 Dropbox,将需要转换的书籍存放到 Dropbox 指定的位置,IFTTT 自动将书籍发送到 Amazon 进行转码并推送。
分析一下这个自动化任务:
将书籍存入到 Dropbox 的 /Public/Send to Kindle 文件夹。
IFTTT 发现有新的文件存入到该目录,自动发送邮件到 Amazon 分配的转码邮箱。
Amazon 完成转码并将书籍推送到 Kindle。
创建 Trigger
选择 Trigger 的服务,这里我们选择 Dropbox。设置 Trigger 条件为「当文件夹中新增了文件时」。
设置 Trigger 条件,配置需要监控文件夹的路径。
创建 Action
选择 Action 对应的服务,这里我们选择 Gmail,并且设置具体 Action 为「发送附件到指定邮箱」,很明显我们应该选择 Send an email。
设置 Action 的模版,告诉 Gmail 给哪个邮箱发送什么内容。
注意:FileUrl 即我们上边介绍过的变量。
查看结果
打开 Dropbox 应用,访问 /Public/Sent to Kindle 文件夹。
选择上传一个 PDF 文件。
打开 IFTTT 检查是否同步。
打开 Kindle 检查书籍是否同步。
小结
本例中,我们通过 IFTTT 的自动化,只需要将书籍放到 Dropbox 的指定目录,就会自动完成转码和推送,大大的提高了我们的效率。
当然将文章推送到 Kindle 也有许多可以替代的解决方案,我用到的不太多,目前已知的有如下几种:
感兴趣的同学可以尝试以上替代服务,丰富自己的阅读体验。
Dropbox 作为优秀的网盘服务,通过其 API 我们可以做到很多自动化任务,这里提供几个事例供大家参考,如果正好你有这方面的需求,不妨尝试自己创建一下:
06. 总结
本篇是 IFTTT 系列教程的第二篇基础篇,文章中我们通过 6 个事例认识了 Date & Time、Notifications、Weather Underground、Email、Sina Weibo、Evernote、Gmail、Todoist 等服务,通过这些服务我们可以创建一些简单高效的自动化任务。
希望大家在阅读文章的同时进行实际操作,这样大家才会对 IFTTT 有一个更清晰的认识,也不会感到无从下手。
手机作为现在人类的智能终端,在我们的日常生活中具有者举足轻重的地位,它是我们的贴心管家,在下一章《本地应用篇》中,我将结合 IFTTT 和手机本地应用,带领大家体验更多高级玩法,打通本地应用到服务的壁垒,希望大家持续关注,跟着我们玩转 IFTTT。