把重復(fù)的操作交給 Workflow(3)——挖掘 Workflow 的能力

這是「流程和效率」系列之三

本文結(jié)構(gòu)

  • 前文回顧
    • #1 Workflow 給我們帶來(lái)什么
    • #2 Workflow 的創(chuàng)建步驟
    • #3 Workflow 調(diào)試工具
  • 挖掘內(nèi)置動(dòng)作的能力
    • #1 內(nèi)置動(dòng)作的 Workflow 實(shí)例
      • 例 1:訂票提醒
      • 例 2:魔性閃圖
    • #2 了解和用好內(nèi)置動(dòng)作
    • #3 了解數(shù)據(jù)的類型和傳遞
    • #4 Scripting
  • 利用無(wú)窮的外部接口——公開 API
    • 例 1:在線分詞
    • 例 2:掃碼查書

前文回顧

我們首先在《提高打開 App 的效率》中了解到 URL Schemes沸停,然后在《創(chuàng)建簡(jiǎn)單的 Workflow》中以此為基礎(chǔ),嘗試做了三個(gè) Workflow≌炎浚現(xiàn)在我們回頭做一下整理愤钾。

#1 Workflow 給我們帶來(lái)什么

我說(shuō)「Workflow 是一種用流程來(lái)解決問題的思維模式」,也許有人因此覺得候醒,這樣的思維模式把生活都變成了數(shù)學(xué)題能颁,毫無(wú)趣味可言。其實(shí)這是一種誤解倒淫。

真正無(wú)趣的情形是遇到重復(fù)的困擾卻不斷選擇忍受伙菊,它腐蝕人心,使我們變得麻木敌土。流程化思考镜硕,不但是主動(dòng)面對(duì)問題,而且是努力尋求一勞永逸的方法返干。相信自己能讓事情變得更好兴枯,這讓人感到更自由,這本就是一種樂趣矩欠。

回顧我們完成的三個(gè) Workflow财剖,一個(gè)實(shí)現(xiàn)了支付寶常用功能快速跳轉(zhuǎn)悠夯,一個(gè)實(shí)現(xiàn)了搜索引擎隨時(shí)切換、一個(gè)能幫助我們折算金額躺坟。它們所解決的困擾是微弱的沦补,但依然讓人獲得改善的信心。

有個(gè)狂熱愛好者說(shuō):「Workflow App 或許是無(wú)所不能的咪橙,限制我們的只是想象力策彤。」這話顯然是夸張的匣摘,Workflow App 不可能無(wú)所不能,但它的確令人驚嘆裹刮。

你也許從未想到 Workflow 與訂餐有什么聯(lián)系音榜,可是有選擇困難癥患者的確在用它訂餐:他列了一份口味清單和相應(yīng)的訂餐電話,讓 Workflow 幫他隨機(jī)選擇捧弃、自動(dòng)撥號(hào)赠叼。

有很多問題 Workflow 可以幫我們解決,只是我們沒有去想象违霞。我們沒有想讓 Workflow 替我們解決嘴办,只是因?yàn)閷?duì)它缺乏了解。

#2 Workflow 的創(chuàng)建步驟

遵循 Workflow 的思維模式买鸽,我們同樣將創(chuàng)建 Workflow 的工作流程化:

  1. 確定目標(biāo)

    Workflow 的功能是什么涧郊?它要適用于哪些情形?我們據(jù)此設(shè)置 Workflow 的名稱眼五、圖標(biāo)妆艘、類別,以及接受的數(shù)據(jù)類型看幼。

  2. 確定核心步驟

    暫時(shí)無(wú)視條件判斷和選項(xiàng)分支批旺,先只管挑選實(shí)現(xiàn)功能的關(guān)鍵動(dòng)作,構(gòu)建 Workflow 的核心步驟诵姜。

  3. 補(bǔ)完流程

    擴(kuò)充核心步驟汽煮,添加條件判斷、運(yùn)行分支或數(shù)據(jù)運(yùn)算等等棚唆。

  4. 運(yùn)行測(cè)試

    檢查是否忽略了特殊符號(hào)的編碼問題暇赤;在各種條件下試用 Workflow,看看是否出錯(cuò)瑟俭。

#3 Workflow 調(diào)試工具

Workflow 提供了 Quick LookView Content Graph 兩個(gè)動(dòng)作翎卓,為我們測(cè)試提供了方便。

  • Quick Look 直譯過(guò)來(lái)是瞥一眼摆寄,用于直接查看內(nèi)容失暴,讓我們看到內(nèi)容發(fā)生的變化坯门。
  • View Content Graph 顯示圖表,用于查看數(shù)據(jù)構(gòu)成逗扒。

比如說(shuō)在 Select Contact 后面放 Quick Look 將顯示聯(lián)系人界面古戴,放 View Content Graph 將用放射結(jié)構(gòu)顯示該聯(lián)系人下包含哪些數(shù)據(jù)。

View Content Graph
聯(lián)系人數(shù)據(jù)結(jié)構(gòu)

如果一個(gè)動(dòng)作修改了內(nèi)容矩肩,那么用 Quick Look 直接查看改動(dòng)现恼;如果想要獲得復(fù)合數(shù)據(jù)里的特定子項(xiàng),則應(yīng)該用 View Content Graph 了解它的結(jié)構(gòu)黍檩。

View Content GraphQuick Look 可以幫助我們了解內(nèi)置動(dòng)作叉袍,或者在 Workflow 運(yùn)行出錯(cuò)時(shí)查找問題所在。

在動(dòng)手創(chuàng)建和調(diào)試 Workflow 的過(guò)程中刽酱,我們對(duì)它內(nèi)在和外延能力的了解會(huì)不斷加深喳逛。

挖掘內(nèi)置動(dòng)作的能力

不一定總要調(diào)用外在的 URL Schemes,使用 Workflow App 內(nèi)置的動(dòng)作就可以做出許多貼心的功能棵里。

#1 內(nèi)置動(dòng)作的 Workflow 實(shí)例

這里舉兩個(gè)例子润文。

例 1:訂票提醒

我打算過(guò)段時(shí)間出遠(yuǎn)門,需要訂票殿怜。這時(shí)候有兩個(gè)小小的煩惱典蝌,一是得花心思倒推訂票日期,二是沒到訂票那天就把這事給忘了头谜。這個(gè)問題用 Workflow 來(lái)解決很簡(jiǎn)單:

添加訂票的日歷事項(xiàng)

運(yùn)行一下看看:

訂票 Workflow 的運(yùn)行效果
添加的日歷事項(xiàng)

它的確忠實(shí)可靠地計(jì)算出應(yīng)該訂票的日期骏掀,并且在日歷中添加了事件。

我們是不是還可以再懶一點(diǎn)乔夯?比如說(shuō)訂票有 App 訂票砖织、電話訂票和去附近售票點(diǎn)購(gòu)買三種方式,我們可以把相應(yīng)的 URL Schemes 填寫到日歷事件的 Notes 中末荐,屆時(shí)點(diǎn)擊 URL Schemes 立即啟動(dòng)訂票 App侧纯、呼出訂票電話,或是在地圖中搜索附近的售票點(diǎn)甲脏。

例 2:魔性閃圖

合成魔性閃圖的 Workflow 可能更讓人驚奇眶熬,但它其實(shí)更簡(jiǎn)單:

魔性閃圖 Workflow

運(yùn)行效果就不貼了,自己試試吧块请。

#2 了解和用好內(nèi)置動(dòng)作

Workflow App 被設(shè)計(jì)得極其易用娜氏,我們只需拖放動(dòng)作卡片就可以拼裝 Workflow《招拢看了上述兩個(gè)例子贸弥,你應(yīng)該發(fā)現(xiàn)這話并不夸張。

在「魔性閃圖」這個(gè) Workflow 中海渊,你需要做的調(diào)整僅是打開 Select Multiple 開關(guān)绵疲。

有些人習(xí)慣使用本子記錄日程哲鸳,在「訂票提醒」的例子中,他可能發(fā)現(xiàn)了日歷 App 在交互上的獨(dú)特優(yōu)勢(shì)盔憨。Calendar 類的動(dòng)作支持日歷事件的添加徙菠、刪除、查詢郁岩,結(jié)合日期計(jì)算動(dòng)作婿奔,用戶在安排日程和調(diào)配時(shí)間時(shí)會(huì)更輕松。

Workflow App 的內(nèi)置動(dòng)作分為 12 類问慎,除 Scripting 比較特殊萍摊,其他各類動(dòng)作的作用均一目了然。

比如 Calendar 類的動(dòng)作主要與日期計(jì)算如叼、日程提醒相關(guān)记餐;Contacts 類的動(dòng)作能讀取聯(lián)系人的電話號(hào)碼、地址薇正、郵箱等數(shù)據(jù)……

動(dòng)手嘗試拼裝 Workflow硬毕,是熟悉這些動(dòng)作的最好方法沾凄。遇到看不明白的動(dòng)作卡片時(shí),我們?yōu)樗陆ㄒ粋€(gè)臨時(shí)佛掖、短小的 Workflow练湿,并在后面放上 Quick LookView Content Graph猴仑,就能在運(yùn)行時(shí)生動(dòng)地看到動(dòng)作卡片的運(yùn)行效果。

#3 了解數(shù)據(jù)的類型和傳遞

在「Workflow 進(jìn)階」部分肥哎,我們創(chuàng)建的搜索引擎聚合必須接受數(shù)據(jù)傳入辽俗,它可能是在網(wǎng)頁(yè)或其他 App 中選中的內(nèi)容,也可能是在 Ask for Input 界面中我們手動(dòng)輸入的文字篡诽。

在貨幣換算的 Workflow 中崖飘,它接受的數(shù)據(jù)只能是數(shù)字而不能是文字;在合成魔性閃圖的 Workflow 中杈女,Select Photos 動(dòng)作選擇的數(shù)據(jù)類型是 Image(圖片)朱浴。

通過(guò)這些例子,我們意識(shí)到數(shù)據(jù)有類型之分达椰。

  1. 數(shù)據(jù)類型

    Ask for Input 界面可以看到翰蠢,基本的數(shù)據(jù)類型大致是 Text(文本)、Number(數(shù)字)啰劲、URL(網(wǎng)址)梁沧、Date(日期),除此之外還有一些常用文件類型蝇裤,File(文件)廷支、Image频鉴、Media(視頻、音頻等媒體文件)酥泞、PDF 等砚殿。

    擴(kuò)展類的 Workflow 有 Accepts 設(shè)置項(xiàng),用于限定接受的數(shù)據(jù)類型芝囤,這里的許多類型和 Contact(聯(lián)系人)一樣似炎,由多種基本的數(shù)據(jù)類型組合而成,我們可以用 View Content Graph 查看它們的組成結(jié)構(gòu)悯姊。

    正如前文所說(shuō)羡藐,Workflow 要區(qū)分?jǐn)?shù)據(jù)類型是因?yàn)椋?dāng)你輸入「天哪悯许!這么超值」仆嗦,它就不應(yīng)該試圖將這段話折算成人民幣。同樣先壕,你應(yīng)該知道瘩扼,用黃油相機(jī)給照片加的字,用 Get Text from Input 是弄不出來(lái)的垃僚。

    許多動(dòng)作只能操作特定的數(shù)據(jù)類型集绰,不過(guò),基本的類型之間可以轉(zhuǎn)換谆棺。

    在「我有 100 大洋」這句話中栽燕,「100」是文本而不是數(shù)字,用它進(jìn)行運(yùn)算改淑,必須先把「100」單獨(dú)抽出來(lái)碍岔,再用 Number 動(dòng)作轉(zhuǎn)換成數(shù)字;在「2017 年 12 月 12 日是我破產(chǎn)的日子」這句話中朵夏,「2017 年 12 月 12 日」必須用 Date 動(dòng)作轉(zhuǎn)換才能被 Workflow 視為日期蔼啦。

  2. 數(shù)據(jù)傳遞

    許多動(dòng)作都涉及數(shù)據(jù)的操作和轉(zhuǎn)換,我們?cè)趧?dòng)作列表中點(diǎn)擊展開某個(gè)動(dòng)作仰猖,可以看到相關(guān)資料询吴。

    動(dòng)作說(shuō)明

    如圖所見,Make HTML from Rich Text 動(dòng)作只接受 Rich Text 類型的數(shù)據(jù)亮元,并向后輸出 HTML 源碼(實(shí)際是 Text 類型)猛计。

    無(wú)論是手動(dòng)輸入還是插件讀取,數(shù)據(jù)將被某些動(dòng)作卡片依次加工爆捞,不停向后傳遞奉瘤。在支付寶快捷跳轉(zhuǎn)的 Workflow 中,Choose from List 動(dòng)作將詞典中被選中的代碼遞給了 URL。

    有些動(dòng)作不會(huì)對(duì)數(shù)據(jù)有任何改動(dòng)(你可以看到它們的說(shuō)明資料中寫著「Result: The input」)盗温,比如 Set Variable藕赞,它只是保存當(dāng)前數(shù)據(jù),以便之后取用卖局;而有些動(dòng)作會(huì)截?cái)嘀暗臄?shù)據(jù)傳遞斧蜕,比如 Get Variable

    運(yùn)用 Set VariableGet Variable 組合砚偶,數(shù)據(jù)可以被“恢復(fù)”批销,動(dòng)作卡片讀取的數(shù)據(jù)不再限于“上一步”。前文搜索引擎的例子說(shuō)到染坯,Count 向后傳遞的是數(shù)值均芽,這時(shí)就需要用 Set Variable 保存內(nèi)容,之后再用 Get Variable 重新讀取单鹿。

    Workflow 還支持「魔法變量」掀宋,讓動(dòng)作卡片直接讀取前面某個(gè)卡片的輸出結(jié)果,這省掉了大量使用 Set VariableGet Variable 組合的必要仲锄。

    選擇**魔法變量**

#4 Scripting

在 12 個(gè)動(dòng)作分類中劲妙,Scripting 是比較特殊的一個(gè),里面的動(dòng)作用于:

  • 存取變量儒喊;
  • 統(tǒng)計(jì)和運(yùn)算是趴;
  • 讀寫詞典和列表;
  • 讀寫數(shù)據(jù)澄惊、設(shè)備的屬性;
  • 控制 Workflow 的流程富雅;
  • 通知交互掸驱;
  • ……

一般情況下,Scripting 中的動(dòng)作跟功能目標(biāo)無(wú)關(guān)没佑,所以不會(huì)出現(xiàn)在核心步驟中毕贼,但它在將 Workflow 補(bǔ)充完整的階段至關(guān)重要。

Workflow 被稱為流程(Flow)蛤奢,是因?yàn)樗軐?shí)現(xiàn)條件判斷和運(yùn)行分支鬼癣,而相關(guān)的動(dòng)作都位于 Scripting 分類中。

  1. Ask for Input 和 Ask When Run

    兩者是用得比較多的動(dòng)作/參數(shù)啤贩,當(dāng) Workflow 無(wú)法自動(dòng)獲得必要的數(shù)據(jù)待秃,需要我們手動(dòng)提供,這時(shí)就必須用到它們痹屹。

  2. If -(Otherwise)- End If

    這個(gè)動(dòng)作是 Workflow 實(shí)現(xiàn)條件判斷的關(guān)鍵章郁。條件被滿足時(shí)執(zhí)行 If 部分,跳過(guò) Otherwise 部分,到 End If 重新回到無(wú)條件執(zhí)行的狀態(tài)暖庄;反之聊替,條件不被滿足時(shí)跳過(guò) If 部分而執(zhí)行 Otherwise 部分。

    如果只需要管條件被滿足的情況培廓,Otherwise 下沒有要執(zhí)行的動(dòng)作惹悄,則可以點(diǎn)它右側(cè)的「X」號(hào)刪掉。刪除之后想找回來(lái)肩钠,可以點(diǎn) If 右側(cè)的齒輪圖標(biāo)泣港,在彈出的窗口中點(diǎn) Put Back "Otherwise"

    **If**

    很遺憾 Workflow App 不支持 Case蔬将,這導(dǎo)致條件復(fù)雜時(shí)只能用 If 層層相套爷速。

  3. List 和 Dictionary

    兩者都是數(shù)據(jù)列表,后跟 Choose from List 都可以顯示選單霞怀。但通過(guò)前文支付寶的 Workflow 可以看到它們的不同惫东,Dictionary 的各項(xiàng)數(shù)據(jù)都有關(guān)鍵詞和實(shí)際值兩部分(就像詞典的每個(gè)詞條有詞語(yǔ)和解釋兩部分),當(dāng)用 Choose from List 選擇“詞典”里的項(xiàng)目時(shí)毙石,向后傳遞的只是實(shí)際值廉沮,不包括關(guān)鍵詞。

利用無(wú)窮的外部接口——公開 API

Workflow App 內(nèi)置的動(dòng)作有名為 App 的分類徐矩,封裝了許多第三方 App 的 URL Schemes滞时,但是前面說(shuō)到的微信、支付寶滤灯、Vert坪稽,以及大量第三方 App 所提供的 URL Schemes 都不在其中。

這很正常鳞骤,作者不可能把大量的精力用在打包 URL Schemes 這件事件上窒百。那些外在的 URL Schemes,我們可以通過(guò) Web 分類下的 URLOpen URLs 動(dòng)作調(diào)用豫尽,前面支付寶和 Vert 的 Workflow 就是這么做的篙梢。

除了調(diào)用 URL Schemes,利用 URLGet Contents of URL 動(dòng)作組合美旧,我們還可以調(diào)用在線接口渤滞,無(wú)限擴(kuò)充功能。

許多大型網(wǎng)站會(huì)提供公開接口榴嗅,以便第三方開發(fā)者接入妄呕,也有一些小型的、專門提供 API 服務(wù)的網(wǎng)站嗽测。

大型網(wǎng)站一般會(huì)用專門的開發(fā)平臺(tái)來(lái)提供文檔和示例趴腋,入口可以在網(wǎng)頁(yè)頂部或底部的導(dǎo)航菜單中找到。

微博的開發(fā)平臺(tái)入口

我們也可以通過(guò)搜索引擎用網(wǎng)站名加「開發(fā)平臺(tái)」、「API」等關(guān)鍵字眼直接搜索到相應(yīng)的頁(yè)面优炬。

搜索豆瓣的 API

網(wǎng)上也有專門的 API 商店颁井,專門匯聚各方服務(wù)商提供的 API 接口:

例 1:在線分詞

錘子科技在 2016 年為自有的系統(tǒng)加入了「Big Bang(大爆炸)」功能,其別致的交互受到了大量用戶的追捧蠢护。

Big Bang雅宾。圖片來(lái)自錘子官方論壇

「Big Bang」可以獲取用戶按壓的文字片斷(如果用戶按壓的是圖片中的文字,則先調(diào)用 OCR API 來(lái)識(shí)別出文字)葵硕,然后調(diào)用分詞 API 來(lái)顯示詞語(yǔ)列表眉抬。

中文分詞是機(jī)器實(shí)現(xiàn)中文語(yǔ)義識(shí)別的基礎(chǔ),中文語(yǔ)義識(shí)別可用于機(jī)器翻譯和中文人機(jī)自然語(yǔ)言交互懈凹。Siri 等各種語(yǔ)音助手能和我們交談蜀变,可能背后就使用了這些技術(shù)。

利用網(wǎng)上的 API介评,我們同樣可以實(shí)現(xiàn)分詞的功能(當(dāng)然库北,「Big Bang」有系統(tǒng)級(jí)的支持,可以在任意界面即時(shí)彈出们陆,這點(diǎn)是 Workflow 不可能做到的)寒瓦。百度搜索「分詞 API」,可以看到許多強(qiáng)大的中文語(yǔ)義平臺(tái)坪仇,比如 BosonNLP杂腰、 哈工大語(yǔ)言云、NLPIR 等椅文。為方便練手喂很,我們選調(diào)用起來(lái)最簡(jiǎn)單的 PullWord。

☆ 第一步皆刺,查詢 API 資料

http://api.pullword.com 可以查到 API 的使用說(shuō)明:

  • 文本的輸入必須使用 UTF8 編碼少辣;
  • 請(qǐng)求方式支持 GetPost 兩種;
  • Source 參數(shù)用于填寫文字片斷芹橡;
  • Param1 參數(shù)用于指定分詞的嚴(yán)格性,可填 0~1 之間的值(如 0.5)望伦,為 0 時(shí)最寬松林说,為 1 時(shí)最嚴(yán)謹(jǐn);
  • Param2 參數(shù)用于切換模式屯伞,為 0 時(shí)關(guān)閉調(diào)試腿箩,為 1 時(shí)顯示每個(gè)詞對(duì)應(yīng)的劃分合理程度。

因?yàn)轫?yè)面上特別注明劣摇,超過(guò) 30 個(gè)漢字的分詞請(qǐng)求珠移,用 Post 方法會(huì)低效且出錯(cuò),所以我們使用 Get 方法。在使用 Get 方法時(shí)钧惧,Get Contents of URL 動(dòng)作不需要理會(huì) Advanced 設(shè)置暇韧,保持默認(rèn)即可。

通過(guò)頁(yè)面上的「點(diǎn)擊使用 Get 方式」鏈接可以得到 API 的格式:

http://api.pullword.com/get.php?source=清華大學(xué)是好學(xué)校&param1=0&param2=1

運(yùn)行結(jié)果:

清華:0.604942 清華大學(xué):1 華大:0.068537 大學(xué):0.949906 好學(xué):0.659566 學(xué)校:0.936925

☆ 第二步浓瞪,拼裝 Workflow

現(xiàn)在可以開始拼裝了懈玻。新建 Workflow,將名稱設(shè)為「分詞」乾颁,為了方便使用涂乌,設(shè)為通知中心插件和分享面板擴(kuò)展,接受的數(shù)據(jù)類型僅選擇 Text英岭。

先把 Workflow 前半段寫出來(lái):

分詞 Workflow 前半段

上圖 URL 動(dòng)作里的 API 顯示不全湾盒,我將后面參數(shù)的值分別設(shè)為 1 和 0。

分詞 Workflow 試運(yùn)行

試著運(yùn)行 Workflow诅妹,在 Quick Look 里看到罚勾,返回的結(jié)果是用空格相間的詞語(yǔ)。我們根據(jù)這個(gè)返回結(jié)果補(bǔ)完 Workflow 的剩余部分漾唉。

Workflow 的剩余部分

測(cè)試完畢刪掉 Quick Look 動(dòng)作荧库。

說(shuō)明:

  • Split Text:以空格(Space)為界將返回結(jié)果分割為詞語(yǔ)列表(List);
  • Choose from List:顯示選單赵刑;
  • Copy to Clipboard:將選擇的項(xiàng)目(詞語(yǔ))復(fù)制到剪貼板分衫。

再次試用查看運(yùn)行情況:

詞語(yǔ)選單

咦,怎么選單最后有一項(xiàng)「Text」般此?并且選擇不同文段反復(fù)試用蚪战,選單最后一項(xiàng)總是「Text」,即使文中并沒有這個(gè)單詞铐懊,仍然會(huì)是這個(gè)結(jié)果邀桑。

☆ 第三步,糾錯(cuò)

Get Contents of URL 后重新添加 Quick Look 動(dòng)作科乎,再次運(yùn)行壁畸,在查看器中長(zhǎng)按并全選,此時(shí)發(fā)現(xiàn)最后一個(gè)詞語(yǔ)后面還有一個(gè)空格茅茂。

因?yàn)?Split Text 用空格分項(xiàng)捏萍,這導(dǎo)致列表最后有一個(gè)空項(xiàng)。怎樣把列表最后的這個(gè)空項(xiàng)去掉呢空闲?用 Replace Text 動(dòng)作可以做到令杈。

Replace Text

Replace Text 的設(shè)置說(shuō)明:

  • Find Text:要查找的文本。

    這里的 \s*$ 是正則表達(dá)式碴倾,\s 匹配空白字符逗噩,包括空格掉丽、制表符、換頁(yè)符异雁;* 表示匹配任意個(gè)捶障;$ 匹配文本結(jié)尾的位置。即 \s*$ 匹配文本結(jié)尾的任意個(gè)空白字符片迅。

  • Replace With:替換為……

    因?yàn)槭且獎(jiǎng)h除文段尾部的空格残邀,所以這里留空。

  • Case Sensitive:區(qū)分大小寫柑蛇。

    空格不存在大小寫芥挣,這里是開是關(guān)無(wú)所謂。

  • Regular Expression:正則表達(dá)式耻台。

    必須打開這個(gè)開關(guān)空免,上面 Find Text 項(xiàng)才可以使用正則表達(dá)式。

例 2:掃碼查書

PullWord 的分詞 API 直接返回文本盆耽,而豆瓣圖書 API 返回的是 JSON 格式蹋砚,我們用它做掃碼查書的 Workflow 來(lái)進(jìn)一步了解返回?cái)?shù)據(jù)的處理。

☆ 第一步摄杂,查詢 API 資料

豆瓣 API v2豆瓣圖書 API v2 的頁(yè)面查看相關(guān)說(shuō)明:

  • API 的返回格式:數(shù)據(jù)返回格式統(tǒng)一使用 JSON坝咐。

    • 成功時(shí)返回查詢到的數(shù)據(jù);

      {  
         "rating":{  
            "max":10,
            "numRaters":2538,
            "average":"9.3",
            "min":0
         },
         ...
      }
      
    • 失敗時(shí)返回錯(cuò)誤碼析恢。

      {  
      "msg":"book_not_found",
      "code":6000,
      "request":"GET \/v2\/book\/isbn\/:9887301215692"
      }
      

      錯(cuò)誤碼列表可以在豆瓣圖書 API v2 頁(yè)面上看到墨坚,稍有點(diǎn)長(zhǎng)這里就不轉(zhuǎn)貼了。

  • 「根據(jù) ISBN 獲取圖書信息」API 的用法

☆ 第二步映挂,拼裝 Workflow

因?yàn)槭菕叽a獲得 ISBN 號(hào)碼泽篮,所以 Workflow 的類型選擇通知中心插件類。不像分享面板擴(kuò)展需要做判斷柑船,Workflow 的前半段簡(jiǎn)單了很多:

掃碼并調(diào)用 API

接下來(lái)處理返回的數(shù)據(jù)帽撑。API 返回的是 JSON 格式,我們用 Get Dictionary from Input 可以將其轉(zhuǎn)換為詞典鞍时,然后再用 Get Dictionary Value 獲得不同關(guān)鍵詞的值亏拉。

首先用 Get Dictionary Value 獲得 msgcode 的值,如果返回這兩個(gè)值逆巍,則表示請(qǐng)求失敗及塘,Workflow 在彈出相關(guān)提示后結(jié)束運(yùn)行。

為了測(cè)試 API 請(qǐng)求失敗的情況蒸苇,先把 Scan QR/Bar Code 動(dòng)作刪掉磷蛹,并把 URL 最后的 ISBN 設(shè)為固定的 12345吮旅。

當(dāng) API 請(qǐng)求失敗

運(yùn)行一下看看:

消息提示

接下來(lái)處理 API 請(qǐng)求成功時(shí)的返回?cái)?shù)據(jù)溪烤,核心依然是用 Get Dictionary Value 獲得關(guān)鍵詞的值味咳。

有一點(diǎn)需要留意,當(dāng) JSON 的層級(jí)較多時(shí)(從上面可以看到 rating 下面還有分項(xiàng))檬嘀,轉(zhuǎn)換得到的也會(huì)是多層的詞典(即詞典里包含詞典)槽驶,這時(shí)需要遞次向內(nèi)層取值。

比如要獲得 ratingaverage 的值鸳兽,得先用 Get Dictionary Value 獲得 rating 的值(又是一個(gè)詞典)掂铐,再用 Get Dictionary Value 獲得 average 的值。

為了在 End If 之后重新讀取返回的數(shù)據(jù)揍异,需要在 Get Contents of InputGet Dictionary from Input 后面用 Set Variable 將詞典保存起來(lái)全陨,然后在 End If 后用 Get Variable 重新讀取。僅作示范衷掷,剩余部分就簡(jiǎn)單處理了:

顯示圖書信息頁(yè)面
最終運(yùn)行結(jié)果

通過(guò)分詞和掃碼查書兩個(gè)例子辱姨,我們掌握了通過(guò) Get Contents of URL 調(diào)用在線 API 的基本方法。

接下來(lái)說(shuō)明一下 Get Contents of URL 內(nèi) Advanced 的設(shè)置方法戚嗅。Method 指請(qǐng)求方式雨涛,以 GetPost 居多懦胞;使用 Post 方式可以遞交 JSON替久、表單及文件數(shù)據(jù)。

運(yùn)用網(wǎng)絡(luò)調(diào)試工具躏尉,我們可以查獲網(wǎng)站的一些接口蚯根,使原本需要手動(dòng)完成的操作被自動(dòng)化,比如自動(dòng)登錄某個(gè)網(wǎng)站簽到醇份,或檢查最新動(dòng)態(tài)稼锅。

網(wǎng)站自動(dòng)登錄

我們還可以監(jiān)測(cè)云音樂的客戶端,通過(guò)模擬它的請(qǐng)求行為來(lái)下載其中的 MV僚纷。

云音樂請(qǐng)求

這些就需要自己嘗試和摸索了矩距。


題圖來(lái)自 Unsplash,作者 NeONBRAND

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末怖竭,一起剝皮案震驚了整個(gè)濱河市锥债,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌痊臭,老刑警劉巖哮肚,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異广匙,居然都是意外死亡允趟,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門鸦致,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)潮剪,“玉大人涣楷,你說(shuō)我怎么就攤上這事】古觯” “怎么了狮斗?”我有些...
    開封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)弧蝇。 經(jīng)常有香客問我碳褒,道長(zhǎng),這世上最難降的妖魔是什么看疗? 我笑而不...
    開封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任沙峻,我火速辦了婚禮,結(jié)果婚禮上两芳,老公的妹妹穿的比我還像新娘专酗。我一直安慰自己,他們只是感情好盗扇,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開白布祷肯。 她就那樣靜靜地躺著,像睡著了一般疗隶。 火紅的嫁衣襯著肌膚如雪佑笋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天斑鼻,我揣著相機(jī)與錄音蒋纬,去河邊找鬼。 笑死坚弱,一個(gè)胖子當(dāng)著我的面吹牛蜀备,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播荒叶,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼碾阁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了些楣?” 一聲冷哼從身側(cè)響起脂凶,我...
    開封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎愁茁,沒想到半個(gè)月后蚕钦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鹅很,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年嘶居,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片促煮。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡邮屁,死狀恐怖胸蛛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情樱报,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布泞当,位于F島的核電站迹蛤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏襟士。R本人自食惡果不足惜盗飒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望陋桂。 院中可真熱鬧逆趣,春花似錦、人聲如沸嗜历。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)梨州。三九已至痕囱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間暴匠,已是汗流浹背鞍恢。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留每窖,地道東北人帮掉。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像窒典,于是被迫代替她去往敵國(guó)和親蟆炊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容