上一篇文章《10 种联动+10 个场景,我的 Tasker 自动化实例分享》 发布后的半年时间里,我又结合工作、生活中的需要找到了一些围绕 Tasker 的新玩法,包括:
- 关键词聚合搜索:一键打开 Google、淘宝、京东、拼多多、微博、知乎、B 站、高德、美团等 App 的搜索结果
- 剪贴板内容快速上传至 Flomo:支持二次编辑、支持标签
- 结合小米手环心率监测功能:实现周期多次低心率自动通知家人朋友,附带当前定位信息
- 完成 Todoist 中每天测量体重的任务后自动将其设置成「完成」状态
- 利用钉钉/飞书的群助手 webhook 协议实现消息通知提醒等功能
- 监测剪贴板中链接,自动保存微信文章至印象笔记
- ……
本文就挑选部分配置介绍对应的使用场景和配置思路,部分复杂的配置会提供导入,希望能对你有所帮助。
配合 URL Scheme,打造聚合搜索引擎
功能描述
- 当你在微信里对一家餐厅感兴趣,想进一步了解
- 当你想买一件商品,想在淘宝、京东、拼多多等电商平台看看他们的区别
- 当你看到一个热点事件,想在微博里吃吃瓜
- 当你想查查一本书或电影的评价,想在豆瓣里探探路
- ……
总而言之,当你想更快一点在某个应用中搜索对应关键字时,这些都可以通过自制「聚合搜索」来一键直达。
配置思路
这些带参数的搜索命令主要是利用 Tasker 的「Browser URL」功能和各大 App 的 URL Scheme 协议。比如:
- 淘宝:
taobao://s.taobao.com/search?q=%Search_word
- 京东:
openapp.jdmobile://virtual?params={"des":"productList","keyWord":"%Search_word","from":"search","category":"jump"}
- 拼多多:
pinduoduo://com.xunmeng.pinduoduo/search_result.html?search_key=%Search_word
- B 站:
bilibili://search?keyword=%Search_word
- 知乎:
zhihu://search?q=%Search_word
- 高德:
androidamap://keywordNavi?sourceApplication=softname&keyword=%Search_word&style=2
- 美团:
imeituan://www.meituan.com/search?q=%Search_word
- 微博:
sinaweibo://searchall?q=%Search_word
- 豆瓣:
douban://douban.com/search?q=%Search_word
- Google:
https://www.google.com/search?q=%Search_word
- 1688:
https://m.1688.com/offer_search/-6D7033.html?sortType=pop&keywords=%Search_word&filtId=&p4pCount=4
鉴于微信搜索的结果也日益丰富,所以我也设置了「快速拉起微信搜索界面」的任务。不过由于没有找到微信搜索的 URL Scheme 带参协议,该任务实际上是通过 Shell 命令调用的(需 root):am start com.tencent.mm/.plugin.fts.ui.FTSMainUI
。
同样,我也没有找到 1688 的带参 URL Scheme 协议,所以我直接用了网页版的搜索结果……
依赖配置
- 除「微信搜索」之外,其他都无需 Root。
- 最好用「FV 悬浮球」调用聚合搜索,或者可以将「调用聚合搜索」这个任务放到通知栏里调用,方法:右上角-Preference-Action-Quick Setting Tasks。
参考信息
这些搜索动作要特别感谢 快径-安卓版捷径,快径云端有很多整理好的搜索协议,帮我节省了大量的时间。
巧合的是前不久我派也出了一篇如何寻找 URL Scheme 的文章:URL Scheme 查询指南,很有参考价值,我来补充一下在 Android 上找 URL Scheme 协议的方法:
- 下载对应 App,反编译 apk 文件 得到
AndroidManifest.xml
文件 - 在文件中搜索
Android:scheme
- 组合
scheme://host+path
,比如:<data android:host="www.meituan.com" android:path="/ordercenterlist/" android:scheme="imeituan"/>
- 则美团订单页的 URL Scheme 为:
imeituan://www.meituan.com/orderTab
- 对于搜索类参数,通常不是
q=
,就是keyword=
,可以分别尝试或者去对应网页版看 URL 中是q
还是keyword
。
导入说明
- 导入 Project 文件。
- 调用「初始化搜索引擎列表」任务,选择自己需要的搜索工具。
- 配置 FV 调用/通知栏调用等调用方法。
PS:其实可以参照这个思路在 iOS 上的捷径复刻一个类似的动作,有需要的朋友们可以试试。
配合 Flomo 快捷录入带标签 Memo
功能描述
当你在某个 App 内读到了一段很想摘录的话想要将其上传至 Flomo 时,传统的做法一般是打开 Flomo 然后粘贴编辑。操作方式略为繁琐,而且比较打断阅读体验。
现在你可以通过 Tasker 快速上传了。这套配置目前支持的功能包括:
- 支持对复制内容进行修改
- 支持多选标签
- 支持多个空行自动转换为一个空行。这主要是因为微信中文章通常会采用 3-4 行来分段,复制到 Flomo 中比较视觉效果不太好
配置思路
用户从 %FlomoTag() 中选择标签(可多选) 或者选择新建标签
If(用户选择新建标签):
将新建标签压入 %FlomoTag
EndIf
唤起用户输入面板,默认输入为剪贴板内容
对换行符'\n' '\r\n'分别进行处理
利用 API 发送 HTTP 请求
提示请求结果
这其中比较麻烦的一步是处理换行符,Flomo API 支持的换行符为 \r\n
,但有时剪贴板里内容换行符可能是 \n
。经测试,Android 从微信复制出来的换行符是 \n
,从 Windows 电脑同步剪贴板时的换行符为 \r\n
。
所以需要这一点需要花点功夫分别处理。
依赖配置
- 用「FV 悬浮球」调用比较方便,也可以仿照上例通过通知栏调用。
参考信息
导入说明
- 导入 Project
- 编辑「初始化 Flomo 信息」命令,Array 类型的
%FlomoTag()
请赋值在手机上可选的标签,空格为分隔符;%FlomoAPI
则从https://flomoapp.com/mine?source=incoming_webhook
赋值 - 配置 FV 调用/通知栏调用等调用方法
配合 Notify&Fitness for Mi Band 实现心率报警通知
功能描述
之前和朋友聊起独居的安全问题,意识到一个人住遇到问题连个打电话的人都没有。后来就尝试用 Tasker、NF For Mi Band 配合小米手环写了个心率报警通知。虽然不能完全解决问题,但总归聊胜于无吧。
具体实现功能包括:
- 报警判据为某一个周期内,低于警戒心率值的次数超过某一值
- 提供经纬度信息,并附带高德地图直达 URL。示例地址链接:https://uri.amap.com/marker?position=113.4015604,23.1335252&name=zlx_phone_loc&src=phone_GPS&coordinate=wgs84&callnative=0
鉴于手环的光学心率监测准确度并不能达到医用水准,报警判据选择了统计周期低心率次数;同样也是基于此,报警方式目前只设置成了转发到企业微信,并没有设置成打电话等高触达率的方案,如果需要可以自行设置。
配置思路
依赖配置
- 佩戴有心率监测功能的小米手环
- 安装 Notify&Fitness For Mi Band,并打开 Tasker 支持
- 将家人朋友拉到自己的企业微信中,并在企业微信 App 中勾选「允许在微信接收应用消息」
- 如果需要附带地理位置信息,那么未 root 的手机 GPS 需处于常开状态并允许 Tasker 随时调用;已 root 的手机 GPS 无需常开
参考信息
导入说明
- 导入 Project
- 打开「心率异常报警操作」,修改 JavaScriptlet 代码中的企业微信变量:
ID
,SECRET
,AGENTID
,并酌情修改文字。详情请参考上文 - 打开「心率监控初始化」任务,依据自己平时的平均心率、最低心率设定警戒心率、低心率警戒次数。
- 运行「心率监控初始化」任务
导入后,可以先将报警心率设置成 180 bpm 进行测试 :)
配合 Todoist 自动完成周期性任务
功能描述
在《10 种联动+10 个场景,我的 Tasker 自动化实例分享》中我曾写过利用 NFC 打开 NF For Mi Band 的体重秤界面测量体重这个 Profile。后来发现虽然测量体重简单了,但是我总是忘记在 Todoist 把这个任务勾掉。
于是花了些时间查了 Todoist 的 API 将其与 Tasker 联动,实现从测体重到完成任务全流程的自动化。
配置思路
If(当前界面为 NF & 体重数据测量完成)
判断「测体重」任务的 due date 是否早于或等于今天
If (早于或 等于今天)
完成「测体重」任务
EndIf
EndIf
确认体重数据测量完成
因为打开 NF 的体重秤界面实际上并不能代表体重完全测量完成,所以我辅助了一个 Logcat Entry
监测:
Component:BluetoothGatt
Filter:setCharacteristicNotification() - uuid: 0000ffe4-0000-1000-8000-00805f9b34fb enable: true
不过这一步因人而异,也可以不设置。
判断「测体重」任务 Due Date 是否不晚于今天
这个主要避免多次重复完成任务使得「测体重」的 Due Date 被推后很多天,利用 js 代码实现。
其他
Todoist 有两套 API,一个是 Rest API,一个是 Sync API。Sync API 支持的功能会更多一些,但不知道为什么我用 Sync API 里的 Complete item 来完成任务时总是报错,而且没搜到可行的参考解决方案。其 Response 内容为:
{
"full_sync": true,
"sync_status": {
"a74bfb5c-5f1d-4d14-baea-b7415446a871": {
"error": "Sync item already processed. Ignored",
"error_code": 37,
"error_extra": {},
"error_tag": "ALREADY_PROCESSED",
"http_code": 400
}
},
"sync_token": "ces6WxhJSiaxEOquWoHazto3K5sJRSpqhp60TUBTkd3xK422Sffd44LYImCZRp1EpQyQWu7_AIjPAhVKSdwkpfLttfi2QD1_5JWlv5AglyYNJpU",
"temp_id_mapping": {}
}
还望知道的朋友能够指点一下,感谢。
鉴于此,最后我都是用 Rest API 来完成 Todoist 的全部操作的。
参考信息
Overview – REST API Reference | Todoist Developer
导入说明
- 导入 Project
- 在 Todoist 的 网页版 中点开一个周期性任务,观察 URL 以此获得
Task id
- 在 Integrations 中找到 Todoist 的 token
- 编辑「初始化 Todoist」任务,填写
task id
和Todoist token
- 选择其他触发条件,配置自己的 Profile
PS:手机上可以用「FV 悬浮球」配合 Todoist 客户端快速创建任务,所以没必要在手机上用 API 创建任务。
但在电脑上通过 API 创建任务还是要比客户端方便一些的,可以参考: 使用 Quicker 配合 Todoist API 创建 Task 。
配合飞书/钉钉群助手实现消息推送
功能描述
之前的工作有一段时间需要在一天中不同时段提醒不同的人值班,钉钉自带的值班群没办法满足需求。搜索解决方案的过程中发现钉钉(飞书)群自带支持 Webhook 协议的群助手,就写了 JS 代码用 Tasker 实现了分时段自动提醒功能。
当然,如果有需要你也可以将其他消息转发到钉钉/飞书群,这里更多想表达的还是 Tasker 和钉钉、飞书还有之前的企业微信的联动性。
配置思路
这里就以转发短信为例,展示发到钉钉和飞书的 js 代码,你可以根据需要酌情修改。
钉钉和飞书创建群助手的过程和代码都类似:
- 在企业内部创建一个内部群
- 设置-智能群助手-添加机器人-自定义
- 记下 Webhook 的地址,自定义关键词设置为
短信
//下面的变量值需要修改为钉钉群助手的值
var webhook = "填写自己的 webhook 地址,保留双引号";
//定义post方法
function posthttp(url, data) {
var xhr = new XMLHttpRequest();
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
//flash(this.responseText);
}
});
xhr.open("POST", url, false);
xhr.setRequestHeader("Content-type","application/json");
xhr.send(data);
return xhr.responseText;
}
//发送消息(文本)
var SMSRF = global('SMSRF');
var SMSRB = global('SMSRB');
var SMSRT = global('SMSRT').replace(/\./, ":");;
var SMSRD = global('SMSRD');
var pnum = global('PNUM').substring(3);
var CONTENT = "发件人: " + SMSRF + "\n收件人:" + pnum + "\n时间: " + SMSRT + ", 日期: " + SMSRD + "\n短信内容: " + SMSRB;
var message = JSON.stringify({"msgtype": "text",
"text": {"content": CONTENT},
"at": {"isAtAll": false} });
posthttp(webhook, message);
参考信息
配合印象笔记自动保存微信文章
功能描述
不知道是因为使用了 Android 11,还是 Webview 卸载了更新,亦或是印象笔记终于修了 Bug,总之 Android 端印象笔记万年剪藏失败的 Bug 终于没了——2020 年微信取消了保存公众号文章的接口后就一直想写一个用客户端剪藏的 Profile,但由于这个 bug,没办法完成,现在终于可以了。
现在达成的效果就是:复制微信文章链接,就会有弹窗询问是否保存至印象笔记。
配置思路
If(%CLIP 符合正则表达式 https://mp\.weixin\.qq\.com/s/.* ):
询问是否保存到印象笔记
If (保存):
Send Intent:
Action:android.intent.action.SEND
Mime Type:text/plain
Extra:android.intent.extra.TEXT: %CLIP
Package:com.yinxiang
Target:Activity
EndIf
EndIf
其它配置
这还有一些其他的 Profile,虽然不值得完整解析,但简单介绍一下也希望能给大家一点启发吧。
- 自动打开淘宝联盟领券:与保存印象笔记文章类似,检测到淘宝链接就打开淘宝联盟看看有没有优惠券
- 充电时自动打开 AccuBattery,退出时自动回归桌面:尽管给予了 AccuBattery 很多防被杀权限,但它还是时不时被 MIUI 杀掉,所以干脆就设置了这样一个 Profile
- 微信消息手环通知去除「条数+人名」:不论是「小米运动」还是「NF For Mi Band」,里面自带的微信通知都不能处理到多条微信通知堆在一起时的「[条数]人名」信息。所以干脆直接用 Tasker 正则处理一遍微信通知,再利用 NF 的 Tasker 插件发到手环上,舍弃 App 自带的微信通知。
往期填坑
- 在《10 种联动+10 个场景,我的 Tasker 自动化实例分享》中我曾请教怎么用 Tasker 直接调用输入法的数字模式。前些天意外发现答案其实就在
Input Dialog
的Input Type
选项里,选择「小数(数字代码:8194)」即可 - 在《10 种联动+10 个场景,我的 Tasker 自动化实例分享》中 NF for Mi Band 中的
com.mc.miband1.ui.main10.health.WeightActivity
在一次更新后已变成「未导出的活动」,无法在未 Root 的手机上直接打开。root 的手机可以通过 shell 命令打开:am start -n com.mc.miband1/com.mc.miband1.ui.main10.health.WeightActivity
结语
入手玩 Tasker 半年多,也给大家留一些查资料的 Tips 吧
- 应用如果是国外的,用英文查效果会好很多。
- 善于利用搜索命令,比如利用「x」搜索必须包含「x」 的内容。
- Tasker 的中文内容在酷安会多一些,可惜酷安很多内容没被 Google 收录,自带的搜索功能又着实有点简陋。建议不要用全局搜索,直接去相关 App 下去搜评论。
希望对大家有所帮助,以上!
本文所有配置 下载地址。
关联阅读:
- 10 种联动+10 个场景,我的 Tasker 自动化实例分享
- 用 Tasker 玩转电源菜单
- 随手截屏用完当删:用 Tasker 做好 Android 截图管理
- 简单的 Tasker 上手实例:及时回应勿扰模式下的重要来电
- 简单的 Tasker 上手实例:自制简易游戏模式
> 下载少数派 客户端 、关注 少数派公众号 ,了解更妙的数字生活 🍃
> 想申请成为少数派作者?冲!