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

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

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

「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%E3%83%AA%E3%82%AC%E3%83%BC%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/td-p/1847235

ご参考まで。

(キュー田辺)

田中さま

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

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

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

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

1 Like

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

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

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になるようにしたいのですが、エラーになってしまいます。

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

@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タグ周辺の改行や空白が除去されます。

ご参考まで。

(キュー田辺)

田辺様

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

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

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