> ## Documentation Index
> Fetch the complete documentation index at: https://www.integrate.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# ETL: ShopifyのProductにデータベースの製品データを連携するには？

> Integrate.io ETLのCurl関数を使用して、データベースの商品マスタをShopifyのProductに連携する方法を紹介します。

XplentyのCurl Functionを使えば、Shopifyからデータを読み込むだけでなく、Shopifyにデータを書き込むことが可能です。
Xplentyのお客様には、これまで外部の仕入れ先から商品、在庫情報を取得し、Shopifyへデータを連携するプロセスをXplentyで自動化することで、マニュアルでの運用を排除し、自社のECサイトのオペレーションを大幅に簡略化かつ省力化することができました。

今回は、データベースの商品マスタをShopifyのProductに連携する方法を紹介します。

## 1. コネクションを作成する

### DBのコネクションを作成する

ConnectionのメニューからMySQLを選択し、必要な情報を入力します。

<Frame>
  <img src="https://mintcdn.com/integrateio/u3KZjgbItgbZsh3u/images/japanese-knowledge-base/restapi-part07-jp/image-1.webp?fit=max&auto=format&n=u3KZjgbItgbZsh3u&q=85&s=a50b69204307e5e7cd01e254b1a555b6" alt="restapi-part07-jp image 1" width="2258" height="1450" data-path="images/japanese-knowledge-base/restapi-part07-jp/image-1.webp" />
</Frame>

### Shopifyのコネクションを作成する

ConnectionのメニューからShopifyを選択し、Shop addressを入力します。

<Frame>
  <img src="https://mintcdn.com/integrateio/u3KZjgbItgbZsh3u/images/japanese-knowledge-base/restapi-part07-jp/image-2.webp?fit=max&auto=format&n=u3KZjgbItgbZsh3u&q=85&s=6350812661d2546c073848efd201f5c3" alt="restapi-part07-jp image 2" width="2258" height="1478" data-path="images/japanese-knowledge-base/restapi-part07-jp/image-2.webp" />
</Frame>

## 2. パイプラインを作成する

MySQLとShopifyのコネクションが作成できたら、Packageメニューに移動し、新しくパイプラインを作成していきます。

### データベースコンポーネントの設定

<Frame>
  <img src="https://mintcdn.com/integrateio/u3KZjgbItgbZsh3u/images/japanese-knowledge-base/restapi-part07-jp/image-3.webp?fit=max&auto=format&n=u3KZjgbItgbZsh3u&q=85&s=db267edd933e27cfd06e536d0bd5d1a0" alt="restapi-part07-jp image 3" width="2258" height="1478" data-path="images/japanese-knowledge-base/restapi-part07-jp/image-3.webp" />
</Frame>

### Selectコンポーネントの設定

Selectコンポーネントを追加し、式エディタで設定します。CCurl関数を使うことで、すでにXplentyで作成済みのコネクションを使用してアクセスすることが可能です。

`CCurl(param1,param2,param3,param4,param5)`

**パラメータの説明**

* param1: APIリクエスト先のURL
* param2: HTTPメソッドを指定。データを新規作成する場合、「POST」をセット、更新する場合は「PUT」をセット
* param3: HTTPヘッダー情報をセット
* param4: HTTPリクエストBody情報をセット
* param5: Xplentyでコネクション生成時に付与されるConnection IDをセット（コネクション画面で確認できます。）

#### リクエスト例1： Productを新規作成する

`CCurl(CONCAT('https://','xpjp2.myshopify.com','/admin/api/2021-04/products.json'),'POST','{"Content-Type":"application/json" }',CONCAT('{"product": {"title":"',title,'","body_html":"',body_html,'","vendor":"',vendor,'","product_type": "',product_type,'","status":"','draft','","tags":["',vendor,'"]}}'),'SHOPIFY_CONNECTION_12250')`

<Frame>
  <img src="https://mintcdn.com/integrateio/X6Tbr12w4wun31Cu/images/japanese-knowledge-base/restapi-part07-jp/image-4.webp?fit=max&auto=format&n=X6Tbr12w4wun31Cu&q=85&s=89ad5ec680616a26e935d709bc2b27f4" alt="restapi-part07-jp image 4" width="2258" height="1450" data-path="images/japanese-knowledge-base/restapi-part07-jp/image-4.webp" />
</Frame>

#### リクエスト例2： Productを更新する

`CCurl(CONCAT('https://','xpjp2.myshopify.com','/admin/api/2021-04/products.json'),'PUT','{"Content-Type":"application/json" }',CONCAT('{"product": {"id":"',id,'","title":"',title,'"}'),'SHOPIFY_CONNECTION_12250')`

### パイプライン

Curl関数を使用する場合もXplentyではDestinationコンポーネントをパイプラインに含める必要があります。今回の例では、Curl関数を実行した際に取得されるHTTP Responseの結果ステータスなどの情報をストアするために、S3などのFile Storageを追加します。

<Frame>
  <img src="https://mintcdn.com/integrateio/X6Tbr12w4wun31Cu/images/japanese-knowledge-base/restapi-part07-jp/image-5.webp?fit=max&auto=format&n=X6Tbr12w4wun31Cu&q=85&s=640ea1618606f536bfbc2353111b827b" alt="restapi-part07-jp image 5" width="2258" height="1450" data-path="images/japanese-knowledge-base/restapi-part07-jp/image-5.webp" />
</Frame>

これでパイプラインの設定は完了です。

## まとめ

Xplentyを使用することで、DBのデータを簡単にShopifyへ連携することができます。今回のブログでご紹介したとおり、DBから取得した情報をCurl関数を使用し、自由にカスタマイズし、データを送信することができるので、みなさんのユースケースに合わせて柔軟なパイプライン作成が可能です。
もし、興味のある方は、[XplentyのHP](https://www.xplenty.com/jp/)からオンラインデモにお申し込みください。
