FROM CACHE - jp_header
解決済

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

n_ogawa3
遊覧客
19 0 6

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

1 件の受理された解決策

Qcoltd
Shopify Partner
1049 428 412

成功

@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
1049 428 412

成功

@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/