组合动作作为Quicker的重要部分之一,实现了大量实用的动作功能。截至2019年7月底Quicker群友Marcus的统计,组合动作已经占据动作库中动作数量的47.53%,最受欢迎的动作排行榜前50位中,几乎100%为组合动作。
显然组合动作是非常强大的,但是,对于没有编程概念的一般用户来讲,组合动作的上手有一定的难度。动作库虽然解决了一般用户常用的功能需求,但对于更私有的需求,可能还是需要用户自己对动作库的共享动作进行修改,甚至自己创建私有的组合动作。目前,Quicker的文档已经日渐完善,大部分的疑问可以在文档中找到答案,但在创建你的组合动作之前,还有一些基础的概念需要理解,以便迅速构建出组合动作的轮廓框架,少走一些弯路。
组合动作的基本结构
组合动作的结构类似于一般的脚本/程序,为“输入处理输出”,数据通过载体流转。简单的需求,可以通过一次“输入处理输出”达到预期效果。如果一次无法达到,则需要多个“输入处理输出”嵌套,即把上个流程的输出作为下个流程的输入进行再处理。
输入:即获取需要处理的原始资料。好比做饭,我们需要先获取到米,才能进行淘米、加水、煮饭的操作。Quicker中主要接受的输入为文本、图片、位置(文件路径、鼠标坐标)等。在Quicker的组合动作模块中,有一部分是专门用来获取外部的待处理数据的,比如“获取选中的文本”,即获取到鼠标在其他软件/网页中选中的文本。
载体:即变量,用于临时存储输入获得的数据以及处理后获得的结果。还是拿做饭这个例子来说,我们拿到米后要装入容器中才能继续下一步的淘米煮饭等操作,在quicker中,这个容器就是变量。每个变量都需要一个名字来区分,不同用途的变量有不同的类型。比如煮饭的容器叫锅,锅的类型是金属容器,而盛饭的容器叫碗,碗的类型是陶瓷或玻璃的容器。不同类型的容器对应适用于不同类型的操作。
处理:即对获取到的数据进行具体的处理。在做饭这个例子中,就是淘米、煮饭这些,可以说是一个具体的过程——把获取到的米在水中浸泡,用手揉搓,倒掉浑浊的水直到清澈——这样的一个过程。在一般的编程中,需要对过程进行分解,通过一行行代码处理每一个小的步骤直到达到效果。而在Quicker中,各个模块本身已经在一定程度上集成了多个小步骤,根据各个模块的定义,我们将获取到的数据传递给处理模块,模块处理后存储在变量中进行下一个模块处理或直接输出。因此,通常处理模块分为三个部分,第一部分是选择需要输入的数据所在的变量,第二部分是选择具体的处理方法,第三部分是选择处理完成后结果保存的变量或直接输出。
输出:分为广义的输出和狭义的输出。广义的输出包括了之前我们在“处理”中所说的保存处理结果到变量。而这里我们主要讲狭义的输出,即将Quicker处理的结果发送到Quicker软件之外或通过用户界面展示结果,这样我们才能真正利用到Quicker处理的结果——正如做好饭后盛出来才能吃。在组合动作模块中,有一部分模块是专门用于输出结果的,比如“写入剪贴板”,即将结果保存到系统剪贴板中供我们在其他软件/网页中粘贴。
经过“输入处理输出”,这样一个简单的组合动作就完成了。实际上再复杂的组合动作也脱离不了这样的基本结构,只是多个这样的基本结构嵌套组合,构成一个功能强大的组合动作罢了。当然,我们也许会遇到只有部分结构的特殊情况,比如生成随机数,就不需要输入直接处理出结果输出(但实际上对于随机数生成条件的设置也是一种“输入”),然而当明白了基础结构之后,我们在创建组合动作的时候就有了框架,不怕一头雾水无从下手了,需要做的只是把预期的结果一步步分解,直到满足Quicker组合动作各模块能够完成的粒度要求,再将它们一个个根据逻辑组合起来。
实例:最后讲一个简单的例子,比如我们的需求是“选择网页/软件中一段英文,将其中的小写字母全部转换成大写字母后,显示出来供查看或复制”。
首先,我们“输入”的内容是网页/文件中选中的文字,我们知道“获取选中的文本”这个模块可以完成。获取到的是文本,所以我们决定把获取的内容储存到inText这个文本变量里。
然后,我们需要的“处理”是小写字母转大写,这样的功能在”文本处理“模块中可以找到,我们把inText里保存的获取到的原始文本传递给“文本处理”模块,并在具体的处理方法中选择“英文转大写”,我们决定将处理的结果保存在outText这个文本变量中。
最后,我们需要“输出”outText中保存的结果,根据我们的需求“查看或复制”,组合模块中“显示文本”能够满足,所以将outText传递给“显示文本”模块,并设置显示的具体方式(标题/显示位置等)。
这样一个简单的组合动作就完成了。
测试一下,没有问题,需求满足,撒花。
希望本文对毫无编程基础的Quicker用户创建组合动作提供一点点帮助,把Quicker用得更6,提高工作效率,摸鱼摸得心安理得。等我哪天拖延症好一点可能还会继续更新...的吧。
另外欢迎使用我创建的动作:WilsonXuwx的动作一览
谢谢。
Xmind