コードを実行

[コードを実行する] アクションでは、JavaScriptが実行されます。ワークフローの前のステップに関するデータを [コードを実行する] アクションの入力として渡し、後に続くステップで使用する値を返します。

フィールド

[コードを実行] アクションには、次のフィールドが含まれます。

[コードを実行する] アクションで使用されるフィールド。
フィールド 説明
入力 必須です。[コードを実行する] アクションへの入力として、前のステップのデータを使用するためのGraphQLクエリを作成します。
出力 必須です。アクションによって返されるデータ表現であり、GraphQLのスキーマ定義言語 (SDL) を使用して定義されます。
コード 必須です。[コードを実行する] アクションによって実行されるJavaScriptです。

入力データ

入力データは、[コードを実行する] アクションの前に発生するステップから渡されます。このデータを組み込むには、[入力] フィールドにGraphQLクエリを記述します。クエリから返されるデータは、export defaultでマークされた関数に対するinput引数として使用できます。クエリにおけるページングの処理やedgesおよびnodesの使用は、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,
  };
}

さらに複雑なデータを返すカスタムタイプを定義することもできます。たとえば、messageという文字列およびamountという番号を含む、Giftというタイプを返すには、以下のコードを使用します。

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!
}

このアクションに続くステップでこのデータにアクセスするには、[コードを実行する] アクションの設定で定義したOutputスキーマに従って入力されるRun codeという変数を使用します。この変数は、条件とアクションの両方で使用できます。

コード実行アクションの例は、Flowのリポジトリ例で確認できます。

制限事項

[コードを実行する] アクションには、以下の制限があります。

  • コードでモジュールをインポートすることはできません。
  • コードでhttpコール (fetch) を実行することはできません。
  • コードでconsole.logを使用することはできません。
  • ランダムな機能やクロックベースの機能を使用することはできません。scheduledAtcreatedAtなどの日付データは、インプットとしてパスされます。

さらに、以下の制限が適用されます。

  • 入力データのクエリの上限は5000文字です。
  • 出力データのスキーマの上限は5000文字です。
  • 出力データのペイロードの上限は50kbです。
  • コードの長さの上限は50000文字です。
  • 実行時間の合計の上限は5秒です。
  • メモリ使用量の上限は10MBです。

ロードマップ

今後、Flowチームは、[コードを実行する] アクションの機能を追加していく予定です。次の表では、予定されている改善内容とその実行日程について概説しています。

[コードを実行する] アクションの改善のロードマップ
改善内容 説明 配達予定
バグ修正 バグ修正とクリーンアップ 2024年2月
ログ 'console.log'を使用して、トラブルシューティングのために実行ログにデータを出力します。 2024年4月上旬
外部APIコール JavaScriptのfetchを使用してAPIを呼び出します。 2024年第3四半期

フィードバック

[コードを実行する] アクションは、Shopify Flowにおけるステップの新しいタイプです。フィードバックや質問がある場合は、Flowコミュニティのこちらの投稿にコメントしてください。

Shopifyで販売を開始する準備はできていますか?

無料体験を試す