Shopify Flowでメタフィールドの値を条件に指定する方法につきまして

AI-generated summary

Shopify Flowで注文作成時、Line itemのProductメタフィールド値に基づきオーダーへタグ付けする条件指定方法の確認と検証。主に「metafieldDefinitions」と「metafields」の違いと、key・valueの指定方法が論点。

  • 用語整理:metafieldDefinitionsは定義情報(namespace・key・管理画面名など)。値(value)は含まれず、実値はmetafieldsに存在。
  • 設定方法:Order > Lineitems > Product > metafieldから最初の基準を追加し、その後はmetafields_itemで基準を追加すると動作。別の項目からmetafieldsを使うとinternal errorが起きる事例あり。
  • 条件指定:namespace・key・valueをAND条件で評価可能。metafields_item(namespace・key・value・idのセット)単位でループ評価される。
  • ログ表示の混乱:ログ上は異なるメタフィールドの組み合わせでも一致しそうに見えるが、実際は同一metafield_item内でAND評価されるため不一致。
  • 検証結果:hoge.fuga=piyoのメタフィールドを持つ商品購入時のみタグ付け成功を確認。誤一致は発生せず。
  • 注意点:Product側のリストアイテムにANDを追加すると、異なるメタフィールド間の組み合わせでTRUEになる可能性あり。
  • 画像(スクリーンショット)が設定手順の理解に重要。
  • 結果:質問者は問題解決、タグ付けに成功。議論は解決済み。

いつもお世話になっております。

Shopify Flowを使用して、オーダーにタグをつけたいと考えています。

商品にメタフィールドを設定し、注文が作成された際のline itemのメタフィールドの値が特定のものだった場合、オーダーにタグをつける、ということをしたいのですが、メタフィールドの条件の指定方法がわかりません。

  1. Order>Lineitems>Productと進んでいくと、metafieldDefinitionsとmetafieldsがあるのですが、この違いはなんでしょうか?

  2. keyとvalue両方を指定できる項目が見つけられないのですが、ありますでしょうか?

また、ない場合にはどのように指定すれば良いでしょうか?

どなたかご存知の方がいましたら、教えていただけますと助かります。

よろしくお願いいたします。

  1. Order>Lineitems>Productと進んでいくと、metafieldDefinitionsとmetafieldsがあるのですが、この違いはなんでしょうか?

Shopify Flowではなく、Admin APIの内容から確認した情報ですが、

metafieldDefinitionsは、名前が示す通り、メタフィールドの定義情報です。

例えば、メタフィールドのnamespace, key, 商品管理画面上での名称(name)などの情報は含まれていますが、value(メタフィールドに実際に設定された値)は含まれていないようでした。

metafieldsの方にvalueがありますので、今回のケースですと、metafiledsを利用されるのが良いかと思います。

  1. keyとvalue両方を指定できる項目が見つけられないのですが、ありますでしょうか?

また、ない場合にはどのように指定すれば良いでしょうか?

個人的には、なぜ下記でうまく動くのかが不思議なのですが、

下記のように設定するとうまく動きました。

上図のようになるように、うまく「基準を追加」します。

なお、基準を追加する際、下図の点にご注意ください。

他の項目から、metafiledsを使おうとすると、私の場合は、internal errorが発生し、ワークフローをスタートできませんでした。

(最初の基準追加時は、order > lineitems > product > metafiledから設定し、残りの基準追加は、matefileds_itemから行ってください。)

なお、

個人的には、なぜ下記でうまく動くのかが不思議なのですが、

について、補足しておきますと、

上図の設定ですと、

メタフィールドの

namespaceがhogeで、

keyがfugaで、

valueがpiyo

の商品がある場合に、アクションを実行することになりますが、

Flowのログの条件一致のさせ方を見るに、

下記のような場合でも一致してしまうように見えるのに、

うまくShopify側が処理してくれているのか、

問題が起きなかったのが不思議でした。

hoge.fuga = pipiのメタフィールドと
hoge.fufu = piyoのメタフィールドを
持つ商品にも一致してしまうように見える。

この点、個人的には腑に落ちておらず、

質問者さまにおかれまして、Flow設定後に十分にテストいただくのが良いかと思います。

ご参考まで。

(キュー田辺)

株式会社Q

田辺様

いつもお世話になっております。

  1. metafieldDefinitionsは、定義情報なのですね。

確認してみたところ、確かにvalueの選択項目がありませんでした。

両者の違い、理解できました。

ありがとうございます。

2.メタフィールドの条件の設定方法につきましても、教えていただいた通りに設定したところ、オーダーにタグをつけることができました。

私も

hoge.fuga = pipiのメタフィールドと
hoge.fufu = piyoのメタフィールドを
持つ商品にも一致してしまうように見える。

こちらは一致してしまうように思いましたが、テストしてみたところ

hoge.fuga = piyo

の商品を購入した場合のみ、オーダーにタグをつけることができました。

個人的にはandのかかっている位置によって、うまく処理されているのかなと思いました。

今回も大変わかりやすく教えていただき、ありがとうございました。

とても助かりました。

田辺様

お世話になります。リワイア加藤です。

メタフィールドの> > namespaceがhogeで、> > keyがfugaで、> > valueがpiyo> > の商品がある場合に、アクションを実行することになりますが、> > Flowのログの条件一致のさせ方を見るに、> > 下記のような場合でも一致してしまうように見えるのに、> > うまくShopify側が処理してくれているのか、> > 問題が起きなかったのが不思議でした。> > hoge.fuga = pipiのメタフィールドと> hoge.fufu = piyoのメタフィールドを> 持つ商品にも一致してしまうように見える。

こちらですが、回答されていた設定ですと、Order /Productに含まれる「metafield_item(namespace, key, value, idなどのセット)」を複数持ってきた状態で、「metafield_item」ごとのループで3つの条件を評価しています。

評価単位が商品ではなく「metafield_item(namespace, key, value, idなどのセット)」のため、

namespace = hogeを持つメタフィールドあるか→TRUE

key = fugaのメタフィールドあるか→TRUE

value = piyoのメタフィールドあるか→TRUE

ではなく

metafield_item[0] hoge.fuga = pipi は

namespace = hogeか→TRUE

key = fugaか→TRUE

value = piyoか→FALSE

ということはAND条件成り立たないのでFALSE

metafield_item[1] hoge.fufu = piyo は

namespace = hogeか→TRUE

key = fugaか→FALSE

value = piyoか→TRUE

ということはAND条件成り立たないのでFALSE …

みたいな感じかなと思いました。(metafieldの「同一のリストアイテム」ではなく、Productの方の「同一のリストアイテム」にANDで追加するとhoge.fuga = pipiのメタフィールドとhoge.fufu = piyoのメタフィールドでTRUEにすることも可能かと思います。)

@rewire_kato さま

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

はい、おっしゃる通りの動作を期待しますし、事実、そのように動いているのですが、

ログ画面を見ると、下図のようになっており、

このログの記載のされ方だけ見ると、

hoge.fuga = pipiのメタフィールドと
hoge.fufu = piyoのメタフィールドを
両方同時に持つ商品にも一致してしまうように見える、

と言ったところでした。

1つのメタフィールドに対して、ANDされているように見えないのですが、

実際にはそうなっているということなのでしょうね。

アドバイスありがとうございます。

(キュー田辺)