本文首發于 越獄指南,原作者Jailbreakhum,少數派經由原作者授權轉載此文,僅對文章标題及正文版式、用詞略有改動,點此查看原文。
上篇文章算是大略地介紹 Workflow 是什麼的引文,這篇開始将要正式地使用 Workflow 了。第一篇文章将直接以大家最常用的社交網站為例來介紹 Workflow 的基礎用法。
具體内容是:
在這裡用到的動作隻有三個
Text
是最簡單也比較常用的動作,最關鍵的是我們對它非常熟悉——「就是個輸入框嘛,往裡打字就可以了呗。如果你這麼想就對了,這軟件上手就是這麼的傻瓜式——你要做的就是把想發的微博内容輸入到 Text 的文本框裡。
上面介紹的是 Text
文本框,我們看到它非常熟悉,但是它的一大缺點是會保留上一個操作留下的内容。也就是說,你每一次通過 Workflow 發微博,都需要把上一次發的内容先删了才行。所以我實際上建議在這個 Workflow 裡實用Ask for Input
這個動作。
Ask for Input
這個動作也是 Workflow 裡最常用的動作,我在上一篇文章也提到過它。
你把 Prompt
裡填上「微博内容」,這樣每次打開這個 Workflow,直接點擊運行。它就會彈出個對話框讓你輸入微博内容。
Tweet
的動作框裡,前半部分寫着「Show Compose Sheet」意思是「顯示内容編輯框」,後面是一個開關:
内容編輯框
如果你把開關打開,那麼就是選擇顯示内容編輯框,這麼做的優勢在于:
但想必你會馬上意識到「我剛寫好的東西有什麼可修改的?」所以其實顯示内容編輯框的優勢并不明顯。而關閉那個開關,也就是不顯示内容編輯框的話,界面就會變成這樣:
關閉開關
它的好處是:直接後台發送内容,省掉你點擊編輯框的時間,以及等待發送成功再進行下一步的時間。
但是如果你确實有選擇賬戶的需求,又不想看到内容編輯框浪費時間呢?Workflow 同樣可以做到:按下 Tweet 動作框裡選擇賬戶的部分,你就能看到一個彈出菜單,裡面會有Ask When Run
、Clipboard
、Input
三個選項,你選擇Ask When Run
,就能在動作進行到這一步的時候自動出現一個對話框來問你選擇哪個賬戶發送。
注意,在内容編輯框裡,我們需要先按一下選擇賬戶那個位置——也就是說我們要先看一下那個位置在哪——然後再選擇賬戶。而在 Ask When Run
這種方式下,我們是直接選擇賬戶。
另外,記住,在 Workflow 這款軟件裡,凡白皆可點,每個動作框裡隻要有白色的區域就是可以點的,隻要有菜單出現就至少能看到 Ask When Run
、Clipboard
、Input
這三個選項,活用Ask When Run
能讓你做到一些你認為你做不到的事。
Share 這個動作就是大家最熟悉的分享按鈕了,之所以要用到它是因為 Workflow 在當前版本(1.0.1)還沒有支持微博的分享功能,等到支持了應該就能和 Tweet 這個動作一樣,可以在後台發送。也就是說,你隻要編輯好内容,點一下發送,剩下的 Workflow 幫你做好。
在這一步我們将談到變量,你會發現它果然也很容易。
會發文字微博了,圖文微博怎麼辦。在文字微博那個 Workflow 上再加幾步就能做到。
在動作列表裡找到 Select Photots
這個動作,用它來選擇照片。拖到你的 Workflow 裡以後你會發現有個Select Multiple
的開關,打開就能多選圖片,但是 iOS 本身不能上傳多圖到社交網站——你可以自己試試在相冊裡選擇多圖的話,Twitter 和微博這兩個選項都會不見的——所以 Workflow 以及任何通過 iOS 内置的功能去分享照片的辦法隻能分享一張照片。所以這個開關在這個 Workflow 關上就行了。
另外,如果你經常分享最後一張照片(或者是手機截圖)的話,你可以在 Workflow 的動作列表裡找到 Get Latest Photos
和Get Latest Screenshots
這些選項,拖到 Workflow 裡試試看會有什麼效果~
終于看見「變量」這倆字了,是時候克服你從初中數學開始就對這兩個字産生的恐懼了。
為了節省時間,我們要使用 Workflow 把兩種不同的内容(文字和圖片)作為一個整體發送出去。這一點的困難就是你得告訴 Workflow 他們倆(文字和圖片)是一起的。在 Workflow 裡的做法,就是:把文字放到一個變量裡,把圖片放到一個變量裡,然後把這倆變量合成一個變量,交給 Workflow。
具體的操作是,在動作列表裡找到 Set Variable
也就是「設定變量」這個動作,然後拖到Select Photos
這一步的下面,你會發現這兩個動作中間連起了一條線,這就說明 Workflow 明白了你要把你選的那張照片設為一個變量。然後你可以在Set Variable
後面的空白處輸入你想輸入的東西,我在這裡輸入了「圖片」,你可以輸入「img」,它就像給這張圖片起了個臨時的名字,什麼名字都可以,中文英文符号隻要你明白就都可以。
所以你可以這樣看 Workflow 裡的變量——給前面那一步的結果起個名字。
前面說到,我們在這裡用變量的原因是要用 Workflow 把兩種不同的内容(文字和圖片)作為一個整體發送出去。所以要給圖片起個名字(設個變量)、給文字也起個名字(也設個變量),然後把它倆放在一起成為一個組合,再給組合起個名字(設個新變量)。
在 Workflow 裡,這個步驟要分開來做。也就是說,圖片起了名字以後,直接就可以成立組合,等一會兒給文字起名字以後把他加到這個組合裡就行了。這在 Workflow 裡的具體做法是:
在動作列表裡找到 Add to Variable
也就是「添加到變量」這個動作,拖到你的 Workflow 裡,Set Variable
這一步下面,那條連接的線就又會出現,你應該已經懂得它代表什麼了。同樣,這個組合的名字你可以随便給,我給的是「圖文」。
我們現在已經把文字和組合的變量設妥了,現在要處理文字了。我們要給文字設個變量,再把文字這個變量加入到組合的變量裡。具體做法是:
把 Set Variable
拖到Ask for Input
下面,給它起個名字;再把Add to Variable
拖到Set Variable
下面,注意,這裡現在要填的是組合的名字,你不能再胡給名字了。
Workflow 可以在處理完照片以後删除這張我們再也不會用的照片,在這個 Workflow 裡,隻要你把 Delete Photos
這一步放到Share
這一步的下面就可以了:
Workflow 裡有修改圖片的功能叫做 Edit Photo
,這個在分享照片的時候很實用,一般你給人看圖片就會有希望讓他看的那個「點」,通過Edit Photo
你就可以把你想讓對方看的地方标記出來。那麼你能不能在這個環節介紹的 Workflow 裡加上Edit Photo
這個動作,讓你的 Workflow 更實用?
有時候人們分享圖片是隻想分享圖片,不加字兒,但是新浪微博要求必須加字才能發微博。所以它官方客戶端在隻分享圖片的時候的做法是自動添四個字「分享圖片」。通過 Workflow 能不能做到?
有時候你看到了一篇網站或者在你的 RSS/Read Later 客戶端裡讀到了一篇你想分享的文章,你在 App Store 看到了一個好的 App 或者遊戲,你想把它同時 Twitter 和微博,通過 Workflow 也可以輕松做到。
在這個環節我們要接觸 Workflow Type,它隻有兩種,所以沒什麼難的。
查看 Workflow Type 的方法是在每個具體的 Workflow 的右上角尋找齒輪圖标,裡面是一個菜單,其中有一項是讓我們選擇 Workflow Type:
Normal
類型的 Workflow 不會出現在 iOS 的分享菜單裡面,隻能通過 Workflow 這個程序本身運行。前面的内容都是在 Narmal 這個類型裡完成的。Action Extension
類型的則可在 Workflow 程序内運行也可在分享菜單中運行(Workflow 的相應位置有圖解)。我們在這裡要用到它,比較強力的 Workflow 一般都要用到它。
我們選擇 Action Extension
能看到Accepts
這個選項,打開後裡面有一個列表,這個列表裡顯示的是 Workflow 分享菜單裡接受的數據類型。
我們在這裡是要分享鍊接到微博和 Twitter,所以可以把其它的都删掉隻要留下 URLs 就可以。
這其實已經是「分享鍊接到微博和 Twitter」這個 Workflow 的第一步——獲取鍊接,下一步我們要做的,就是要給鍊接設一個變量——我在這裡設置的是「鍊接」——好把這個鍊接和我們一會想發的微博放在一起。
然後下一步,我們要開始輸入微博正文了,我們還是和以前一樣要用到 Ask for Input
,然後給它的結果也設置一個變量,我在這裡設置的是「正文」。
最後通過 Text 框把兩個變量放到一起。這一步有點小技巧:當你點進 Text 框,你會發現彈出的鍵盤上有 Ask When Run
、Variable...
、Clipboard
這三個按鈕,選擇Variable...
,你就可以看出一個彈出的菜單,裡面有你在前面設置好的所有變量。比如說我前面設定了選擇其中的變量,就會在 Text 框裡出現一個套着藍色框的變量——這就是 Workflow 的自定義變量的表現方式:
到了這一步的邏輯是,你給鍊接設了個變量(link),然後輸入微博,給這個微博内容也設個變量(正文),最後在 Text 框裡面給這兩個變量排一下順序,決定讓微博内容在先還是鍊接在先,最後将 Text 框裡的整體作為微博發送出來。所以最後不要忘記加上 Tweet
跟Share
這兩個動作。
既然是分享鍊接(一般是文章)到社交網站,比較方便的辦法其實是直接引用文中一段話作為對這個鍊接的介紹。所以你可以想想,能不能這個環節介紹的 Workflow 稍作改動,做一個「Clipboard
link
的 Workflow」?
如果你不隻想分享鍊接,還想分享 Safari 裡看到的文章的标題,要怎麼做?試試看 Get Name
這個動作。
我們用效率軟件是因為我們「懶」,所以既然懶了,就要有懶到底的精神。
現在你已經分别掌握了發送文字内容/圖文内容/鍊接内容到微博和 Twitter 的方法。如果你三種使用情境都有的話,這就意味着你要做3個 Workflow 了。做三個 Workflow 沒什麼不好,唯一的缺點是「不夠懶」。既然都是把東西發送到微博和 Twitter,我們能不能把它們做到同一個 Workflow?讓我們做到在分享内容的時候隻用這一個 Workflow,然後彈出一個菜單裡面有「文字微博」、「圖文微博」、「分享鍊接」,然後我們需要哪種分享方式就選哪種分享凡事,剩下的交給 Workflow 來處理。
答案自然是可以。在這裡我們要介紹 Workflow 這款軟件裡複雜動作的核心内容——List
、If
和Choose from Menu
。
我們要做的是要彈出一個菜單,裡面有「文字微博」、「圖文微博」、「分享鍊接」給我們選,所以這第一步,可以是一個列表。從 Workflow 裡找到 List
拖到你的 Workflow 裡,在裡面分别寫上「文字微博」、「圖文微博」、「分享鍊接」,行不夠了可以按添加按鈕來添加行。
然後我們要從這個列表裡選一樣,所以要用到 Choose from List
這個動作。同樣,找到它然後拖到你的 Workflow 裡。因為我們選的是其中「一項」,所以可以把「Select Multiple」這個開關關閉。
然後下一步,就是選完其中一項以後,讓 Workflow 知道你選的是什麼,然後執行之後的操作。那麼其實這裡面的邏輯是:
這個「如果……那麼……」在 Workflow 裡就是 「If 語句」,上述的邏輯在 Workflow 裡的操作是:
把 If
拖進 Workflow,你會發現它和其它動作不太一樣。If 會帶下來otherwise
和End If
兩個配套的動作。
我們在 If
框裡的「String Contains」後面,輸入「文字微博」。然後在這一步的下面,把發文字微博的 Workflow 的動作——Ask for Input
、Tweet
、Share
依次排好:
圖片中 If
下面的内容,都會有一個縮進,它的意思就是這些縮進了的内容都是在If
框裡設定的條件達到後才會運行的。這整個一步完整的意思是:如果我們在List
——列表裡選擇的内容裡有「文字微博」,我們就執行文字微博的 Workflow。
做好文字微博這部分了,我們反回頭看 Otherwise
跟End If
。
如果你的 Workflow 隻匹配一個條件,匹配到了就執行該條件下的内容,匹配不到就拉倒的話。你就不需要管這個 Otherwise
跟End If
。比如說,你想吃蘋果,不想吃任何其他水果,然後你去菜市場買蘋果。這個情境用 If 來表示就是:
If
有蘋果,買——Otherwise
沒蘋果,不買東西——End If
。
在發微博這個情境裡,我們有三種情況。第一個 If
我們匹配了「文字微博」,第二個If
要加到哪?加到Otherwise
下面:
這就成立了一個新的關系:If
——如果匹配到「文字微博」,就執行文字微博的 Workflow;Otherwise If
——或者匹配到「圖片微博」,就執行圖片微博的 Workflow……所以相信剩下内容已經不用再說了,包括最後一個「分享鍊接」的 Workflow 你也應該知道該怎麼辦了。
通過 List
和If
,你已經做到了把 3 個同類 Workflow 合并到一起,它們兩個的合作還會有更多強大的功能。但是,在我們這個「分享微博」的 Workflow 裡,它們不是最合适的。因為If
隻是匹配我們在List
列表裡選出的結果的内容的字符,不是我們想要的「選了菜單的某一項就自動進行這一項下的内容」,兩者有本質上的不同。
最合适這個 Workflow 的功能是 Choose from Menu
:
把動作拖到你的 Workflow 裡,在菜單填上「文字微博」、「圖文微博」、「分享鍊接」,然後相關部分的名字自然也會發生改變,然後你可以在「文字微博」這一項目下做你的文字微博的 Workflow ,在「圖文微博」的條目下做圖文微博的 Workflow……
Choose form Menu
在這個分享微博這個需求下明顯直觀許多,也比If
要精确。但也正因如此,它沒有If
的應用面廣。在 Workflow 裡,做出來一個能運行的 Workflow 是第一步,找到最适合它的動作把它優化到最簡單最直觀是終極目的。
如果通過 Workflow 做某件事不如用以前的方法簡便,就不要用 Workflow。
在「同時發送微博和 Twitter 」這個情境下,使用 Workflow,你就不需要分别打開兩款軟件的微博客戶端,不需要等待客戶端的讀取,不需要看某些客戶端的啟動廣告,然後不需要去點擊編寫按鈕,甚至不需要去點擊發送按鈕;在分享鍊接的情況下,你不需要去點 Safari 的地址欄去全選鍊接,然後再複制鍊接,然後再分别打開兩個客戶端,重複前面提到的動作……高下立判。
微博客戶端不隻是個分享内容的地方,還是個浏覽内容的地方。所以它的問題在于,你雖然最初是隻想「發一條微博」,但開了微博客戶端以後,你就不隻是發微博了,你的 Timeline 吸引着你,瞥了一眼搞笑圖片結果「哈哈哈哈哈」個不停,一不小心一個小時就沒了,說不定最初你想發的那條微博都沒發出來。
其實如果隻是圖方便,用 IFTTT 也可以做到,而且好像比 Workflow 還簡單些。但是 IFTTT 是無條件地将一個服務的所有内容全部轉到另一個服務,這點很蠢,更重要的是這樣很騷擾人。如果你的微博昵稱跟 Twitter 的用戶名一樣,當那些用 IFTTT 的人用微博和 Twitter 中的一個服務 at 你,另一個服務就也會 at 你。此外,你在微博轉發一條内容 IFTTT 會把你說的話同步到 Twitter 但不會把你轉發的原微博同步到 Twitter,所以如果你 Fo 了一些用 IFTTT 的人,你會看到他們總是在說一些摸不着頭腦沒有上下文的話。
如果你希望同時把内容微博發到微博和 Twitter,你就要首先學會取舍。這裡有一個很簡單的邏輯,如果你兩個地方說的話都永遠一樣,那别人(除了表示關系好以外)有什麼必要兩個地方都 Follow 你?你可能會說你的粉絲裡有那種隻用其中一種服務而不用另一種服務的人,這點其實沒那麼有必要擔心,隻要用 Twitter 的人,幾乎都會用微博。相信我,那些故意不用微博隻用 Twitter 的中文 microblog 使用者,不太會在意一個用 IFTTT 無篩選地同步所有内容的人所發的東西。
使用 Launch Center Pro 時間久的朋友應該都知道通過 Launch Center Pro 也是可以做到分享文字 圖片或純文字内容到 Weibo 和 Twitter 的。@餃子如何是好就曾做過一個 Launch Center Pro 的動作來完成這兩個功能。
你可以點開網站看一下那個 URL Schemes 。它和 Workflow 到底誰簡單我們另論,且說功能本身,與 Launch Center Pro 相比,Workflow 在這個動作上就有至少兩個優勢:
第一:我們總會遇到那種想發到微博或 Twitter 其中某個地方而,由于 Launch Center Pro 不支持 x-cancel
,所以如果你是按照先發推後發微博的順序寫好 Url Scheme 的話,你就不能臨時取消發推這個動作,因為一旦你取消發推的話,動作就被中止了,後面發到微博的那一步就不會執行了。而 Workflow 則能夠中斷其中一步而執行下一步。換句話說,比如你習慣了通過 Workflow 來發送原創微博,有些内容你不想發到 Twitter 隻想發到微博,那你可以在 Workflow 裡取消發送到 Twitter 而進行下一步發送到微博的操作。
第二:Workflow 支持分享插件,這一點是非常聰明的,它讓 Workflow 直接滲透到了 iOS 的各個角落。
讀完這篇文章,你應該熟悉的關于 Workflow 的内容有:
Text
文本框Ask for Input
功能(以及它和文本框的區别)Tweet
功能(Show Compose Sheet 開或關有何不同?)Ask When Run
的作用以及何時使用Set Variable
設定變量Add to Variable
添加到變量Workflow Type
&Action Extension
List
列表If
條件Choose From Menu
從菜單中選擇更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!