knowledgeS

Knowledge

知識

【Shopify 機能拡張】Shopify Flowで「注文管理のエクスポート機能の出力ファイル内のメモ欄」に「他の注文情報」を自動で追加する方法!

注文管理のエクスポート機能の出力ファイル内のメモ欄に他の注文情報を自動で追加する方法

目次

  1. はじめに
  2. 解決策の概要
  3. Shopifyの注文データを取得し、注文情報のメモ欄に出力する流れ

    1.Shopify FlowのRun codeを活用して注文データを取得

    2.Run codeで整形した出力データを注文のメモ欄に挿入

  4. まとめ

    ● Run code用:GraphQL クエリ

    ● Run code用:SDL定義(スキーマ)

    ● Run code用:JavaScript コード(Run code内)

    ● Shopify Flowインポート用:ワークフローファイル

はじめに

Shopifyの注文管理画面には標準でエクスポート機能が備わっていますが、出力されるCSVには注文番号や注文された商品名などの標準的な情報しか含まれていません。そのため、普段からECを運営する事業者様からShopify上で保持されている他の情報を取得できるようにして欲しいという要望は度々受けることがあります。今回は「エクスポートされたファイルに商品ごとの割引額を追加したい」という要望を受けました。

Shopify管理画面のエクスポート機能↓

通常、注文データのエクスポートには『Matrixify』などの外部アプリを使うと柔軟なカスタマイズが可能です。しかし、今回のケースでは、Shopifyの標準エクスポート機能で出力されたCSVフォーマットをそのまま使用する必要がありました。なぜなら、このフォーマットに依存した外部システムとの連携がすでに組まれていたからです。そこで、標準のエクスポート機能を活かしながら、商品ごとの割引額をCSVに追加する方法を考えました。

本記事では、Shopify Flowを活用し、エクスポートした注文データの注文情報のメモ欄に商品別の割引額を自動追加する方法を紹介します。

解決策の概要

今回のアプローチでは、以下の手順で割引額を追加します。

Shopifyの注文データを取得し、注文情報のメモ欄に出力する流れ


Shopify Flowの Run code を使用し、GraphQL API を通じてShopifyから注文情報を取得します。取得したデータは、JavaScript を使って表示させたい形に整形し、注文情報のメモ欄に出力されるようにします。
実際のワークフローは以下の図のようになります。

1.Shopify FlowのRun codeを活用して注文データを取得

Shopify Flowの説明についてはこちらを、Run codeの説明についてこちらのShopifyヘルプセンターの記事を参考にしてください。本記事では詳細な説明については割愛します。
Shopify FlowのRun codeは、カスタムのJavaScriptコードを実行できる機能です。この機能を使用することで、Shopifyの標準的なワークフローにない処理を柔軟に組み込むことができます。Run codeでは、まずGraphQLを使ってShopifyから必要なデータを取得し、そのデータをJavaScriptで処理して最終的な結果を返すという流れになります。これにより、注文データや商品情報など、標準機能では得られないカスタマイズしたデータを取り扱い、ワークフロー内で活用できるようになります。

実際にRun codeアクションに入力したコードのイメージが以下の図の通りになります。実行すると、Shopify Flowで取得された注文データの中の商品名とその商品別の割引額が取得され、注文情報のメモ欄に挿入する準備が整います。コードの詳細は最後に載せてます。

2.Run codeで整形した出力データを注文のメモ欄に挿入

ワークフローのアクションから「Update order note」を選択し、下図の通りに「変数の追加」リンクボタンをクリックし、Run codeで出力される変数を選択します。

この設定により、ワークフローが実行されるたびに、{{runCode.note}} のデータが 注文情報のメモ欄に出力に追加されていきます。実際のワークフロー実行後のShopifyの注文管理の詳細画面は以下のようになります。

Shopifyの注文管理のエクスポート機能の出力ファイルのメモ欄も同様に商品別の割引額が出力されるようになります。

まとめ

今回紹介した方法を使えば、Shopifyの標準エクスポート機能で出力したファイルに、商品名と商品別の割引額を挿入すること できます。

Shopify FlowのRun codeで注文された商品名と商品別の割引額を取得し整形
✅ ワークフローの「Update order note」アクションで整形したデータを注文のメモ欄に挿入

今回は「商品別の割引額」を追加するケースでしたが、ShopifyのRun code でGraphQL APIを活用すれば、Shopify内で保持される他の注文情報も注文のメモ欄に挿入可能です。

Shopifyのエクスポート機能をもっと便利に使いたい方は、ぜひこの方法を試してみてください!読者様のお役に立ちますように!

● Run code用:GraphQL クエリ

query{
  order{
    note
    lineItems{
      name
      discountAllocations{
        allocatedAmountSet{
          shopMoney{
            amount
          }
        }
      }
    }
  }
}

● Run code用:SDL定義(スキーマ)

type Output {
  note: String!
}

● Run code用:JavaScript コード(Run code内)

export default function main(input) {
  // 初期化
  let note = input.order.note || "";

  // 各商品(lineItem)から商品名(name)と割引額(discountAllocations.allocatedAmountSet.shopMoney.amount)を取得して、メモ欄(note)とに追加
  input.order.lineItems.forEach(item => {
    const discountAmount = item.discountAllocations?.[0]?.allocatedAmountSet?.shopMoney?.amount;
    if (discountAmount) {
      const message = `商品名「${item.name}」の割引額「${discountAmount}円」`;
      note += message;
    }
  });

  // カンマ区切りの文字列を作成
  return {
    note: note.trim() // 余分な空白を取り除いて返す
  };
}