Run code
[Run code] アクションでは、JavaScriptが実行されます。ワークフローの前のステップに関するデータを [Run code] アクションの入力として渡し、後に続くステップで使用する値を返します。
フィールド
[Run code] アクションには、次のフィールドが含まれます。
フィールド | 説明 |
---|---|
入力 | 必須です。[Run code] アクションへの入力として、前のステップのデータを使用するためのGraphQLクエリを作成します。 |
出力 | 必須です。アクションによって返されるデータ表現であり、GraphQLのスキーマ定義言語 (SDL) を使用して定義されます。 |
コード | 必須です。[Run code] アクションによって実行されるJavaScriptです。 |
入力データ
入力データは、[Run code] アクションの前に発生するステップから渡されます。このデータを組み込むには、[入力] フィールドにGraphQLクエリを記述します。クエリから返されるデータは、export default
でマークされた関数に対するinput
引数として使用できます。規則ではmain
と表示されます。
入力クエリは、Shopify Admin APIに対するクエリではなく、Flow環境データに関するクエリです。そのため、入力データにShopifyクエリを挿入することはできません。さらに、Flowはクエリの edges
および nodes
を処理するため、クエリには、これらやその他のページ構文を追加する必要はありません。
注文メモと項目のタイトルを取得するための入力例:
このデータは、以下のコードで使用できるinput
変数に変換されます。
入力は、以下の関数の署名によって構造分解することもできます。
メタフィールド ()
Run codeで単一のメタフィールド値にアクセスするには、まず、Flowの環境データにメタフィールドを追加する必要があります。 これは、Run code以外のアクションまたは条件で実行されます。 たとえば、ログ出力アクションを追加し、指示に従ってメタフィールドを追加できます。
ワークフロー環境にメタフィールドを追加した後は、[Run code] でアクセスできます。たとえば、OrderメタフィールドをgiftMessage
というエイリアス名で追加したとします。すると、次の入力クエリでこのメタフィールドにアクセスできます。
出力データ
[Run code] アクションでは、カスタムデータを返すことができます。コードが返すデータのタイプを定義するには、[出力] フィールドとGraphQLのスキーマ定義言語 (SDL) を使用します。たとえば、giftMessage
という文字列とtotalGifts
という番号を返すには、以下のコードを使用します。
コメントは任意ですが、Flow UIでデータを記述するために使用されます。このデータをJavaScriptコードで出力するために、次のタイプと一致するオブジェクトを返します。
さらに複雑なデータを返すカスタムタイプを定義することもできます。たとえば、message
という文字列およびamount
という番号を含む、Gift
というタイプを返すには、以下のコードを使用します。
このアクションに続くステップでこのデータにアクセスするには、[Run code] アクションの設定で定義したOutput
スキーマに従って入力されるRun codeという変数を使用します。この変数は、条件とアクションの両方で使用できます。
Console.log
console.log
を使用すると、トラブルシューティング用にFlowのワークフロー実行ログにデータを出力できます。出力はワークフローの実行ログに表示されます。例えば、以下のものが有効です。
Run codeアクションではconsole.info
やconsole.error
などの関数は使えません。
例
コード実行アクションの例は、Flowのリポジトリ例で確認できます。
制限
[Run code] アクションには、以下の制限があります。
- [Run code] アクションは、ECMA2020 JavaScriptに対応しています。NodeJSやCommonJS API、またはモジュールのインポートには対応していません。
- コードでhttpコール (
fetch
) を実行することはできません。 - ランダムな機能やクロックベースの機能を使用することはできません。
scheduledAt
やcreatedAt
などの日付データは、インプットとしてパスされます。 - Console.logはブラウザーコンソールにログインできません。
- メタフィールドのエイリアスは、 [Run code] アクションに直接追加することはできません。これを行う方法については、メタフィールドセクションを参照してください。
さらに、以下の制限が適用されます。
- 入力データのクエリの上限は5000文字です。
- 出力データのスキーマの上限は5000文字です。
- 出力データペイロードとConsole.log出力は、合計で50 kbに制限されています。
- コードの長さの上限は50000文字です。
- 実行時間の合計の上限は5秒です。
- メモリ使用量の上限は10MBです。
ロードマップ
今後、Flowチームは、[Run code] アクションの機能を追加していく予定です。次の表では、予定されている改善内容とその実行日程について概説しています。
改善内容 | 説明 | 配達予定 |
---|---|---|
ログ | 'console.log'を使用して、トラブルシューティングのために実行ログにデータを出力します。 | 完了。 |
外部APIコール | JavaScriptのfetchを使用してAPIを呼び出します。 | 2025年第1四半期 |
フィードバック
[Run code] アクションは、Shopify Flowにおけるステップの新しいタイプです。フィードバックや質問がある場合は、Flowコミュニティのこちらの投稿にコメントしてください。