FROM CACHE - jp_header
解決済

shopify flowのget customer dataのクエリについて

yo0406
観光客
7 0 1

shopify flowのスケジュール実行で顧客データを取得したいのですが、例えば「90日経過」のタグが付いていて最終購入日から120日以上経過している顧客を取得するクエリはどのように書けばよいでしょうか?

 

クエリの書き方が見つからず困っております。

 

1 件の受理された解決策

Qcoltd
Shopify Partner
1042 422 405

成功

> 「90日経過」のタグが付いて

 

こちらは下記のようにクエリを設定します。

tag:'90日以内'

 

 

最終購入日から120日以上経過している

 

こちらについては設定できないように思いました。

 

クエリに、設定できる項目は、おそらく下記のページにて紹介されているものだけです。

https://shopify.dev/api/admin-graphql/2022-07/queries/customers

accepts_marketing
country
customer_date
email
last_abandoned_order_date
order_date
orders_count
phone
state
tag
tag_not
total_spent
updated_at

 

 

こういったことならできます。

顧客タグに'90日以内'を持ち、かつ、合計購入金額が3万円未満

tag:'90日以内' AND total_spent:<30000

 

 

最終購入日で絞り込みたい場合は、

下記のようにすれば惜しいところまでは行けます。

 

Get Customer Data

for each

条件: last_orderのcreated_atがいついつより前

 

最後の「条件」において、

具体的な日付より前、しか設定できないのが難点です。

「何日前」という指定ができません。

 

カスタムフィールドをうまく使えばいくかもしれません。

カスタムフィールドを使って、

「最終購入日より何日前」を実現するアイデアは、

下記の投稿を参考にしていただければと思います。

https://community.shopify.com/c/shopify-%E3%82%A2%E3%83%97%E3%83%AA/shopify-flow%E3%81%AE%E3%83%88%E...

 

ご参考まで。

(キュー田辺)

株式会社Q (キュー)
グラフィックデザイン、アパレル事業、Web制作など色々やっている渋谷区代々木の会社です。ShopifyでのECサイトの運営・開発も行なっています。
私たちについて: https://web.q-co.jp/ テックブログ: https://techlab.q-co.jp/

元の投稿で解決策を見る

5件の返信5

Qcoltd
Shopify Partner
1042 422 405

成功

> 「90日経過」のタグが付いて

 

こちらは下記のようにクエリを設定します。

tag:'90日以内'

 

 

最終購入日から120日以上経過している

 

こちらについては設定できないように思いました。

 

クエリに、設定できる項目は、おそらく下記のページにて紹介されているものだけです。

https://shopify.dev/api/admin-graphql/2022-07/queries/customers

accepts_marketing
country
customer_date
email
last_abandoned_order_date
order_date
orders_count
phone
state
tag
tag_not
total_spent
updated_at

 

 

こういったことならできます。

顧客タグに'90日以内'を持ち、かつ、合計購入金額が3万円未満

tag:'90日以内' AND total_spent:<30000

 

 

最終購入日で絞り込みたい場合は、

下記のようにすれば惜しいところまでは行けます。

 

Get Customer Data

for each

条件: last_orderのcreated_atがいついつより前

 

最後の「条件」において、

具体的な日付より前、しか設定できないのが難点です。

「何日前」という指定ができません。

 

カスタムフィールドをうまく使えばいくかもしれません。

カスタムフィールドを使って、

「最終購入日より何日前」を実現するアイデアは、

下記の投稿を参考にしていただければと思います。

https://community.shopify.com/c/shopify-%E3%82%A2%E3%83%97%E3%83%AA/shopify-flow%E3%81%AE%E3%83%88%E...

 

ご参考まで。

(キュー田辺)

株式会社Q (キュー)
グラフィックデザイン、アパレル事業、Web制作など色々やっている渋谷区代々木の会社です。ShopifyでのECサイトの運営・開発も行なっています。
私たちについて: https://web.q-co.jp/ テックブログ: https://techlab.q-co.jp/
yo0406
観光客
7 0 1

田中さま

 

詳しいご説明ありがとうございます。

何日前という設定をするのは難しいのですね。

 

一旦タグの部分の設定をためしてみて、期間の部分については他の方法も試してみようと思います。

 

またわからない点があればご質問させていただきます。

 

 

yo0406
観光客
7 0 1

たびたびで申し訳ないのですが、タグ付けでのデータ取得まではうまくいきましたが、

そのあとメタフィールドのアップデートのところでエラーとなって先に進めない状況です。

 

Get Customer Data

for each

Update customer metafield

 

valueの内容

{% assign elapsedday = 240 | times: 24 | times: 60 | times: 60 %}
{% assign currentday = 'today' | date: '%s' %}
{% assign lastorderfrom = getCustomerData.lastOrder.createdAt | date: '%s' | plus: elapsedday %}
{% if lastorderfrom <= currentday %}true{% else %}false{% endif %}

 

最終注文日に240日をプラスして、本日の日付より前の場合はtrueになるようにしたいのですが、エラーになってしまいます。

 

修正方法をご教授いただければ幸いです。

Qcoltd
Shopify Partner
1042 422 405

@yo0406 様

 

ロジックの正しさは確認しておりませんが、

おそらく下記のようにすることでエラーが出なくなります。

{%- assign elapsedday = 240 | times: 24 | times: 60 | times: 60 -%}
{%- assign currentday = 'today' | date: '%s' | plus: 0 -%}
{%- assign lastorderfrom = getCustomerData.lastOrder.createdAt | date: '%s' | plus: elapsedday -%}
{%- if lastorderfrom <= currentday -%}true{%- else -%}false{%- endif -%}

 

どうやら、

currentdayが数値として扱われておらず、

if文で、lastorderfromと比較する際にエラーが出るようです。

(lastorderfromは数値、currentdayは数値ではない、ので、異なる型を比較しようとしてエラー。)

 

そのため、

currentdayにplus: 0することで、数値にキャストしています。

また、各liquidタグを{%- -%}に変更しました。

こうすることで、liquidタグ周辺の改行や空白が除去されます。

 

ご参考まで。

(キュー田辺)

株式会社Q (キュー)
グラフィックデザイン、アパレル事業、Web制作など色々やっている渋谷区代々木の会社です。ShopifyでのECサイトの運営・開発も行なっています。
私たちについて: https://web.q-co.jp/ テックブログ: https://techlab.q-co.jp/
yo0406
観光客
7 0 1

田辺様

 

早速のご返信ありがとうございます。

データの型が違っていたのですね。

修正頂いたコードで一度試してみます。