对国内工作、生活的朋友来说,超过三天的节假日一般就会带来另一个情况——调休补班,由此衍生出的闹钟问题也常被 Android 和 iOS 用户提起。

一般而言,手机闹钟按照标准的工作日设定,即周一到周五响起,周末关闭。因为补班情况的存在,本来休息放假的时候需要闹铃,很容易睡醒一看发现已经要迟到了……所以随着现在大部分的国产 Android 机都已内置了自动补班的闹钟设置,系统会贴心地根据每年节假日安排自动设置好补班闹铃;至于 iPhone,即便系统原生闹钟没那么「接地气」,iOS 用户依然可以「曲线救国」,导入相关的快捷指令实现和国产 Android 手机一样的自动补班闹钟。

原生、类原生 Android 用户成了「最苦的」。比如 Pixel 或者非国行 Android 手机,既没有自动设定补班闹钟的系统功能,也没有足够强大、类似 iPhone 快捷指令的原生自动化工具。

这种时候就该请出 Tasker 了。

实现原理

其实无论是国产 Android 手机,还是 iPhone 上的快捷指令,实现自动化节假日补班闹钟,核心原理都是基于每一年公布的节假日放假安排设置日历,然后让系统根据日历活动信息自动创建并开启闹钟。

所以我们只需要:

订阅节假日补班/放假日历 -> 系统根据日历里面的全天日历活动里面的标题关键字设定闹钟创建规则 -> 当日凌晨执行检查程序并确定当天是否上班 -> 要上班,创建当日早晨闹钟。

根据上面的这个思路,我们就可以编排这个自动化小任务了。

步骤一:在线订阅中国节假日调休补班日历

首先我们需要将中国节假日调休补班日历添加到手机系统日历中。

如果你在 Apple 生态设备——Apple 日历应用内置的中国大陆节假日一般会内置调休补班信息(偶尔会有延迟),你可以想办法将这个日历同步到 Android 设备上。在笔者所使用的 Pixel 设备中,默认日历应用是 Google 日历,所以订阅在线日历并不能直接在手机端进行,只能在 Web 端操作。这里我们在电脑上打开 Google 日历,然后在 Google 日历左下方的「其他日历」旁点击「+ -> 通过地址添加」:

在「通过地址添加」这里,导入 https://ical.muhan.org/ 这个日历订阅链接,然后点击「添加日历」完成添加:

完成订阅后 Google 日历中就会出现「中国节假日安排」这个日历了,同时你在比如月视图中看到某些日期下已经有个诸如xx假期xx补班全天日历活动,那么就表示你的 Google 账号下已经成功订阅了这个在线日历了。

编注:Google 日历其实是有中国大陆节假日订阅的(移动端可在「日历设置 -> 更多 -> 节假日」中添加「地区性节假日」),但这个订阅只管放假、不管调休补班。本地化还是不如 Apple。

步骤二:在 Android 手机的日历中打开订阅日历

在 Web 端订阅完日历后,我们还要在手机端的 Google 日历应用中将这个订阅的日历打开并同步,从而确保后面我们可以使用 Tasker 读取到订阅日历里面的日历活动标题。

这里我们点击 Google 日历 App 左侧上方的汉堡菜单 ,找到页面下方的「设置」,在自己 Google 账户信息下点击刚刚在 Web 端订阅的「中国节假日安排」这个日历,然后将上面的「同步」开关打开。

再回到应用首页,点击左上角的汉堡菜单打开侧栏,确定你的账户下这个「中国节假日安排」的日历显示是被勾选的,同时右侧的对应日期上已经显示了和节假日日历活动有关内容(比如有 xxx 假期),就表示这个和节假日的日历已经可以能在手机端日历应用上查看了。

步骤三:在 Tasker 中创建自动化补班闹钟任务

我们仔细观察订阅的这个「中国节假日安排」日历中日历活动就不难发现,如果是需要补班的日期,就包含有一个标题为「xxx 补班」的全天日历活动;而如果是工作日的放假,那么对应的日期下的就会有名为「xxx 假期」的日历活动。

我只需要在设定 Tasker 任务的时候,通过创建变量来抓取当天系统日历的全天日历活动,检查标题是否有包含 「假期」或者「补班」,就可以知道是否需要创建并开启闹钟。这也是在前面订阅日历时,补班或者假期的日历项必须是「全天」的原因——检查是否上班必须是当日的日历项,如果是非全天的活动(比如日历活动是从 9 点到 18 点的这种有时间段的日历活动),则程序在当日凌晨时根本检测不到已经发生的活动标题(当然,如果你熟悉变量之后,也可以自行订阅其它日历并选择更多抓取条件)。

我们将 Tasker 设置成英文(便于找到相应的操作步骤),打开应用并切换到 Task 选项卡,点击右下角的 「+ 」创建一个名为 WorkAlarm 的任务。在任务编辑页面中我们需要创建多个子条件:

  • 创建子条件 1:在任务编辑页面中点击有下角的「+」,在动作中选择 Variable - Variable Set,在变量设置里面,在 Name 中填写 %is_work,在 To 中填写 0,然后返回到任务编辑页面。这个变量的逻辑是,假设今天是休息的,不设置闹钟
  • 创建子条件 2:继续在任务编辑页面中点击右下角的「+」,在动作中选择 Variable - Variable Set,在变量设置里面,在 Name 中填写 %is_work,在 To 中填写 1,然后移动到下面的 if 点击右侧的「+」添加判断:左侧的 Variable 填上 %DAYW,然后点击中间的逻辑选择 Doesn't Match (也就是 !~),在 Value 中填写 *六*/*日*/*Sat*/*Sun*,写好之后点击左上角返回到任务编辑页面。这一条条件就是如果是周一到周五,就设为上班
  • 创建子条件 3:继续在任务编辑页面中点击有下角的「+」,在动作中选择 Variable - Variable Set,在变量设置里面,在 Name 中填写 %is_work,在 To 中填写 0,然后移动到下面的 if 点击右侧的「+」添加判断:左侧的 Variable 填上 %CALTITLE,中间的逻辑选择不变,右边的 Value 中填写 *假期*,填好之后点击左上角返回到任务编辑页面。这一条件的意思是,如果是法定节假日,即使是周一到周五的任意一天,都不设置闹钟,判断依据是日历活动标题包含假期字眼
  • 创建子条件 4:继续在任务编辑页面中点击有下角的「+」,在动作中选择 Variable - Variable Set,在变量设置里面,在 Name 中填写 %is_work,在 To 中填写 1,然后移动到下面的 if 点击右侧的 「+」添加判断:左侧的 Variable 填上 %CALTITLE,中间的逻辑选择不变,右边的 Value 中填写 *补班*,填好之后点击左上角返回到任务编辑页面。这一条件的意思是,如果是日历活动的标题中有补班字眼,无论是否是周末都设定上班。

最后我们还需要设置一个创建闹钟动作:继续在任务编辑页面中点击有下角的「+」,在动作中选择 System - Set Alarm,在 Hour 这里设置闹钟的小时(我是设置成为 6 点),在 Minutes 这里设置分钟(我设置成 50 分),然后移动到下面的 if 点击右侧的 「+」添加判断:左侧的 Variable 填上 %is_work ,中间的逻辑选择 Equals,在右边的 Value 中填写 1。填好之后返回到前面的任务编辑页面。这个设置动作只的是,当条件满足 %is_work 等于 1 时设置闹钟。

按照以上顺序依次创建好变量条件后,最终的任务详情应该是这样的:

最后我们需要验证下这样写的逻辑是否正确并对其进行验证:

  • 如果今天是普通的工作日,点击任务编辑页面下方的 Play 按钮,如果任务条件编写没问题,执行结果应该是创建了当日的闹钟。
  • 如果今天是普通的周末(周六/周日),点击任务编辑页面下方的 Play 按钮,如果任务条件编写没问题,执行结果应该是没有任何信息返回(不创建闹钟)。

当然如果验证你的节假日调休是否正常,则可以在手机的 Google 日历的个人日历里面,给今天加上一个全天活动,活动名称标题包含补班或者假期的字眼就可以,然后还是在这个任务编辑页面直接点击运行看是否符合设定的结果。进而验证整个任务逻辑是否顺畅。

最后,回到 Tasker 的 Profile 选项卡,点击右下方的 + 按钮,在新建的配置中选择基于 Time 触发,在时间设置上选择从00:0500:05,也就是每天凌晨 00:05 触发一次,然后将这个配置和刚才我们创建的这个名为 WorkAlarm 的任务关联起来,最后打开任务执行的开关,点击右上角的 完成全部动作设定。

至此这个自动化的节假日补班闹铃就算是设定完成了!

结语

通过设定如上的自动化任务之后,任务将会根据配置条件当日凌晨会根据设定的条件进行检查,如果包含任务条件中需要设定闹钟的会立即完成对当日早上起床闹钟的设置并开启,这样就不用担心假期补班导致的上班迟到或是正常假期被闹钟吵醒啦。

手握非国行的 Android 手机或者 Pixel 机型的小伙伴不妨试试这个小技巧。

> 关注 少数派公众号,解锁全新阅读体验 📰

> 实用、好用的 正版软件,少数派为你呈现 🚀

8
6