Tasker 的这些功能,被您「冷落」了吗

说明:本篇所罗列的功能会不定期增加,已准备好 8 个本人认为的冷门功能,会陆续分享出来

前言

本篇旨在向 Tasker 用户分享一些鲜为人知的功能,以让更多的人在编写配置时灵活地用上它们。虽然这些功能在 Tasker 用户指南中也有提及,只不过大多 Tasker 用户都未曾了解过它们,我想,当中有些功能或许连 Tasker 高级用户都不大清楚。其实,别小瞧这些冷门功能,通过它们,往往能相当简易地实现我们的需求。

功能列表

~R / !~R

注:仅适用于 5.0+ 版本

有用过条件判断功能的 Tasker 用户都知道,~R / !~R 操作符的匹配类型是正则表达式,也知道它可用于动作的 If 条件以及状态条件「变量值(Variable Value)」中。

从 5.0 版本起,Tasker 新增了一个功能,『凡是可以进行「简单匹配」的地方,只要在表达式前加上 ~R 或 !~R,便会变成正则表达式匹配』。

  • 使用方法

    • 状态事件条件中文本参数的匹配
      左图:简单匹配 右图:正则表达式匹配
    • 获取可匹配的数组索引
      左图:简单匹配 右图:正则表达式匹配
  • 实用之处

    • 匹配更精准,简单匹配只能粗略匹配
    • 通过文本参数的匹配,可提前判断是否满足触发条件,而无需在条件触发后再从「进入任务」中判断
  • 使用场景

    • 用于状态或事件条件中,要当文本参数满足指定的正则式,才允许触发。比如短信、剪贴板等条件的触发
    • 用于数组索引的匹配,以返回唯一索引(或 0 ,即无索引)

温馨提示:如果配置需在 5.0 以下版本中使用,应将该功能改由其他方法实现

%evtprm

%evtprm事件(Event)条件触发后传递至「进入(Entry)」任务的局部数组变量,相信很多人都接触过它,但是,要如何快速确定 %evtprm 数组中每个元素的含义呢,我想,应该只有少数人才知道。比如说,当微信通知的事件触发时,你能否快速确定代表通知内容的变量是 %evtprm2 还是 %evtprm3 呢?

在 Tasker 用户指南中有一句话提到,『%evtprm 数组元素的顺序,与事件参数(项)的顺序是一致的』,其意思如下图:

通知事件中,每个 %evtprm 数组元素所对应的事件参数(项)

由此,便可快速知道, %evtprm2%evtprm3 分别代表了通知的标题和内容。

  • 实用之处
    • 但凡事件触发的任务,都能够通过 %evtprm 获得每个事件参数项的值,以便根据这些值做出不同的决策
  • 使用情景
    • 可以的话,凡是在事件触发的任务中,都应使用 %evtprm 变量
      例如,当在文件类的事件中指定了文件(夹)路径后,在与其关联的进入任务中,不应再手动设置一个同个路径的变量,应直接使用 %evtprm1 变量(其值代表了所指定的路径)。这样,你编写出来的配置就更有水平了。
变量引用

以下为变量引用的说明(摘自本人翻译的 Tasker 中文用户指南变量部分)

可以通过将一个或多个额外的 % 符号添加到变量名称的开头来间接引用变量。例如:

      [变量设置, %colour, red]  
      [变量设置, %varname, colour]  
      [弹出提示, %%varname]

... 将显示 red

使用这种表示法,可以分配那些变量名称事先未知的变量:

      [读取文件, variablename.txt, 到变量, %varname]
      [变量设置, %%varname, red]

变量名称存储在文件 variablename.txt 中的变量将设置为 red

您可以根据需要深层嵌套引用(例如,%%%%var),但精神上的压力和错误肯定也会随之而来。

如果(引用)链的任一部分具有无效的变量名称,则都将返回原始引用。在第一个示例中,如果 %varname 设置为 !!!,那么显示的将是 %%varname,而不是 red

  • 使用情景
    • 批量设置或清空全局(或局部)变量的值,无需逐个操作,可简化任务
      左图:逐个清空 右图:批量清空
获取任务中的局部变量

在动作「测试 Tasker(Test Tasker)」中有个局部变量(Local Variables)的类型,能用来存储正在运行任务中所有(该动作执行前的)已赋值的局部变量,如下动图所示:

获取由「意图接收」条件触发的任务的所有局部变量

本功能可对配置的编写起到一个辅助性的作用,比如,我想知道某个接收意图的 extras 参数的变量名称以用于任务的编写上,便可通过此方法获知(从上动图可知,%newrssi 为意图所带的 extra 参数)。

  • 使用情景

    • 收到意图时,可获知 extras 等参数的变量
    • 可获知当插件条件(Event)触发时的插件变量
  • 其他
    有需要的 Tasker 用户,可导入上述动图中的任务 getLocalVariablesuri / xml),以获得任务的所有局部变量

递归变量

注:以下内容仅为个人经验总结(Tasker 用户指南似乎未提及此功能),若有错误之处,还望各位指出

递归变量(Recurse Variables)是动作「变量设置(Variable Set)」的一个可选参数(如下图所勾选的项目)

它的作用是递归替换所有已赋值的变量,效果如下面的例子所示:

假设变量 %var 设置为 It's %season,变量 %season 设置为 winter
那么 [变量设置, %sentence, %var]
在「递归变量」参数不勾选的情况下,结果会是 It's %season
反之,则为 It's winter
  • 递归替换变量的方式
    一般来说,当 Tasker 在文本参数中遇到变量名时,会从左至右依次替换每个合法的变量名。那么,到底怎么才算是一个合法的变量名呢?

    参阅 Tasker 用户指南的变量部分可知,一个合法的变量名称必须以 % 字符开头,并至少包含 3 个字母、数字或下划线字符(其中下划线不能作为开头或结尾)。根据该定义以及一些特殊情况,可将变量划分为以下三类:

    • 常规变量
      %fruit, %cars1, %cars2, %1_a
      
    • 数组变量
      %cars(1), %cars(2)
      
    • 嵌套变量
      %%var
      %%names1(先替换 %names1,再替换嵌套 %)
      %%names(1)(先替换 %names,再替换嵌套 %,然后将最后一个嵌套变量与索引值组合为数组变量,再替换)
      

    当 Tasker 在文本参数中遇到以上三种类型的变量时,都将作为一个整体进行替换,即一次便会替换完毕。

    通过下面的例子,可更清楚地理解递归变量的替换过程。

    假设
    %varname = name
    %varname1 = name
    %name1 = 一年级
    %name11 = 一年级一班
    %grade = 1
    %class = 1
    
    那么
    - %name%grade%class
       0: %name11
       1: 一年级一班
    
    - %name(%grade)%class
       0: 一年级1
    
    - %name(%grade%class)
       0: 一年级一班
    
    - %name1%class
       0: 一年级1
    
    - %%varname%grade%class
       0: %name11
       1: 一年级一班
    
    - %%varname(%grade)%class
       0: 一年级1
    
    - %%varname(%grade%class)
       0: 一年级一班
    
    - %%varname1%class
       0: %name1
       1: 一年级
    
    说明:
    - 上面的数字(0/1)代表着递归替换的次数
    - 次数为 0 表示无需递归便可获得的结果,这和不勾选「递归变量」参数时获得的结果相同
    
  • 使用情景

    • 获取索引值为双位数(其中的一位数用变量来表示)的数组变量
      文章「从剪贴板里保存 Tasker 配置文件」中所提供的配置便是采用了「递归变量」的功能,以下为简化后的例子:

      A1: Array Set [
            Variable Array:
              %configs
            Values:
              project=prj
              profile=prf
              scene=scn
              task=tsk
          ]
      A2: Variable Set [
            Name:
              %size
            To:
              %configs(#)
          ]
      A3: For [
            Variable:
              %index1
            Items:
              1:%size
          ] 
      A4: Variable Split [
            Name:
              %configs(%index1)
            Splitter:
              =
          ]
      A5: Variable Set [
            Name:
              %types(%index1)
            To:
              %configs(%index(1)1)
            Recurse Variables:
              On
          ]
      A6: End For 
      A7: Flash [
            Text:
              %types()
          ]
      
      说明:
      - A5 动作勾选了「递归变量」
      - A5 动作中的数组索引为什么要用 %index(1)1 来表示
        原理可参看文章(https://www.jianshu.com/p/60853dc4105c)中字符串组合部分
      

更新日志

  • 2/10/2019
    - 新增 递归变量 功能
  • 1/30/2019
    - 新增 变量引用 功能
    - 新增 获取任务中的局部变量 功能
  • 1/26/2019
    - 新增 %evtprm 功能
  • 1/24/2019
    - 发布

其他

作者:sung
邮箱:sdfsung@gmail.com

原创内容,转载请注明出处

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容