在 Shopify Flow 中疑難排解錯誤

Shopify Flow 可協助您自動化商店中的作業與流程,但在建立或編輯工作流程時,您可能會遇到錯誤或觸及某些限制。本頁說明您可能面臨的常見問題,例如工作流程限制與資料錯誤,並提供解決指引。掌握這些錯誤有助於您進行疑難排解,讓工作流程順暢運作。

建立工作流程時的錯誤

建立工作流程時,您可能會遇到錯誤,導致無法新增工作流程。以下是您可能遇到的錯誤:

工作流程數量超出上限

建立新工作流程時,您可能會看到這個錯誤:您已達到可用的工作流程上限 1,000 個。若要繼續,請刪除未使用的工作流程後再試一次。

Flow 會限制每個商店可擁有的工作流程數量,上限為 1,000 個。此數量包含啟用與停用的工作流程。若達上限且想建立新工作流程,請刪除未使用或已停用的工作流程。

如果在設定此上限前,您的商店已有超過 1,000 個工作流程,系統仍會允許維持超過 1,000 個工作流程的狀態。不過,若要建立新工作流程,必須先將數量降到上限以下。

您可能會在 Flow app 的多種操作中遇到此錯誤:

  • 建立新工作流程
  • 複製工作流程
  • 匯入工作流程
  • 安裝範本
相同觸發條件上的工作流程過多

啟用工作流程時,您可能會看到警告,指出您的商店有超過 10 個啟用中的工作流程使用相同的觸發條件。

許多工作流程共用相同的觸發條件可能會造成效能問題,因為每次發生觸發條件事件時,Flow 都必須處理所有相關聯的工作流程。這種擴散情形可能會導致執行速度變慢,並增加資源使用量。

若要減少單一觸發條件上的工作流程數量,請考慮採取下列方法:

  • 將使用相同觸發條件的工作流程,合併成包含多個分支與條件的單一工作流程。
  • 停用或刪除不再需要的工作流程。
  • 檢視某些工作流程是否可以改用更具體的觸發條件。

編輯工作流程時的錯誤

編輯工作流程時,您可能會遇到錯誤而無法儲存。以下是編輯工作流程時常見的錯誤:

找不到資料

當您在工作流程中新增動作時,可能會看到這個錯誤:找不到資料

找不到資料錯誤

會發生此錯誤,是因為許多動作 (包含 新增商品標籤) 都需要 Shopify 資源,例如商品。若該資源不存在,動作就無法執行。常見情況是,工作流程雖然含有與需求相似的資料,卻沒有提供實際所需的資料。

以下各節說明可能導致此錯誤的常見情境與解法。

問題 1:需要單一項目時,「取得資料」卻提供了清單

通常工作流程會提供一份 Shopify 資源清單,但該動作只允許使用單一資源。舉例來說,透過 取得商品資料,工作流程會提供商品清單,但 新增商品標籤 動作需要單一商品。

若要解決此錯誤,您可以加入 逐一執行 動作,迭代該清單,並針對清單中的每個項目呼叫該動作。以下範例示範錯誤與使用 逐一執行 的解法:

找不到資料錯誤

問題 2:需要單一項目時,觸發條件卻提供了清單

當某個動作需要單一資源,但觸發條件提供的是清單時,也會出現類似錯誤。例如,將出貨訂單標記為已出貨 需要出貨訂單;但若觸發條件來自訂單,則其提供的是出貨訂單清單。

與問題 1 相同,您可以加入 逐一執行 動作來迭代清單,並針對清單中的每個項目呼叫該動作:

出貨訂單的解決方法

另一種作法是改用會提供所需資源的其他觸發條件。舉例來說,您可以不要使用訂單已建立觸發條件,改用出貨訂單可出貨觸發條件,後者會提供單一出貨訂單。

「出貨訂單可出貨」觸發條件範例

問題 3:「排程時間」觸發條件不會提供任何資料

排程時間 觸發條件不會提供 Shopify 資源資料。若您在該觸發條件之後連接需要 Shopify 資源的動作,就會發生此錯誤。

若要解決此錯誤,請加入可提供所需資料的動作,例如 取得商品資料。如 問題 1 所述,您也必須加入 逐一執行 動作,以迭代任何由取得資料的動作所回傳的清單。

缺少必要商品的範例

問題 4:app 觸發條件未提供任何資料

問題 3 類似,某些由 app 建立的觸發條件不會提供所需的 Shopify 資源資料。舉例來說,「評論已建立」觸發條件可能會提供電子郵件地址,但不會提供許多動作 (例如 新增顧客標籤) 所需的顧客物件。

為解決此錯誤,您可以嘗試使用「取得資料」動作來擷取所需的 Shopify 資源。舉例來說,您可以使用 取得顧客資料,根據觸發條件提供的電子郵件地址取得顧客物件。與其他問題相同,您也必須加入 逐一執行 動作,以迭代任何由取得資料的動作所回傳的清單。

若無法使用「取得資料」動作,您可能需要聯絡應用程式開發人員,請他們調整其觸發條件以提供所需資料。

等待步驟數量超出上限

當您在工作流程中加入新的等待步驟時,可能會看到此錯誤訊息:工作流程的等待步驟數量必須不超過 40 個

Flow 將單一工作流程可使用的等待步驟數量限制為 40 個。若出現此錯誤,即代表已超過上限。若要解決,請在工作流程的其他位置移除部分等待步驟。

如果在引入此限制前,您已有包含超過 40 個等待步驟的工作流程,該工作流程仍會如常運作。不過,若要再新增等待步驟,您必須先移除部分現有步驟,讓總數低於上限。

此外,所有等待步驟的累計等待時間不得超過 90 天。

設定欄位值大小超出上限

當您在工作流程的條件中編輯設定欄位值時,可能會看到此錯誤訊息:設定欄位值必須小於 50kB

Flow 將設定欄位值的大小限制為 50kB。出現此錯誤,表示您已達到或超過上限。請縮短您要新增至該欄位的資料長度以解決問題。

如果您目前已有設定欄位的值達 50kB 或以上,工作流程仍會如常執行。不過,若要變更工作流程,您必須先調整造成錯誤的欄位值。

工作流程執行時的錯誤

當工作流程執行發生錯誤時,系統會將該次執行標示為失敗。錯誤訊息會顯示在該次執行的詳情中。以下是工作流程執行失敗時常見的錯誤類型:

  • Transient errors 是當 Flow 無法完成某個任務時發生的暫時性錯誤。系統會持續重試這些錯誤,直到成功或達到逾時上限。
  • Permanent errors 是 Flow 無法完成任務且無法重試時發生的錯誤。

暫時性錯誤

暫時性錯誤是指 Flow 無法完成某個任務時所發生的暫時性錯誤。系統會持續重試這些錯誤,直到成功或達到逾時上限。例如,執行連接器動作時,如果 Flow 無法聯絡合作夥伴,Flow 會在放棄前多次重試該任務。

重試會分散進行,且每次後續嘗試的延遲都會比前一次更長。工作流程遇到暫時性錯誤時,通常會因持續重試任務而長時間維持在執行中狀態。

任務重試成功,工作流程就會繼續進行。若重試的任務發生永久性錯誤,工作流程便會失敗。每個工作流程區段的執行時間上限合計為 36 小時。若具有暫時性錯誤的步驟在達到該上限前仍未成功,工作流程就會失敗。

包含等待步驟的工作流程會被劃分成多個區段,這會影響工作流程中逾時限制的計算方式。每個區段都是一組一起執行的任務,且各自都有 36 小時的時間上限。舉例來說,若工作流程有一個等待 1 小時的等待步驟,則等待步驟之前的任務會一起在同一個區段執行,而等待步驟之後的任務則會在另一個區段一起執行。若工作流程包含多個等待步驟,則每個等待步驟之間的任務會在同一個區段一起執行。沒有等待步驟的工作流程視為單一區段。

偶爾出現的暫時性錯誤很常見。不過,若某個工作流程在多次執行中一再遇到相同的暫時性錯誤,您可能需要重新設定該工作流程。

Step timed out

Step timed out 錯誤通常發生在工作流程中的某個任務嘗試在單一區段內查詢過多資料時。這類錯誤常見於對清單進行迴圈的工作流程,特別是巢狀清單過大、無法快速處理的情況。

發生此錯誤時,觸發條件或等待步驟會顯示為 retrying

若要解決此問題,請檢視會存取清單與巢狀清單的條件,確認設定是否正確。常見的狀況是條件去檢查整個商店的所有商品,而非僅檢查某筆訂單中的商品。

5XX 狀態碼

Flow 的多數動作都會進行 HTTP 呼叫。偶爾,網路或其他伺服器問題可能導致 HTTP 呼叫失敗,並回傳 500 到 599 之間的錯誤代碼。單次出現此錯誤通常不成問題,但若屢次發生,可能代表處理該任務的伺服器有狀況,而非步驟設定不當。

這類錯誤最常見於 Send HTTP Request 動作,但也可能發生在多數任務上。

GraphQL throttled

工作流程可完成的總工作量受到 API 速率限制,且該限制部分取決於您的方案。一般而言,除非工作流程極為複雜,或含有非預期的設計錯誤,否則不太會達到這些限制。

以下範例說明可能導致此錯誤的情況:

  • 在工作流程中,Liquid 或條件對包含大量資料的清單進行迴圈,例如檢查包含 HTML 的中繼欄位值。
  • 在工作流程中,Liquid 或條件對大型清單進行迴圈,例如在大型商店中迴圈處理 shop.orders
  • 工作流程造成無限迴圈,持續建立新的工作流程執行。例如,若在工作流程中使用 已新增顧客標籤 觸發條件,並包含 新增顧客標籤 動作,就可能發生此情況。

一旦達到限制,您會收到 GraphQL throttled 錯誤。此錯誤可能會影響其他嘗試執行的工作流程,因此發生時請立即加以處理。

永久性錯誤

永久性錯誤是指 Flow 無法完成任務且無法重試的情況。例如,如果因電子郵件地址無效,導致 Flow 無法寄送電子郵件,則不會重試該任務,而是讓工作流程失敗。

Fields: id are required but are empty

Shopify 動作需要一或多個資源 (例如商品、顧客或訂單) 才能執行。若必要資源不可用,動作便無法如預期執行。舉例來說,可以在 Shopify 管理介面中建立沒有顧客的訂單。若您執行某個動作 (例如 新增顧客標籤),該動作就會發生此錯誤而失敗。

為避免此錯誤,請在該動作前新增條件,檢查資源是否存在。延續前述範例,若您想在與 新增顧客標籤 相同的工作流程內寄送內部電子郵件,您可以將電子郵件動作放在可能失敗的步驟之前,或採用下列任一作法:

將動作放在平行分支 (某一步驟分出 2 個以上分支時):

範例:在觸發條件之後,兩個動作以平行方式執行。

在動作之前新增條件,檢查是否存在顧客。例如,您可以檢查 order / customer / id is not empty and exists

範例:示範如何以條件檢查 ID。

Flow does not have permission to your Google Sheets account. Please reconnect your account.

Google Sheets connector 需要您將 Google 帳戶連結至 Flow,才能有權寫入試算表。若 Flow 沒有寫入試算表的權限,就會發生此錯誤,可能是因為該帳戶已自 Flow 取消連結,或該帳戶無法存取該試算表。

若要解決此問題,請確認連接器所使用的帳戶能開啟該試算表,且具備編輯權限。若連結的是錯誤的帳戶,您可以先中斷連結,再連結正確的帳戶。

步驟:

  1. 開啟現有的工作流程,或建立新的工作流程。
  2. 在該工作流程中新增動作。
  3. 選取 Google Sheets 連接器。
  4. 按一下 中斷連結,然後按一下 連結,重新連結正確的 Google 帳戶。
Flow action received with invalid properties. Customer does not accept marketing.

寄送行銷電子郵件 動作不會寄送電子郵件給尚未同意接收的顧客,若工作流程嘗試這麼做,該動作會發生永久性失敗。

若要解決此問題,請在工作流程中新增條件以檢查顧客的訂閱狀態。您可以在寄送之前先確認顧客已同意接收行銷電子郵件。請依照 Email subscriber list management 的步驟操作。

Missing resource for [resource type]

此錯誤表示在工作流程能夠擷取其資料之前,某個資源 (例如 customerorder) 已被刪除。這通常發生在等待步驟之後,但若資源在觸發事件發生後立刻被刪除,也可能發生在觸發條件上。

錯誤發生時接收通知

如果錯誤會影響您的商店營運,您可以在錯誤發生時設定通知。您可以使用 Workflow error occurred 觸發條件,建立工作流程來發送錯誤通知。錯誤通知設計為減少干擾,因此您只會收到 one notification per workflow version

您可以先使用下列任一範本:

重試執行

在某些情況下,工作流程的執行可能會發生錯誤,或未依預期執行。完成疑難排解並修正相關工作流程中的問題後,您可以手動重試過去的執行,以追溯修正先前執行的結果。深入瞭解 retrying workflow runs

執行中 (受速率限制)

在某些情況下,一個或多個工作流程可能耗用過多資源。為避免因此造成問題,Flow 會刻意限制您商店的工作流程執行,這可能導致延遲與逾時錯誤。您可以重寫效率不佳的工作流程來修正,通常是修正未依預期運作的錯誤。

執行時間過長

此訊息表示某個工作流程的執行時間過長。常見原因是工作流程內使用了大量資料,Flow 需要花費很多時間擷取這些資料。

這類情況通常是由於請求路徑過深,必須跨越多層清單 (例如:針對某商品所屬的所有商品系列,請求該系列中所有商品的所有中繼欄位):

執行時間過長的工作流程範例。

這也常與工作流程的觸發步驟逾時有關。

對所有中繼欄位逐一處理的工作流程,通常可改為僅 using a specific metafield,以提升效率。不小心存取了多層巢狀清單 (例如:某商品所屬所有商品系列中的所有商品),或是特別龐大的清單 (例如:中繼欄位定義,包含所有物件的所有中繼欄位),很可能是無意為之。選擇正確的欄位 (單一商品,或物件上的單一中繼欄位) 可大幅提升效率。另外,也可以在「Get Product/Order/Customer Data」動作中搭配查詢條件,顯著減少處理的物件數量,同時仍能存取相關物件。

處理過多資料

此訊息表示某個工作流程的執行產生了大量資料。常見原因是條件過於複雜,需要檢查許多欄位,通常是因為檢查了多層清單中的欄位。

例如,條件「For at least one tag on this customer, for at least one order line items, for at least one tag on the line item」可能需要執行許多檢查,並產生大量資料以顯示這些檢查的結果:

嘗試處理過多資料的工作流程範例。

自動重試失敗

此訊息表示某個工作流程的執行因暫時性問題而一再失敗,且後續重試也不常成功。這通常發生在 Shopify 的 Admin API 或合作夥伴的 app 正在處理大量請求時。