瞭解 Shopify Flow 中的條件

條件」是工作流程中的一步,用來判斷是否符合一組規則,並據此決定後續走向。每個條件步驟都有兩種結果:True 表示已符合規則,False 表示未符合。若您未針對任一結果指定下一步的條件或動作,工作流程執行即會停止。

例如,若您的工作流程在建立訂單時被觸發,條件就可以檢查該筆訂單是否使用了特定的折扣代碼 AFFILIATE10。若有,True 分支即可接到一個動作,寄送電子郵件給聯盟夥伴,通知其代碼已被使用;若沒有,則可讓 False 分支維持空白,表示不再進行任何動作,工作流程執行隨即結束。

工作流程中的條件數量不受限,端視您的流程複雜度而定。條件之間也可以互相連接,或連到動作,取決於您希望流程執行的內容。您可以將條件設定為依序檢查 (例如:若條件 A 為 True,則再檢查條件 B;若 A 為 False,則檢查 C),也可以在同一步中同時檢查 (例如:檢查 A 或 B 或 C 是否為 true)。

為工作流程設計條件

與可在 Shopify Flow 中自預設清單選取的觸發條件或動作不同,條件需要您從零開始,選取變數、邏輯運算子與值,組合成條件判斷式:

  • 變數」是一種佔位符,用來界定條件所使用的資料。例如,若條件要檢查訂單上是否包含特定折扣代碼,變數就會是 order.discountCode。變數採用 GraphQL Admin API 的點記號表示法。
  • 所謂「 邏輯運算子 」是用來說明工作流程應如何判斷是否符合條件。邏輯運算子可用於變數層級,或用於多個變數共同構成的整體條件準則:
    • 變數層級的選項包含欄位層級運算子,例如 大於開頭為;也包含清單運算子,例如 至少其中一個全部
    • 條件層級的選項包含 AND (所有變數都必須為 true,整體條件才視為 true),以及 OR (至少有 1 個變數為 true,整體條件即視為 true)。
  • 」是變數要尋找的實際資訊。例如,若您要讓工作流程檢查的特定 order.discountCodeAFFILIATE10,那麼該字串就是此條件中要輸入的值。

當您選取變數與運算子時,Shopify Flow 畫布中的條件步驟會即時更新,並以白話呈現您的條件式,方便您再次確認格式是否正確。您可以按一下 新增說明,將預設的條件式改為您自行撰寫的說明。

瞭解詳情:Shopify Flow 中條件的各項要素

瞭解條件中的變數

在工作流程中設計條件步驟時,系統會先引導您按一下 新增變數。但是,什麼是「變數」呢?

在 Shopify Flow 中,變數是一種佔位符,用來指示條件在工作流程中所使用的資料。當條件寫成「若 A 大於 10…」時,其中的 A 就是變數。為條件選定變數,基本上就是告訴系統要評估哪一項資料。

變數以 GraphQL Admin API 的點記號表示法撰寫。您不需要精通該 API 才能使用 Flow app 建立工作流程,但若能大致理解變數名稱及其定義,會更有助於您打造所需的工作流程邏輯。

若要了解變數所代表的資料,請參考以下重點:

小秘訣:向 Dev Docs Assistant 尋求變數相關協助

如果您不確定在建立條件時該選哪個變數,不妨向 Shopify Dev Docs Assistant 諮詢。Dev Docs Assistant 可存取所有關於 GraphQL Admin API 的文件,並能提供在 Shopify Flow 中撰寫條件式的格式建議:

  1. 前往 Shopify Dev Docs
  2. 按一下「詢問助理」以開啟聊天面板。
  3. 在訊息欄位輸入您的問題,例如:在 Shopify Flow 中,如果我的觸發條件是「訂單已建立」,要存取顧客標籤資料應該使用哪個變數?
  4. 按下 Enter,或按一下 Send

解讀變數的點記法

選取變數時,您會注意到它們以句點分隔的關鍵字組成,例如 order.customer.tag。這種格式表示 API 取得您想用的資料時所經過的步驟。變數的每一段以句點分隔,資料路徑由左到右讀取。變數的長度會因資料在 API 中的存放位置,以及工作流程到達該資料所需的路徑而有所不同。

例如:

  • order.email:檢查此訂單的顧客所使用的電子郵件地址。就像您會點選一筆訂單,再到訂單詳情查看電子郵件地址。
  • refunds_item.staffMember.name:檢查訂單中是否有品項退款,前往與該退款相關的員工資訊,並檢查該員工的完整姓名。

選擇變數時,可以先想像您會如何在 Shopify 管理介面中瀏覽以找到所需資訊。API 很可能也需要走類似的路徑,這有助於判斷變數應採用的格式。

例如,若您正在檢視新訂單,並想知道該訂單的顧客屬於哪個 RFM group,您可能會點選訂單上的顧客名稱,前往 Shopify 管理介面中的顧客詳情頁面,接著在顧客的分析摘要中查看「RFM group」欄顯示的數值。

在 Shopify Flow 中要回傳同樣資料的變數,會使用類似的路徑:order.customer.statistics.rfmGroup

變數的資料需求

變數需要資料支援。若變數無法取得正確資料,條件就不會運作,工作流程會失敗。您選擇的觸發條件作為工作流程的起點不同,能加入條件的變數選項也會依可用資料而改變。

例如,若您的工作流程以「商品已建立」觸發條件開始,您從該觸發條件建立的條件僅能使用 商品資料集中可用的變數。因此,product.category.nameproduct.vendorvariants_item.displayName 都可用於條件。相對地,customer.verifiedEmailsubscriptionContracts_item.status 不會顯示為選項,因為它們與商品資料集無關。

不過,這並不表示其他資料集中的資料完全無法存取。有些資料可透過 API 中的多條路徑取得,就像您在 Shopify 管理介面中可能透過不同連結進入同一頁面。實務上,這代表不同的觸發條件可能需要使用不同的變數點記法,才能回傳相同的資訊。

例如,您希望工作流程檢查顧客個檔上的標籤。若工作流程以「訂單已建立」觸發條件開始,變數應為 order.customer.tags,因為工作流程先從訂單資料開始,再檢查訂單中的顧客資訊,接著檢查該顧客的標籤。若工作流程以「顧客已建立」觸發條件開始,變數則是 customer.tags,因為工作流程從顧客資料開始,可直接檢查顧客個檔上的標籤。

由於 Shopify Flow 採用點記法,您依關鍵字搜尋用於條件的變數時,可能會得到多個結果。瞭解變數路徑所代表的意義,對於在建立條件時選擇正確的變數非常重要。

例如,您的工作流程使用「訂單已建立」觸發條件,並以關鍵字 tags 搜尋變數。搜尋可能會回傳下列結果,用於檢查訂單中的不同資訊:

  • order.tags:套用到訂單本身的標籤。例如,#rush order#gift
  • order.customer.tags:套用到下單顧客的標籤。例如,#VIP#affiliate
  • order.lineItems.product.tags:套用到訂單中所購買商品的標籤。例如,#fragile#requiresID

依您要讓工作流程檢查的標籤類型,務必選取正確的變數,以便條件如預期運作。

瞭解條件中的邏輯運算子

邏輯運算子決定條件的判斷方式,使陳述式的結果為真或為假。當條件寫成「若 A 大於 10……」時,其中的「大於」就是邏輯運算子。替條件選擇邏輯運算子,等同於指定系統要如何評估該變數。

在 Shopify Flow 工作流程中,邏輯運算子分為 3 種:

  • 欄位層級的運算子,例如「大於」或「開頭為」。
  • 清單運算子,例如「至少其一」或「全部」。
  • 條件層級的運算子,例如 ANDOR

欄位層級與清單運算子是套用在變數層級;條件層級運算子則套用在整體條件,可用來把多個變數組合成單一條件。

欄位層級運算子是最常見的運算子,適用於各種變數陳述式。有了欄位層級運算子,您可以建立例如「若 A 大於 10,則執行 X」或「若 B 包含「VIP」,則執行 X」之類的條件陳述式,更細緻地控制哪些變數值會判斷為真。預設的邏輯運算子為「等於」。

清單運算子僅適用於會回傳清單結果的變數。例如,lineItems_item.variant.price 會回傳訂單中某個產品子類選項的價格,若顧客在同一筆訂單購買了多個商品,就可能會回傳多個結果。因此,當您希望條件「lineItems_item.variant.price 大於 $10」在訂單中至少有 1 個產品子類選項的價格超過 $10 時為真,就可以套用像「至少其一」這樣的清單運算子。相對地,僅能一次回傳單一結果的變數不會顯示清單運算子。例如,order.createdAt 只有一個可能值,因為訂單只會建立一次,所以不會提供清單運算子來修改包含該變數的陳述式。

條件層級的運算子 (例如 ANDOR) 可讓您在同一個條件中納入多個變數。例如,您不必只寫「如果 A 等於 5,則執行 X」這種簡單的條件式,還能建立較複雜的條件,例如「如果 A 等於 5 且 B 大於 10,則執行 X」,此情況需要 A 與 B 兩個變數都為真;或是「如果 A 等於 5,或 B 大於 10,或 C 小於 1,則執行 X」,此情況只要 A、B 或 C 當中有 1 個為真即可。當工作流程中的整組條件必須全部為真時,請使用 AND;只要任一條件成立即可時,請使用 OR

為什麼這很重要:瞭解邏輯運算子在條件中的運作方式,能協助您建立可精準檢查所需條件的工作流程。透過 3 種邏輯運算子,您可以撰寫更細緻且複雜的條件式,打造能檢查非常特定條件的工作流程。

深入瞭解logical operators in conditions