ShopifyFLOWを使用して、会員登録時に取得した項目をメタフィールドに反映させる方法

Topic summary

問題の概要:
Shopify FLOWで会員登録時の情報(フリガナ、職業など)を顧客メモ欄からメタフィールドに自動反映させる際、一部のメタフィールドで「Value must be a single line text string」というエラーが発生し、更新が実行されない問題が報告されました。

原因の特定:

  • Customer Noteの2行目以降の値には、先頭に改行文字(\n)が含まれている
  • newline_to_brフィルターは改行を<br/>タグに変換するため、split後の文字列に改行が残る
  • この余分な空白文字が「single line text」のメタフィールドのルールに抵触していた

解決方法:
メタフィールドのvalue設定時に、stripフィルターを追加することで解決:

{{ note | replace: 'Furigana: ', '' | strip }}

結果:
フリガナ、職業メタフィールド共に正常に出力されるようになり、問題は解決しました。誕生日(date型)は元々正常に動作していました。

Summarized with AI on November 23. AI used: claude-sonnet-4-5-20250929.

ShopifyFLOWについて皆さんの知恵を拝借させてください。

●詰まっている箇所
ShopifyFLOWを使用した、会員登録時に取得した項目を各顧客のメモ欄に出力し、それを該当するメタフィールドに自動反映させるオートメーション機能

●聞きたいことの要約
一部のメタフィールドの更新が、エラーが表示され実行されない問題の解決方法およびアイデア

●起きている問題
Got error updating metafield: “Value must be a single line text string.” For value: " テスト"

●解決するために試したこと
・誤字脱字の確認
・メモ欄から取得するコード(” を ’ に変更するなど)
・漢字ではなく英語で登録する
・メタフィールドのタイプを「multi line text」に設定する
└オートメーションが再試行中となり、永遠に実行されない
・メタフィールドのタイプを「Integer」に設定する

●問題について自分なりに考えたこと
・「date」で出力している誕生日メタフィールドについては正常に表示されているため、恐らく難解な問題ではない

main-register.liquid


      
      
    

            
      
      
    

            
      
      
    

flow(value)

{%- assign notes = customer.note | strip | newline_to_br | split: '
' -%}
{%- for note in notes -%}
  {%- if note contains "Furigana: " -%}
    {{ note | replace: 'Furigana: ', '' }}
  {%- endif -%}
{%- endfor -%}

思い当たるTipsやヒントだけでもないか、何卒ご協力をお願いします。。。!

原因を説明できないのですが、

Shopify Flowのアクションでメタフィールドのvalueを設定する際、

下記のようにされてはいかがでしょうか?

{%- assign notes = customer.note | strip | newline_to_br | split: '
' -%}
{%- for note in notes -%}
  {%- if note contains "Furigana: " -%}
    {{ note | replace: 'Furigana: ', '' }}
  {%- endif -%}
{%- endfor -%}

{%- assign notes = customer.note | strip | newline_to_br | split: '
' -%}
{%- for note in notes -%}
  {%- if note contains "Furigana: " -%}
    {{ note | replace: 'Furigana: ', '' | strip }}
  {%- endif -%}
{%- endfor -%}

noteを出力する際、stripし、前後の空白改行を削除します。

質問者様と同等の状況を私の開発ストアに作って検証し、

Shopify Flowのエラーメッセージを確認した際、

エラーメッセージ上では、

フリガナに入力した「テスト」や

職業に入力した「検証」という文字列の直前に空白が入っていることに気がつきました。

質問者様が添付してくださった画像を確認しても、

Shopify Flowのエラーメッセージの箇所で、

For value: " 検証"

のように、「検証」という文字列の直前に空白が入っているように見えます。

Single Line Textにルールに抵触するということは、

この空白は改行を意味するものと思われます。

なぜ、ここに改行が入ってしまうのかを説明できないのですが、

改行が入ってしまうのであれば、stripすればうまくいくのではないかと思います。

(私の環境ではうまく動きました。)

なお、

Customer Noteの1行目については、

この現象が発生しないようです。

そのため、誕生日はうまく動いているのだと思います。

ご参考まで。

(キュー田辺)

1 Like

Qcoltd様

迅速なご回答、並びに検証、解決に至るまで誠にありがとうございます。
フリガナ、職業メタフィールド共に正常に出力されました。

解説も非常にわかりやすく、思考プロセスも大変参考になりました。
コミュニティで質問をするのは初めてだったのですが、Qcoltd様にご回答いただけて本当に良かったです。

繰り返しになりますが、この度はご回答いただき誠にありがとうございました。

Chrono

1 Like

@chrono_1

うまくいったとのことで安心いたしました。

ところで、

今回の現象について思いついたことがあり、

検証してみたところ原因がわかりました。

下記のコードを検証しました。

{% capture notes_raw %}Birthday: 2023-01-19
Furigana: テスト
Job: 検証{% endcapture %}

{{ notes_raw | strip | newline_to_br }}

このコードの出力は下記のようになりました。

Birthday: 2023-01-19

Furigana: テスト

Job: 検証

「改行」を「\n」という文字で表しますと、

上記は下記のように表されます。

Birthday: 2023-01-19
\nFurigana: テスト
\nJob: 検証

これを、
でsplitしますと、下記のような配列になります。

["Birthday: 2023-01-19","\nFurigana: テスト","\nJob: 検証"]

このように、

Customer Noteの2行目以降の値は、

先頭に「\n」(改行)が入ってしまうことになるようです。

「newline_to_br」というフィルターは、その名前から、

改行を
に変換するものだと思っていたのですが、

そうではなく、

改行を、
+改行に変更するものだったようです。

ご参考まで。

(キュー田辺)

1 Like

キュー田辺様

引き続きご回答ありがとうございます。
今回の問題の発生した原因についても非常に腑に落ちました。

「Customer Noteの2行目以降の値は、先頭に\n(改行)が入る」

「newline_to_brは、改行を
に変換するものではなく、改行を追加する」

上記の仕様が見えていなかったのですね。

解決だけでなく、原因の解明まで対応いただき、大変参考になりました。
重ねてお礼申し上げます。