預覽 Shopify Flow 中使用的 API 資料
您在建立工作流程時,可能常須透過條件和動作使用您的商店資料。Shopify Flow 藉由呼叫 GraphQL Admin API 來存取商店資料,因此您可以存取 API 中絕大部分的欄位。
在建立工作流程時,經常會遇到以 API 為依據的欄位名稱和描述,但您可能需要知道 API 所輸出的資料。例如,對於從訂單草稿建立的訂單,您可能想知道對應的應用程式名稱。此外,您也可能想確保工作流程輸出的資料符合您的預期,或以您預期的形式輸出。
若要檢視資料,Shopify Flow 中有多個可供選擇的選項。
尋找 Shopify 管理介面中的欄位
多數情況下,您可以從 Shopify 管理介面取得資料。
使用即時工作流程中的欄位
您可以使用便於檢視資料的動作來產生工作流程,而不是預定在最終版本使用的動作。舉例來說,假設您想建立取消訂單工作流程,一開始可使用「傳送內部電子郵件」動作或「傳送 Slack 訊息」動作 (如果您使用 Slack),而不是使用可能錯誤取消訂單的「取消訂單」動作。
步驟:
- 選擇可手動觸發的觸發條件。
- 在工作流程中新增動作並將其連結至觸發條件,例如「傳送內部電子郵件」。
- 將您要檢查的變數加到「傳送內部電子郵件」動作的「訊息」部分。
- 點擊「開啟工作流程」。
- 手動執行工作流程或誘導觸發條件啟動,藉此觸發工作流程。例如,若您使用「訂單已建立」觸發條件,則應建立測試訂單。
- 執行工作流程後,查看電子郵件中的變數。
參閱 JSON 資源頁面
Shopify 管理介面中的多數資源頁面 (如「訂單」、「商品」或「顧客」頁面),都能讓您查看各自頁面所用的資料。這些資料與 Shopify Flow 使用的命名和格式不同,但值與 GraphQL Admin API 中的值相符。若要檢視資料,請將 .json
加到網址。
例如,前往 Shopify 管理介面中的「訂單」頁面並點擊一筆訂單,即可開啟該訂單頁面。接著變更瀏覽器網址列中的頁面網址 (如下所示):
https://<your_domain>.myshopify.com/admin/orders/3804849891234
改為:
https://<your_domain>.myshopify.com/admin/orders/3804849891234.json
使用 GraphiQL 或第三方 API 工具
若要直接查詢 API,可以使用 Postman 等第三方 API 工具,或 Shopify 提供的免費工具「GraphiQL」。後者可提供最準確的結果,但使用時必須熟知 GraphQL 查詢的建立方式。
Shopify 針對 GraphiQL 提供含一般資料的網頁式 GraphiQL Explorer 和 GraphiQL 應用程式。您可以透過 GraphiQL 建立 GraphQL 查詢,且與 Shopify Flow 中顯示的欄位名稱完全相符。如果您使用該應用程式,這些值也與您的商店完全相符。
藉由此工具,您可以參照商店實際資料確定 Shopify Flow 使用的資料。以下列查詢內容為例:
{
orders(first:5, reverse:true) {
nodes {
createdAt
app {
name
}
channelInformation {
app {
title
}
}
}
}
}
在下列結果中,變數「order / app / name
」顯示訂單的應用程式名稱。在此情況下,訂單是從訂單草稿應用程式建立,因此值為「Draft Orders
」。管道資訊僅適用於 Point of Sale
應用程式。
{
"data": {
"orders": {
"nodes": [
{
"createdAt": "2023-04-10T12:32:41Z",
"app": {
"name": "Draft Orders"
},
"channelInformation": null
},
{
"createdAt": "2023-04-10T12:29:12Z",
"app": {
"name": "Draft Orders"
},
"channelInformation": null
},
{
"createdAt": "2023-03-17T20:23:10Z",
"app": {
"name": "Draft Orders"
},
"channelInformation": null
},
{
"createdAt": "2023-03-17T20:20:53Z",
"app": {
"name": "Draft Orders"
},
"channelInformation": null
},
{
"createdAt": "2023-03-17T15:45:15Z",
"app": {
"name": "Point of Sale"
},
"channelInformation": {
"app": {
"title": "Point of Sale"
}
}
}
]
}
}