FROM CACHE - jp_header
このコミュニティはピアツーピアサポートに移行しました。Shopify サポートは今後、このコミュニティへのサービスを提供いたしません。これからもぜひ、他のマーチャントやパートナーとつながり、サポートし合い、経験を共有してください。 当社の行動規範に違反する行動や削除を希望するコンテンツがありましたら、引き続きご報告ください

オートメーションで決まった日(毎月月初)にメタフィールドを更新したい

解決済

オートメーションで決まった日(毎月月初)にメタフィールドを更新したい

n_ogawa3
遊覧客
22 0 6

Shopifyの自動化(オートメーション)を使って、単純に「毎月月初に顧客メタフィールドを更新する(全ての顧客のメタフィールドをfalseへ変更する)」というのを設定したいのですが、うまくいきません。
どのように設定したらいいでしょうか?

1 件の受理された解決策

Qcoltd
Shopify Partner
1203 480 463

成功

@n_ogawa3 様

 

興味があり調査してみました。

 

結論から申しますと、

Matrixifyなどを使用してMetafeildを一括変更した方が良いかもしれません。

https://apps.shopify.com/excel-export-import?locale=ja

 

 

さて、

Shopifyの自動化(オートメーション)」というのはShopify Flowのことを指していると思われますので、Shopify Flowで実現しようとするとどうなるかについても回答いたします。

しかし上述の通り、Shopify Flowで実現するより、

Matrixifyなどで一括変更した方が簡単かつ間違いがないと考えています。

 

なお、これから説明する内容は動作確認をしておりませんので、

何か不具合がある可能性もあります。

 

まず、下図のようなフローを組みます。

screenshot_20230703_06.png

 

1. トリガー:  Scheduled time

https://help.shopify.com/ja/manual/shopify-flow/reference/triggers/scheduled-time

毎月1日に実行するよう設定します。

 

2. アクション: Get customer data

https://help.shopify.com/ja/manual/shopify-flow/reference/actions/get-customer-data

下図のように設定をします。

screenshot_20230703_07.png

「クエリを編集」に設定されている

tag_not: '_taget_metafield:false'

が今回の設定の肝になります。

「顧客データの取得」は、データの絞り込みにメタフィールドを利用できません。

そのため、メタフィールドと顧客タグの両方に値を埋め込むことで絞り込みを行います。

 

3. 繰り返し処理: For each loop (iterate)

3つ作成しますが、内容はどれも下図と同じです。

screenshot_20230703_08.png

 

4. それぞれの繰り返し処理において下記を実行します。

  • メタフィールドのアップデート
  • 顧客タグ「_taget_metafield:true」を削除
  • 顧客タグ「_taget_metafield:false」を追加

 

 

このフローによって、

顧客タグ「_taget_metafield:false」を持たない顧客(逆にいうと、「_taget_metafield:true」を持っている顧客)を100件絞り込み、そのそれぞれの顧客に対して、

メタフィールドをfalseにアップデートしつつ、

顧客タグ「_taget_metafield:true」を外し、

顧客タグ「_taget_metafield:false」を追加する、

という処理をします。

(※本来、メタフィールドのアップデートが完了したら、顧客タグの編集を行う、というフローを組みたかったのですが、仕様上断念しました。)

 

 

さて、

このやり方の問題点の1つとして、Get Customer Dataは、

100件の顧客データしか扱えない事が挙げられます。

 

もし、質問者様のストアに100目以上の顧客が登録されている場合、

フローを複製し、毎月1日に10分おきほとで、それぞれのFlowを予定時刻実行するようにします。

※100件のデータ処理を完了するのに10分で足りるかは試してみないとなんとも言えません。もっと長くした方が良いかもしれませんし、もっと早く完了できるかもしれません。

 

なお、

フローを複数作成するのではなく、

1つのフロー中で完結する方法もあります。

For Eachのthenからwait 10分に繋ぎ、

そこから際にGet Customer Dataを繋いで、

同様の処理を十分に顧客全員を更新できる数まで増やします。

 

 

このやり方の問題01

顧客数が多すぎる場合、各処理を作ったり複製したりするだけでも大変。

 

このやり方の問題02

フローを複製する方法も、フローの中で処理を複製する方法も、

繰り返し処理の中にミスがあるとき、

全てのフローや処理を修正する必要があり大変。

 

このやり方の問題03

問題、というはわけではないのですが、

顧客タグも併用するため、

対象のメタフィールドを更新する処理に、

顧客タグの編集処理を必ず加える必要があり、

少し手間です。

 

 

 

そのようなわけで、

Matrixifyなどでの一括更新をおすすめしています。

 

ご参考まで。

(キュー田辺)

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

元の投稿で解決策を見る

1件の返信1

Qcoltd
Shopify Partner
1203 480 463

成功

@n_ogawa3 様

 

興味があり調査してみました。

 

結論から申しますと、

Matrixifyなどを使用してMetafeildを一括変更した方が良いかもしれません。

https://apps.shopify.com/excel-export-import?locale=ja

 

 

さて、

Shopifyの自動化(オートメーション)」というのはShopify Flowのことを指していると思われますので、Shopify Flowで実現しようとするとどうなるかについても回答いたします。

しかし上述の通り、Shopify Flowで実現するより、

Matrixifyなどで一括変更した方が簡単かつ間違いがないと考えています。

 

なお、これから説明する内容は動作確認をしておりませんので、

何か不具合がある可能性もあります。

 

まず、下図のようなフローを組みます。

screenshot_20230703_06.png

 

1. トリガー:  Scheduled time

https://help.shopify.com/ja/manual/shopify-flow/reference/triggers/scheduled-time

毎月1日に実行するよう設定します。

 

2. アクション: Get customer data

https://help.shopify.com/ja/manual/shopify-flow/reference/actions/get-customer-data

下図のように設定をします。

screenshot_20230703_07.png

「クエリを編集」に設定されている

tag_not: '_taget_metafield:false'

が今回の設定の肝になります。

「顧客データの取得」は、データの絞り込みにメタフィールドを利用できません。

そのため、メタフィールドと顧客タグの両方に値を埋め込むことで絞り込みを行います。

 

3. 繰り返し処理: For each loop (iterate)

3つ作成しますが、内容はどれも下図と同じです。

screenshot_20230703_08.png

 

4. それぞれの繰り返し処理において下記を実行します。

  • メタフィールドのアップデート
  • 顧客タグ「_taget_metafield:true」を削除
  • 顧客タグ「_taget_metafield:false」を追加

 

 

このフローによって、

顧客タグ「_taget_metafield:false」を持たない顧客(逆にいうと、「_taget_metafield:true」を持っている顧客)を100件絞り込み、そのそれぞれの顧客に対して、

メタフィールドをfalseにアップデートしつつ、

顧客タグ「_taget_metafield:true」を外し、

顧客タグ「_taget_metafield:false」を追加する、

という処理をします。

(※本来、メタフィールドのアップデートが完了したら、顧客タグの編集を行う、というフローを組みたかったのですが、仕様上断念しました。)

 

 

さて、

このやり方の問題点の1つとして、Get Customer Dataは、

100件の顧客データしか扱えない事が挙げられます。

 

もし、質問者様のストアに100目以上の顧客が登録されている場合、

フローを複製し、毎月1日に10分おきほとで、それぞれのFlowを予定時刻実行するようにします。

※100件のデータ処理を完了するのに10分で足りるかは試してみないとなんとも言えません。もっと長くした方が良いかもしれませんし、もっと早く完了できるかもしれません。

 

なお、

フローを複数作成するのではなく、

1つのフロー中で完結する方法もあります。

For Eachのthenからwait 10分に繋ぎ、

そこから際にGet Customer Dataを繋いで、

同様の処理を十分に顧客全員を更新できる数まで増やします。

 

 

このやり方の問題01

顧客数が多すぎる場合、各処理を作ったり複製したりするだけでも大変。

 

このやり方の問題02

フローを複製する方法も、フローの中で処理を複製する方法も、

繰り返し処理の中にミスがあるとき、

全てのフローや処理を修正する必要があり大変。

 

このやり方の問題03

問題、というはわけではないのですが、

顧客タグも併用するため、

対象のメタフィールドを更新する処理に、

顧客タグの編集処理を必ず加える必要があり、

少し手間です。

 

 

 

そのようなわけで、

Matrixifyなどでの一括更新をおすすめしています。

 

ご参考まで。

(キュー田辺)

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