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

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

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設定後に十分にテストいただくのが良いかと思います。

ご参考まで。

(キュー田辺)

1 Like

株式会社Q

田辺様

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

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

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

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

ありがとうございます。

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

私も

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

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

hoge.fuga = piyo

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

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

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

とても助かりました。

1 Like

田辺様

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

メタフィールドの> > 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にすることも可能かと思います。)

1 Like

@rewire_kato さま

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

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

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

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

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

と言ったところでした。

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

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

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

(キュー田辺)