Shopifyから商品をCSV形式でエクスポートする方法
Shopifyは、大手から中小企業まで、幅広い小売業者が利用する非常に人気のあるECプラットフォームです。Shopifyは、オンラインストアの開設や運営を容易にするツールを提供していますが、製品カタログ、顧客情報、注文履歴、在庫など、裏側で管理する必要がある膨大なデータは、すぐに複雑になりがちです。
企業は、業務効率化、より詳細な分析の実施、または自動化されたワークフローのサポートのために、Shopifyのデータをバックエンドデータベース、ERPシステム、CRM、データウェアハウス、またはその他のプラットフォームと統合する必要があることがよくあります。
そこで、Shopifyに対応したデータマッピングツールが不可欠になります。このツールを使用することで、企業はShopifyと他のシステム間でデータを効率的かつ正確に変換、関連付け、転送することができます。
ここでは、MapForceのビジュアルツールを使って、一般的なシナリオである「Shopifyから製品データをCSVファイルに抽出する」例を見ていきましょう。

How Can You Get Data Out of Shopify?
Shopifyは、企業がオンラインストアを構築・管理するために必要なツールを提供していますが、他の業務に必要なデータをプラットフォームから取り出すには、少し手間がかかります。
Shopifyは、これまで開発者がデータにアクセスし、エクスポートするのを支援するための複数のAPIとツールを提供してきましたが、最近では、GraphQLを推奨されるAPI形式として標準化しています。実際、Shopifyでは、今後すべての新しいアプリでGraphQLの使用が義務付けられる予定です。GraphQLのアプローチにより、非常に的確なデータ取得が可能になり、販売者は必要な特定のデータのみを1回のAPI呼び出しで取得できるようになります。これにより、パフォーマンスが向上し、不要なデータ転送が削減されます。

Shopifyは、開発者やIT担当者がショップのデータにアクセスできるように、主に2つのGraphQL APIを提供しています
Shopify 管理者向け GraphQL API: これは、バックエンドの操作に使用される主要な API です。商品、注文、顧客、在庫、配送情報など、ストアフロントのデータにアクセスできます。開発者は、この Admin GraphQL API を使用してデータを抽出・加工し、他のシステムに連携させることができます。
Shopify ストアフロント GraphQL API: ストアフロント APIは、主にカスタマイズされたショッピング体験やフロントエンドアプリケーションを構築するために使用されますが、製品リスト、コレクション、チェックアウトフローなど、公開されているストアのデータにもアクセスできます。これは、Shopifyのデータを顧客向けのプラットフォーム、例えばカスタムモバイルアプリに統合したい企業にとって特に役立ちます。
MapForceを使用してShopifyのデータを統合する
開発者は、MapForceを使用して、以下のことが可能です Shopifyのデータを統合する 他のデータ形式やシステムとの連携には、カスタムのマッピングを作成し、これらのGraphQL APIを直接呼び出すことで実現します。MapForceは、Shopifyのデータをデータ統合プロジェクトのソースまたはターゲットとして利用できるため、ShopForceは橋渡し役となり、Shopifyのデータ構造を、ターゲットとなるデータ構造が要求する形式に変換します(またはその逆も可能です)。
まず、開発者は、以下のものを作成する必要があります カスタムアプリケーション 自社のShopifyストア内で利用できるアプリケーションです。このカスタムアプリは、ShopifyのAPIと安全に連携するために必要なAPIの認証情報とアクセス権を提供します。これは、Shopifyアプリストアに掲載されている公開アプリとは異なり、 Shopifyアプリストア, Shopifyのパートナーが一般向けに提供する機能とは異なり、カスタムアプリは特定の店舗でのみ利用できるよう開発されており、他の店舗では利用できません。これにより、企業はデータ統合において、データのアクセス方法や利用方法を完全にコントロールできます ETLプロジェクト.
MapForceをGraphQL APIに接続する
Shopifyの管理画面またはストアフロントのGraphQL APIを使用して、他のシステムにShopifyのデータを統合するには、Shopifyのストアオーナーが完了する必要があるいくつかの重要な手順があります
- カスタムアプリケーションの開発を可能にします Shopifyでは、デフォルト設定でカスタムアプリの作成を制限しており、これは販売者の方々が不正なAPIアクセスから保護されるようにするための措置です。カスタムアプリを作成する前に、ストアのオーナーまたは管理者は、Shopifyの管理画面の設定で、カスタムアプリの開発を有効にする必要があります。
2. カスタムアプリを作成する(アプリ開発) カスタムアプリの開発機能を有効にしたら、次のステップは、実際にカスタムアプリを作成することです。これは、以下の手順で実行されます 「アプリケーションを開発する」 このセクションでは、店舗のオーナーや開発者が、API連携を目的とした新しいアプリケーションを定義することができます。
3. 適切なAPIアクセス権限を割り当ててください Shopifyでは、アプリがアクセスできるデータの範囲を細かく制御するために、アクセス許可のスコープを使用しています。ビジネスの利用目的に応じて、アプリに対して適切な管理APIまたはストアフロントAPIのスコープを付与する必要があります(例:注文の閲覧権限(read_orders)、商品の編集権限(write_products)、顧客情報の閲覧権限(read_customers))。
4. Shopifyストアにカスタムアプリをインストールしてください
アプリの設定が完了し、必要な権限が割り当てられた後、アプリはShopifyストアに直接インストールする必要があります。このインストールプロセスにより、必要なAPI認証情報が生成され、その中にAPIアクセス トークンが含まれます。
5. APIアクセス トークンを取得し、保存します
このアクセス トークンは、ShopifyのAPIへの安全かつ認証されたアクセスを提供します。このトークンは、外部のデータマッピングツールがAPIリクエストを認証するために使用されます。
ShopifyのデータをCSV形式に変換する
それでは、MapForceにおけるGraphQLのマッピングの例を見てみましょう。このマッピングプロジェクトは、一般的な要件を満たしています。具体的には、Shopifyの製品データをCSVファイルに抽出することで、別のシステムへのアップロードや、分析のためにExcelへの取り込みを可能にします。
Shopifyのコンポーネントをマッピングプロジェクトに組み込む際、MapForceは、ショップ名を入力する、管理APIまたはストアフロントAPIを選択する、APIアクセス トークンを入力する、といった手順をガイドします。その後、接続設定を定義し、必要に応じてHTTPセキュリティ設定を構成し、関連するヘッダーパラメータを追加し、クエリまたはミューテーションを作成することができます。

そのために、右側の利用可能なオプションから要素を選択することで、左側にGraphQLクエリを動的に構築できます。これにより、プロセス全体がガイドされます。また、「スキーマ取得」ボタンを押すと、MapForceがサーバーの自己検査情報とGraphQLクエリに基づいて、APIのレスポンス用のJSONスキーマ定義を自動的に作成します(このスキーマ定義をローカルにキャッシュして保存しておけば、マッピングを開く際に将来的に再利用できます)。
この例では、商品の情報を取得するためのクエリを使用し、クエリを構築する際に、左側の各ノードに対してどのようなデータが必要かを指定します。具体的には、ID、タイトル、そしてそれぞれのSKUと価格を持つバリエーションを取得します。このブログ記事では、GraphQLの仕組みに関するすべての詳細を網羅するわけではありませんが、https://graphql.org/learn/ や https://www.shopify.com/partners/blog/getting-started-with-graphql など、GraphQLについてさらに学ぶことができるオンラインリソースが多数存在します。
次に、MapForceは、ShopifyのAPI呼び出しをグラフィカルなコンポーネントとして挿入し、このコンポーネントはAPIリクエストとレスポンスの構造を表示します。

ここからが少し複雑になります。ShopifyのGraphQL APIはページネーションに基づいており、APIへの1回の呼び出しで特定の数の結果のみを返します(=1ページ分の結果)。したがって、クエリの結果として得られるすべてのデータを取得するためには、APIを複数回呼び出す必要があります。そのために、このAPI呼び出しを「getProducts」というカスタム関数でラップし、さらに、取得すべき追加のページが存在する場合、この関数を再帰的に呼び出すことで、すべてのデータを取得します。
これは、getProducts関数内のマッピングの右下隅に表示される内容です

基本的に、APIへの最初の呼び出しでhasNextPageがtrueを返す場合、以前のAPI呼び出しから返されたendCursorの位置に$after変数を設定して、同じ関数を再帰的に再度呼び出します。また、APIの利用制限を超えないように、APIへの呼び出しの間には1秒の待機時間を設けます。
そして、言うまでもなく、getProducts関数への再帰的な呼び出しの結果も、外側のgetProducts関数の結果に追記されます。その結果、最終的にすべての結果がメインのマッピングに返されます。
このgetProducts関数で実際のAPI呼び出しをラップすることで、API呼び出しの結果を取り出し、それを結果のCSVファイルに変換する主要な処理部分も、非常にシンプルで分かりやすい構造にすることができます

このサンプルプロジェクトにはMapForceが付属しており、ご自身のShopifyストア名とアクセス トークンを入力することで、このプロジェクトを実行できます。 そのためには、まず「examples」プロジェクトから「Shopify_ExportAllProducts.mfd」というサンプルファイルを開き、次に「getProducts」関数をダブルクリックし、最後に「Web Service POST」呼び出しオブジェクトをダブルクリックします。 ここで、ご自身のストアのURLと、正しいShopifyアクセス トークンを入力する必要があります。
その操作が完了すると、画面を「出力」タブに切り替え、すべての製品がCSV形式で生成されたリストのプレビューが表示されるようになります。

出力結果を直接保存することもできますし、このマッピングプロジェクトをMapForce Serverに展開して、高性能な自動化を実現することも可能です。
MapForceには、ShopifyからCSV形式だけでなく、XML、データベース、Excelなど、さまざまな形式でデータをエクスポートするための便利なグラフィカルツールが用意されています。
ぜひご自身で試してみてください。MapForceの30日間の無料トライアルをご利用いただけます。
Shopifyのデータ連携について、モバイルアプリ開発に関する記事で詳しく解説しています。ぜひお読みください 在庫情報を収集し、それをShopifyに連携させる リアルタイムで。