Shopify アプリに関する話題はこちら
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がいついつより前
最後の「条件」において、
具体的な日付より前、しか設定できないのが難点です。
「何日前」という指定ができません。
カスタムフィールドをうまく使えばいくかもしれません。
カスタムフィールドを使って、
「最終購入日より何日前」を実現するアイデアは、
下記の投稿を参考にしていただければと思います。
ご参考まで。
(キュー田辺)
成功
> 「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がいついつより前
最後の「条件」において、
具体的な日付より前、しか設定できないのが難点です。
「何日前」という指定ができません。
カスタムフィールドをうまく使えばいくかもしれません。
カスタムフィールドを使って、
「最終購入日より何日前」を実現するアイデアは、
下記の投稿を参考にしていただければと思います。
ご参考まで。
(キュー田辺)
田中さま
詳しいご説明ありがとうございます。
何日前という設定をするのは難しいのですね。
一旦タグの部分の設定をためしてみて、期間の部分については他の方法も試してみようと思います。
またわからない点があればご質問させていただきます。
たびたびで申し訳ないのですが、タグ付けでのデータ取得まではうまくいきましたが、
そのあとメタフィールドのアップデートのところでエラーとなって先に進めない状況です。
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タグ周辺の改行や空白が除去されます。
ご参考まで。
(キュー田辺)
田辺様
早速のご返信ありがとうございます。
データの型が違っていたのですね。
修正頂いたコードで一度試してみます。
リエンゲージメントの自動化で売り上げ向上へ!素敵なオンラインストアを作成し、見込み顧客の携帯へ広告を直接に送信する、またはSNSなどで宣伝すると、お客様がストアに行き着...
By Mirai Mar 24, 2024Shopifyは世界で最も革新的なブランドと起業家をサポートしています。個人起業家やあらゆる規模のビジネスの成長を後押しするために、Shopify アカデミーではShopif...
By SarahF_Shopify Mar 22, 2024オンラインストア運営はとてもやりがいのある活動です。新しい注文が入った時の喜びや世界中のお客様とやりとりできる可能性、商品に対して最高のレビューをもらった時の満足感は、毎日の...
By Mina Mar 13, 2024