FROM CACHE - jp_header
解決済

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

るん
Shopify Partner
78 3 10

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

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

 

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

 

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

 

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

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

 

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

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

1 件の受理された解決策

Qcoltd
Shopify Partner
1042 422 405

成功

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

 

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

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

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

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

 

 

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

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

 

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

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

 

screenshot_20220826_04.png

 

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

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

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

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

 

screenshot_20220826_05.png

 

なお、

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

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

上図の設定ですと、

メタフィールドの

namespaceがhogeで、

keyがfugaで、

valueがpiyo

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

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

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

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

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

 

 

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

 

 

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

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

 

ご参考まで。

(キュー田辺)

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

元の投稿で解決策を見る

4件の返信4

Qcoltd
Shopify Partner
1042 422 405

成功

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

 

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

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

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

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

 

 

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

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

 

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

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

 

screenshot_20220826_04.png

 

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

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

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

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

 

screenshot_20220826_05.png

 

なお、

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

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

上図の設定ですと、

メタフィールドの

namespaceがhogeで、

keyがfugaで、

valueがpiyo

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

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

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

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

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

 

 

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

 

 

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

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

 

ご参考まで。

(キュー田辺)

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

株式会社Q 

田辺様

 

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

 

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

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

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

ありがとうございます。

 

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

私も

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

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

hoge.fuga = piyo

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

 

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

 

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

とても助かりました。

rewire_kato
Shopify Partner
7 3 4

田辺様

 

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

 


メタフィールドの

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にすることも可能かと思います。)

Shopifyメカニック / Shopify Mechanic
株式会社リワイア代表取締役
Qcoltd
Shopify Partner
1042 422 405

@rewire_kato さま

 

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

 

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

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

screenshot_20220902.png

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

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

と言ったところでした。

 

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

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

 

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

(キュー田辺)

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