Shopify Flowを用いて数値型や単一行テキストのメタフィールドに値を登録する方法

Topic summary

Shopify Flowでcart.attributes(Flow上ではorder.customAttributes)から顧客メタフィールドへ値を登録する際、数値型や単一行テキスト型でエラーが発生する問題。複数行テキスト型なら登録可能。

エラー内容は、出力されるvalueに不要な改行が多数含まれること(例: “\n… 2 …\n”)で、型のバリデーションに抵触して失敗。

対策としてLiquidのstripフィルタを適用したが、期待通りに改行が除去されず効果がなかった。

原因はLiquidタグのホワイトスペース(改行)出力。条件タグを{%- … -%}のようにハイフン付きの書式(ホワイトスペース制御)に変更すると、不要な改行が出力されず、正しい型(数値・単一行テキスト)のメタフィールドへ登録できた。

参考資料としてShopify Flowの変数・フィルタのドキュメントが言及されるも、最終的にstripは不要。コードスニペットの記述方法が中核。結論・状態: 問題は自己解決済みで、実装方針が確定。

Summarized with AI on February 13. AI used: gpt-5.

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

Shopify Flowを用いて、顧客メタフィールドに値を追加したいと考えています。

やりたいこととしましては、

・cart.attributesで取得した値をShopify Flowで顧客メタフィールドに追加

したいと考えています。

Flow側にメタフィールドのnamespaceとKeyを入力し、valueに

{% for customAttributes_item in order.customAttributes %}
{% if customAttributes_item.key == 'key' %}
{{ customAttributes_item.value }}
{% endif %}
{% endfor %}

と記述すると、メタフィールド側の設定が複数行のテキストになっている場合以外は失敗します。

エラーメッセージを確認すると、登録しようとしている値が

"value\":\"\\n\\n\\n\\n\\n\\n 2\\n\\n\\n\\n\\n\\n\"

のように改行が入ってしまっているため、エラーになるようです。

複数行の値を取るメタフィールドには登録できます。

そこで、Flowのvalueを

{% for customAttributes_item in order.customAttributes %}
{% if customAttributes_item.key == 'key' %}
{{ customAttributes_item.value | strip }}
{% endif %}
{% endfor %}

としてみましたが、登録しようとしている値は変更できず、改行が入ったままです。

下記ページを確認したところ、stripフィルタは使用できるようなのですが、何がおかしいでしょうか?

不要な改行を取り除き、適切な型のメタフィールドにデータを登録したいです。

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

1 Like

下記ページと書きながら、リンクを忘れてしまいました。

https://help.shopify.com/ja/manual/shopify-flow/reference/variables

失礼いたしました。

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

自分で解決できました。

Liquidの条件タグを

{%

としていたのがいけなかったようで、

すべて

{%-

のようにハイフンをつけたら改行が入らずに登録できました。

stripフィルタも必要なかったです。

質問後すぐに自己解決してしまいましたが、どなたかのお役に立てれば幸いです。

1 Like