「Workflow」短信群发器v2 构想及成品解析

引言

初入大学的时候,会有许多社团或者团委学生会招新。抱着好奇心以及在大学期间努力变成“现充”的愿想 (已经破灭),就报名了几个组织。不久便收到了他们的面试通知短信。看到来信中有我的名字,想到:他们肯定是用复制黏贴删除编辑的蠢方法吧,自己以后一定不能这样。自此便暗暗想到要用 Workflow 来做一个「半自动化」「变量支持」短信群发器(为何称之为「半」?因为就像机枪中的半自动模式,自动填写短信文本,按一下 send 就发送一条,理论上支持无限变量个数)吃鸡吃多了呵呵呵...

「Workflow」短信群发器v2 构想及成品解析_第1张图片
短信

这个构想一直存在于我的脑海中,直到我看到我身边的舍友真的如我想象一般,重复着:复制-粘贴-删除-编写-校对-发送,这么一个无聊而且效率极低的过程,我才决定将这个构想转化成成品。

我不会告诉你我是花了4周的大学计算机课才把v2做出来的...

短信群发v2演示视频

如果无法观看请Safari打开

构想

最初(v1)的构想是比较简单的,就是将wf做成两个核心板块,分别为模板板块和数据板块。这样分的原因有三:

  1. 可以将「复制-粘贴-删除」步骤省去
  2. 可以将「编写-校对」步骤统一时间进行
  3. 可以将数据编辑过程从移动端中解放出来,你只需将编辑好的板块复制粘贴到wf的文本框中

v1版本的实现只用了一节大机课,这使我心生膨胀。但在后来重新审视的过程中,发现了这个wf的一些缺点,这让我萌生出制作v2的念头。

缺点:

  1. 短信文本中只有一个变量「姓名」
  2. wf中拆分数据的动作运用有点变扭,不够优雅

因为十分简单,本文就不对v1作解析了,只放出wf链接:短信群发v1

后来v2是针对v1中的缺点进行改进。
先给出v2的wf图片和链接以便在阅读的过程中参考:

图片、v2链接


2017-12-2更新:关于提高「数据模板」输入效率的补充


v2解析

这里我会将整个wf分解成一个个实现片段进行解析。
wf中出现个别英文变量的说明:
模板文本=text
数据板块=all
替换的文本=rplword
模板中被替换的变量符号=value
编辑完成的短信文本=t

1. 数据的分割

对「数据的分割」进行解析时,首先我们需要看一下数据是怎么样排列的,这里数据储存的格式为:

电话号码(11位),变量1,变量2,变量3...
电话号码*(11位),变量1*,变量2*,变量3*...
...

因此需要进行两个不同的分割,分别是:通过「行」分割、通过「半角逗号」分割。我们首先通过「行」分割,来获取单条信息的数据,然后通过「半角逗号」分割,来获取单条信息数据中的元素(电话号码以及各个变量变量)
注:当「all」经过「Split Text」动作后就会被分成一块一块,而「Repeat with Each」就会分别对每一块按顺序执行其内包含的动作。

「Workflow」短信群发器v2 构想及成品解析_第2张图片
两个分割

2. 元素的区别和分类

为了将wf的判断过程简化,我将电话号码放在第一位,并且限定它为11位的数字。所以对传递下来的每个元素进行「If」判断,如果是11位的数字则设为「电话」变量;否则就是普通变量,通过「Add to Variable」将其添加到「x」中。在最后对单条信息处理完时,我们需要将「x」设置为「Nothing」,让它清空来接受新的数据。(图中没有表现)
注:「Add to Variable」并不是将传递给它的数据简单地「糅合」在一起,而是「分隔开」且「有序」地储存在「变量」中,可以将其理解为编程中的「List」数据类型。这个特性为后来的变量处理简化了很多。

「Workflow」短信群发器v2 构想及成品解析_第3张图片
元素的区别和分类

其实这里是可以做得更优雅,即将第一位元素直接设置为电话变量,这样就可以不用对电话号码的格式进行限定(有些电话号码格式不是11位或电话号码中带有连字符或国家代码)。只不过我懒,因此就不作改动了。


3. 文本变量的有序替换

获取「x」对其下接「Repeat」,实现文本变量的有序替换。因为变量都是按照顺序来的,即:

「%n」→「变量n」

所以「n」的「有序递增」就成为这个部分的关键(图中体现为「s」)


「Workflow」短信群发器v2 构想及成品解析_第4张图片
「n」的「有序递增」

我们知道在「Set Variable」中的变量名称是不能插入另外一个变量的,这就需要新建一个Text框,在框内写入能够递增的「s」来曲线救国,每一次执行「Repeat」,「s」就会 +1s ,藉此实现「%n」的递增。与上一部分的「x」同理,在进行新的「Repeat」之前都需要对「s」进行还原,即重新设置为 1 。

这里运用「If」和两个「Replace Text」是为了避免文本替换对短信模板的污染。「Replace Text」的用法不赘述,看仔细看wf流程就会理解。

因为这个部分的图太长,所以请点击链接观看:文本变量的有序替换


最后

本wf是凭借着我对它浅薄的理解做出来的,过程说实话还是有点辛苦的,但如果能起到抛砖引玉的效果,我也是会十分地开心。Workflow是个万能工具箱,而你就就是一个木匠,请不要吝啬自己的脑洞以及智慧,拿上称手的工具,创造出属于自己的杰作吧。

你可能感兴趣的:(「Workflow」短信群发器v2 构想及成品解析)