いつもお世話になっております。
Shopify Flowを使用して、オーダーにタグをつけたいと考えています。
商品にメタフィールドを設定し、注文が作成された際のline itemのメタフィールドの値が特定のものだった場合、オーダーにタグをつける、ということをしたいのですが、メタフィールドの条件の指定方法がわかりません。
-
Order>Lineitems>Productと進んでいくと、metafieldDefinitionsとmetafieldsがあるのですが、この違いはなんでしょうか?
-
keyとvalue両方を指定できる項目が見つけられないのですが、ありますでしょうか?
また、ない場合にはどのように指定すれば良いでしょうか?
どなたかご存知の方がいましたら、教えていただけますと助かります。
よろしくお願いいたします。
Qcoltd
2
- Order>Lineitems>Productと進んでいくと、metafieldDefinitionsとmetafieldsがあるのですが、この違いはなんでしょうか?
Shopify Flowではなく、Admin APIの内容から確認した情報ですが、
metafieldDefinitionsは、名前が示す通り、メタフィールドの定義情報です。
例えば、メタフィールドのnamespace, key, 商品管理画面上での名称(name)などの情報は含まれていますが、value(メタフィールドに実際に設定された値)は含まれていないようでした。
metafieldsの方にvalueがありますので、今回のケースですと、metafiledsを利用されるのが良いかと思います。
- 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
田辺様
いつもお世話になっております。
- 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
Qcoltd
5
@rewire_kato さま
ご返信ありがとうございます。
はい、おっしゃる通りの動作を期待しますし、事実、そのように動いているのですが、
ログ画面を見ると、下図のようになっており、
このログの記載のされ方だけ見ると、
hoge.fuga = pipiのメタフィールドと
hoge.fufu = piyoのメタフィールドを
両方同時に持つ商品にも一致してしまうように見える、
と言ったところでした。
1つのメタフィールドに対して、ANDされているように見えないのですが、
実際にはそうなっているということなのでしょうね。
アドバイスありがとうございます。
(キュー田辺)