# 顧客の過去1年間の購入金額を取得し顧客メタフィールドに保存する

**URL:** <https://community.shopify.com/t/topic/296134>\
**Category:** 技術的なQ＆A\
**Created:** [February 15, 2024, 10:46am UTC](https://community.shopify.com/t/topic/296134 "2024-02-15T10:46:19Z")\
**Posts on this page:** 4\
**Page:** 1

## AI-generated summary

顧客の過去1年間の購入金額を計算し、顧客メタフィールドに保存する実装方法についての質問です。

**課題:**
- Shopify FlowでAdmin APIの制限により注文データ取得が100件まで
- 100件を超える購入がある場合の対応方法

**提案された解決策:**

**方法1: 年間100件以下の購入を前提とする場合**
- Order Created → Get order data → Sum → Update customer metafieldの流れ
- 高度なクエリで`email:{{order.customer.email}}`を設定
- `getOrderData.totalPriceSet.shopMoney.amount`を合計
- 返金時のマイナス処理に注意が必要

**方法2: 年間100件以上の購入がある場合**
- メタフィールドをリスト型にして注文情報を追加
- Liquidを使用してメタフィールド内で1年間の購入金額を計算

**修正点:**
初回の高度なクエリでは1年以内の絞り込みができていなかったため、正しくは`email:{{order.customer.email}} AND created_at:>'{{order.createdAt | date_minus: "1 year"}}'`を設定する必要があります。

質問者は提案に感謝し、参考にする意向を示しています。

<div class="post-metadata">

**Author:** ![r-irisawa](https://avatars.discourse-cdn.com/v4/letter/r/3be4f8/32.png) [@r-irisawa](https://community.shopify.com/u/r-irisawa)\
**Post date:** [February 15, 2024, 10:46am UTC](https://community.shopify.com/t/topic/296134/1 "2024-02-15T10:46:19Z")

</div>

表題の通りですが、どのように実装すれば考え中です。

shopify flowで注文データ取得件数の上限は100件だと思います。※admin apiの仕様

この100件を反復し、日付で絞り込めばと思いますが、どのようにflowを組めばよいかわからず

またmechanicでに実現できないかの検証も進めていますが、こちらも同じ問題を抱えていると思います。

どなたか、表題のような実装を実現できた方いらっしゃいましたら教えていただけると助かります。

---

<div class="post-metadata">

**Author:** ![Qcoltd](https://yyz1.discourse-cdn.com/shopifyforum/user_avatar/community.shopify.com/qcoltd/32/900_2.png) [@Qcoltd](https://community.shopify.com/u/Qcoltd)\
**Post date:** [February 15, 2024, 2:32pm UTC](https://community.shopify.com/t/topic/296134/2 "2024-02-15T14:32:40Z")

</div>

@r-irisawa 様

やり方は2つ考えられます。

(1) 1年間に100件以上購入することはない、と割り切る場合

Order Created

↓

Get order data

```auto
高度なクエリで email:{{order.customer.email}} を設定

```

↓

Sum

```auto
getOrderData.totalPriceSet.shopMoney.amount

```

↓

Update customer metafield

下図のようになります。

 ![teststore-·-Flow-·-Shopify.png](https://canada1.discourse-cdn.com/shopifyforum/original/4X/b/4/e/b4ece386806437457b078416b39e3315194aa9d2.png)

**※返金時にマイナスするShopify Flowを組むとなお良いです。**

(2) 1年間に100件以上購入することも考える場合

この場合は、やり方のコンセプトの説明だけになるのですが、

まず購入履歴、という顧客メタフィールドを作成します。

このメタフィールドはメタオブジェクトのメタフィールドリストにします。

メタオブジェクトは注文日と注文金額を保存します。

Shopify Flowにて、Order Createdで、そのメタフィールドリストに注文情報を追加していきます。

また、同様のFlow内にて、「1年間の購入金額」メタフィールドのアップデートのvalue内で、liquidを駆使して購入履歴メタフィールドの値を計算して、1年間の購入金額を設定します。

ご参考まで。

(キュー田辺)

---

<div class="post-metadata">

**Author:** ![Qcoltd](https://yyz1.discourse-cdn.com/shopifyforum/user_avatar/community.shopify.com/qcoltd/32/900_2.png) [@Qcoltd](https://community.shopify.com/u/Qcoltd)\
**Post date:** [February 20, 2024, 11:44am UTC](https://community.shopify.com/t/topic/296134/3 "2024-02-20T11:44:41Z")

</div>

@r-irisawa 様

上記の、

Get order data

```auto
高度なクエリで email:{{order.customer.email}} を設定

```

ですと、1年以内の絞り込みができていませんでした。

正しくは下記になります。

```auto
高度なクエリで email:{{order.customer.email}} AND created_at:>'{{order.createdAt | date_minus: "1 year"}}' を設定

```

失礼いたしました。

(キュー田辺)

---

<div class="post-metadata">

**Author:** ![r-irisawa](https://avatars.discourse-cdn.com/v4/letter/r/3be4f8/32.png) [@r-irisawa](https://community.shopify.com/u/r-irisawa)\
**Post date:** [February 21, 2024, 2:25am UTC](https://community.shopify.com/t/topic/296134/4 "2024-02-21T02:25:08Z")

</div>

ありがとうございます！

参考にさせていただきます！
