聚合搜索、心率报警、Flomo 快速记录……我的 Tasker 自动化实例分享
上一篇文章《10 种联动+10 个场景,我的 Tasker 自动化实例分享》 发布后的半年时间里,我又结合工作、生活中的需要找到了一些围绕 Tasker 的新玩法,包括:
本文就挑选部分配置介绍对应的使用场景和配置思路,部分复杂的配置会提供导入,希望能对你有所帮助。
总而言之,当你想更快一点在某个应用中搜索对应关键字时,这些都可以通过自制「聚合搜索」来一键直达。
这些带参数的搜索命令主要是利用 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
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
https://www.google.com/search?q=%Search_word
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 协议,所以我直接用了网页版的搜索结果……
这些搜索动作要特别感谢 快径-安卓版捷径,快径云端有很多整理好的搜索协议,帮我节省了大量的时间。
巧合的是前不久我派也出了一篇如何寻找 URL Scheme 的文章:URL Scheme 查询指南,很有参考价值,我来补充一下在 Android 上找 URL Scheme 协议的方法:
AndroidManifest.xml
文件Android:scheme
scheme://host+path
,比如:<data android:host="www.meituan.com" android:path="/ordercenterlist/" android:scheme="imeituan"/>
imeituan://www.meituan.com/orderTab
q=
,就是 keyword=
,可以分别尝试或者去对应网页版看 URL 中是 q
还是 keyword
。PS:其实可以参照这个思路在 iOS 上的捷径复刻一个类似的动作,有需要的朋友们可以试试。
当你在某个 App 内读到了一段很想摘录的话想要将其上传至 Flomo 时,传统的做法一般是打开 Flomo 然后粘贴编辑。操作方式略为繁琐,而且比较打断阅读体验。
现在你可以通过 Tasker 快速上传了。这套配置目前支持的功能包括:
用户从 %FlomoTag() 中选择标签(可多选) 或者选择新建标签
If(用户选择新建标签):
将新建标签压入 %FlomoTag
EndIf
唤起用户输入面板,默认输入为剪贴板内容
对换行符'\n' '\r\n'分别进行处理
利用 API 发送 HTTP 请求
提示请求结果
这其中比较麻烦的一步是处理换行符,Flomo API 支持的换行符为 \r\n
,但有时剪贴板里内容换行符可能是 \n
。经测试,Android 从微信复制出来的换行符是 \n
,从 Windows 电脑同步剪贴板时的换行符为 \r\n
。
所以需要这一点需要花点功夫分别处理。
%FlomoTag()
请赋值在手机上可选的标签,空格为分隔符;%FlomoAPI
则从 https://flomoapp.com/mine?source=incoming_webhook
赋值之前和朋友聊起独居的安全问题,意识到一个人住遇到问题连个打电话的人都没有。后来就尝试用 Tasker、NF For Mi Band 配合小米手环写了个心率报警通知。虽然不能完全解决问题,但总归聊胜于无吧。
具体实现功能包括:
鉴于手环的光学心率监测准确度并不能达到医用水准,报警判据选择了统计周期低心率次数;同样也是基于此,报警方式目前只设置成了转发到企业微信,并没有设置成打电话等高触达率的方案,如果需要可以自行设置。
ID
,SECRET
,AGENTID
,并酌情修改文字。详情请参考上文导入后,可以先将报警心率设置成 180 bpm 进行测试 :)
在《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 被推后很多天,利用 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
Task id
task id
和 Todoist token
PS:手机上可以用「FV 悬浮球」配合 Todoist 客户端快速创建任务,所以没必要在手机上用 API 创建任务。
但在电脑上通过 API 创建任务还是要比客户端方便一些的,可以参考: 使用 Quicker 配合 Todoist API 创建 Task 。
之前的工作有一段时间需要在一天中不同时段提醒不同的人值班,钉钉自带的值班群没办法满足需求。搜索解决方案的过程中发现钉钉(飞书)群自带支持 Webhook 协议的群助手,就写了 JS 代码用 Tasker 实现了分时段自动提醒功能。
当然,如果有需要你也可以将其他消息转发到钉钉/飞书群,这里更多想表达的还是 Tasker 和钉钉、飞书还有之前的企业微信的联动性。
这里就以转发短信为例,展示发到钉钉和飞书的 js 代码,你可以根据需要酌情修改。
钉钉和飞书创建群助手的过程和代码都类似:
短信
//下面的变量值需要修改为钉钉群助手的值
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,虽然不值得完整解析,但简单介绍一下也希望能给大家一点启发吧。
Input Dialog
的 Input Type
选项里,选择「小数(数字代码:8194)」即可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 吧
希望对大家有所帮助,以上!
本文所有配置 下载地址。
关联阅读:
> 下载少数派 客户端 、关注 少数派公众号 ,了解更妙的数字生活 🍃
> 想申请成为少数派作者?冲!
© 本文著作权归作者所有,并授权少数派独家使用,未经少数派许可,不得转载使用。