引言
初入大學(xué)的時候赚抡,會有許多社團(tuán)或者團(tuán)委學(xué)生會招新掷匠。抱著好奇心以及在大學(xué)期間努力變成“現(xiàn)充”的愿想 (已經(jīng)破滅),就報名了幾個組織据忘。不久便收到了他們的面試通知短信鹦牛。看到來信中有我的名字勇吊,想到:他們肯定是用復(fù)制黏貼刪除編輯的蠢方法吧曼追,自己以后一定不能這樣。自此便暗暗想到要用 Workflow 來做一個「半自動化」「變量支持」短信群發(fā)器(為何稱之為「半」汉规?因為就像機(jī)槍中的半自動模式礼殊,自動填寫短信文本,按一下 send 就發(fā)送一條针史,理論上支持無限變量個數(shù))吃雞吃多了呵呵呵...
這個構(gòu)想一直存在于我的腦海中晶伦,直到我看到我身邊的舍友真的如我想象一般,重復(fù)著:復(fù)制-粘貼-刪除-編寫-校對-發(fā)送啄枕,這么一個無聊而且效率極低的過程婚陪,我才決定將這個構(gòu)想轉(zhuǎn)化成成品。
我不會告訴你我是花了4周的大學(xué)計算機(jī)課才把v2做出來的...
短信群發(fā)v2演示視頻
如果無法觀看請Safari打開
構(gòu)想
最初(v1)的構(gòu)想是比較簡單的频祝,就是將wf做成兩個核心板塊泌参,分別為模板板塊和數(shù)據(jù)板塊。這樣分的原因有三:
- 可以將「復(fù)制-粘貼-刪除」步驟省去
- 可以將「編寫-校對」步驟統(tǒng)一時間進(jìn)行
- 可以將數(shù)據(jù)編輯過程從移動端中解放出來智润,你只需將編輯好的板塊復(fù)制粘貼到wf的文本框中
v1版本的實現(xiàn)只用了一節(jié)大機(jī)課及舍,這使我心生膨脹未辆。但在后來重新審視的過程中窟绷,發(fā)現(xiàn)了這個wf的一些缺點,這讓我萌生出制作v2的念頭咐柜。
缺點:
- 短信文本中只有一個變量「姓名」
- wf中拆分?jǐn)?shù)據(jù)的動作運用有點變扭兼蜈,不夠優(yōu)雅
因為十分簡單,本文就不對v1作解析了拙友,只放出wf鏈接:短信群發(fā)v1
后來v2是針對v1中的缺點進(jìn)行改進(jìn)为狸。
先給出v2的wf圖片和鏈接以便在閱讀的過程中參考:
圖片、v2鏈接
2017-12-2更新:關(guān)于提高「數(shù)據(jù)模板」輸入效率的補(bǔ)充
v2解析
這里我會將整個wf分解成一個個實現(xiàn)片段進(jìn)行解析遗契。
wf中出現(xiàn)個別英文變量的說明:
模板文本=text
數(shù)據(jù)板塊=all
替換的文本=rplword
模板中被替換的變量符號=value
編輯完成的短信文本=t
1. 數(shù)據(jù)的分割
對「數(shù)據(jù)的分割」進(jìn)行解析時辐棒,首先我們需要看一下數(shù)據(jù)是怎么樣排列的,這里數(shù)據(jù)儲存的格式為:
電話號碼(11位),變量1漾根,變量2泰涂,變量3...
電話號碼*(11位),變量1*辐怕,變量2*逼蒙,變量3*...
...
因此需要進(jìn)行兩個不同的分割,分別是:通過「行」分割寄疏、通過「半角逗號」分割是牢。我們首先通過「行」分割,來獲取單條信息的數(shù)據(jù)陕截,然后通過「半角逗號」分割驳棱,來獲取單條信息數(shù)據(jù)中的元素(電話號碼以及各個變量變量)
注:當(dāng)「all」經(jīng)過「Split Text」動作后就會被分成一塊一塊,而「Repeat with Each」就會分別對每一塊按順序執(zhí)行其內(nèi)包含的動作农曲。
2. 元素的區(qū)別和分類
為了將wf的判斷過程簡化蹈胡,我將電話號碼放在第一位,并且限定它為11位的數(shù)字朋蔫。所以對傳遞下來的每個元素進(jìn)行「If」判斷罚渐,如果是11位的數(shù)字則設(shè)為「電話」變量;否則就是普通變量驯妄,通過「Add to Variable」將其添加到「x」中荷并。在最后對單條信息處理完時,我們需要將「x」設(shè)置為「Nothing」青扔,讓它清空來接受新的數(shù)據(jù)源织。(圖中沒有表現(xiàn))
注:「Add to Variable」并不是將傳遞給它的數(shù)據(jù)簡單地「糅合」在一起,而是「分隔開」且「有序」地儲存在「變量」中微猖,可以將其理解為編程中的「List」數(shù)據(jù)類型谈息。這個特性為后來的變量處理簡化了很多。
其實這里是可以做得更優(yōu)雅凛剥,即將第一位元素直接設(shè)置為電話變量侠仇,這樣就可以不用對電話號碼的格式進(jìn)行限定(有些電話號碼格式不是11位或電話號碼中帶有連字符或國家代碼)。只不過我懶犁珠,因此就不作改動了逻炊。
3. 文本變量的有序替換
獲取「x」對其下接「Repeat」,實現(xiàn)文本變量的有序替換犁享。因為變量都是按照順序來的余素,即:
「%n」→「變量n」
所以「n」的「有序遞增」就成為這個部分的關(guān)鍵(圖中體現(xiàn)為「s」)
我們知道在「Set Variable」中的變量名稱是不能插入另外一個變量的,這就需要新建一個Text框炊昆,在框內(nèi)寫入能夠遞增的「s」來曲線救國桨吊,每一次執(zhí)行「Repeat」威根,「s」就會 +1s ,藉此實現(xiàn)「%n」的遞增视乐。與上一部分的「x」同理医窿,在進(jìn)行新的「Repeat」之前都需要對「s」進(jìn)行還原,即重新設(shè)置為 1 炊林。
這里運用「If」和兩個「Replace Text」是為了避免文本替換對短信模板的污染姥卢。「Replace Text」的用法不贅述渣聚,看仔細(xì)看wf流程就會理解独榴。
因為這個部分的圖太長,所以請點擊鏈接觀看:文本變量的有序替換
最后
本wf是憑借著我對它淺薄的理解做出來的奕枝,過程說實話還是有點辛苦的棺榔,但如果能起到拋磚引玉的效果,我也是會十分地開心隘道。Workflow是個萬能工具箱症歇,而你就就是一個木匠,請不要吝嗇自己的腦洞以及智慧谭梗,拿上稱手的工具忘晤,創(chuàng)造出屬于自己的杰作吧。