執行程式碼

執行程式碼動作會執行 JavaScript。您可以將工作流程中先前步驟的資料當作輸入資料傳遞到執行程式碼動作,並傳回後續步驟要用的值。

欄位

執行程式碼動作包含以下欄位。

執行程式碼動作中使用的欄位。
欄位 說明
輸入 必填。此 GraphQL 查詢會使用先前步驟中的資料作為執行程式碼動作的輸入資料。
輸出 必填。動作要傳回的資料表示形式,以 GraphQL 的結構描述定義語言 (SDL) 定義。
代碼 必填。執行程式碼動作將執行的 JavaScript。

輸入資料

您可以從執行程式碼動作之前發生的步驟傳遞輸入資料。若要納入這些資料,可以在「輸入」欄位中撰寫 GraphQL 查詢。從查詢傳回的資料可用作具 export default 標記的函數的 input 引數。您無需在查詢中處理分頁或使用 edgesnodes,因為 Flow 會為您處理這些作業。

取得訂單備註和商品項目名稱的輸入範例:

{
  order {
    note
    lineItems {
      title
    }
  }
}

此資料會轉換為可在程式碼中使用的 input 變數:

export default function main(input) {
  // input.order.note
  // input.order.lineItems[0].title
}

輸入資料也可以在函數簽章中解構:

export default function main({order}) {
  // order.note
  // order.lineItems[0].title
}

輸出資料

執行程式碼動作可以傳回自訂資料。若要定義程式碼將傳回的資料類型,請使用「輸出」欄位和 GraphQL 的結構描述定義語言 (SDL)。例如,若要傳回名為 giftMessage 的字串和名為 totalGifts 的數字:

type Output {
  "The message to include in the gift"
  giftMessage: String!
  "The total number of gifts"
  totalGifts: Int!
}

備註並非必要,但可用於描述 Flow UI 中的資料。若要在 JavaScript 程式碼中輸出此資料,請傳回與類型相符的物件:

export default function main(input) {
  // your code
  return {
    giftMessage: 'Hello',
    totalGifts: 1,
  };
}

您也可以定義自訂類型以傳回更複雜的資料。例如:傳回名為 Gift 的類型,其中包含名為 message 的字串和名為 amount 的數字:

type Output {
  "The gift to send"
  gifts: [Gift!]!
}

type Gift {
  "The message to include in the gift"
  message: String!
  "The total number of gifts"
  amount: Int!
}

若要在此動作之後的步驟中存取此資料,請使用名為 Run code 的變數,該變數將根據您在執行程式碼動作設定中定義的 Output 結構描述鍵入。您可以在條件和動作中同時使用此變數。

範例

如需執行程式碼動作的範例,請參見 Flow 範例資源庫

限制

執行程式碼動作具有以下限制:

  • 程式碼無法匯入模組。
  • 程式碼無法執行 HTTP 呼叫 (fetch)。
  • 您的程式碼無法執行 console.log
  • 無法使用隨機和時鐘型函數。日期資料 (例如 scheduledAtcreatedAt 資料) 可以作為輸入傳入。

此外,系統會強制執行以下限制:

  • 輸入資料查詢上限為 5000 個字元。
  • 輸出資料結構描述上限為 5000 個字元。
  • 輸出資料酬載上限為 50 KB。
  • 程式碼不能超過 50000 個字元。
  • 總執行時間上限為 5 秒。
  • 記憶體使用量上限為 10 MB。

改善藍圖

Flow 團隊計劃逐步為執行程式碼動作新增功能。下表列出規劃的改善項目和預計完成日期。

執行程式碼動作的功能改善藍圖
改善 說明 預計完成日期
修復錯誤 錯誤修正和清除 2024 年 2 月
記錄 使用「console.log」將資料輸出到執行記錄以進行疑難排解。 2024 年 4 月初
外部 API 呼叫 使用 JavaScript 的 fetch 呼叫 API。 2024 年第三季

意見回饋

執行程式碼動作是 Shopify Flow 新的步驟類型。如有意見回饋和相關疑問,請在這則 Flow 社群貼文留言。

準備好開始透過 Shopify 銷售商品了嗎?

免費試用