ShopifyFLOWを使用して、会員登録時に取得した複数項目を顧客メタフィールドの単一行のテキスト(リスト)にそれぞれ反映させる方法

Topic summary

課題:
会員登録時にチェックボックスで選択した複数のアーティスト情報を、顧客メタフィールドの「単一行のテキスト(リスト)」に自動的に振り分けたい。現在は顧客アカウントのメモ欄に「好きなアーティスト 1: Aさん」「好きなアーティスト 2: Bさん」と表示されているが、これをメタフィールドのリスト形式(Aさん、Bさんと分けて)に反映させる方法が不明。

提案された解決策:
Qcoltd氏がLiquidコードを提案。顧客メモから情報を抽出し、カンマ区切りのリスト形式に変換するコードを提示。ただし、顧客メモに他の情報も含まれている場合は条件分岐が必要との注意点あり。

結果:
Kiichi_1氏が提案されたコードで実装に成功したと報告。

技術的ポイント:

  • HTMLのチェックボックスでname="customer[note][好きなアーティスト X]"を使用
  • ShopifyのLiquidテンプレートで顧客メモを解析
  • アーティストは現在9名、今後も追加予定
Summarized with AI on November 11. AI used: claude-sonnet-4-5-20250929.

会員登録画面にチェックボックスで複数選択可能な項目を作りました。
項目内容は、好きなアーティストを複数選んでくださいというものです。

会員登録画面のコードは以下の通りです。(アーティスト名は伏せています)

Aさん

Bさん

上記のコードでお客様アカウントのメモに、
好きなアーティスト 1: Aさん
好きなアーティスト 2: Bさん

と表示されます。

この情報を顧客メタフィールドの単一行のテキストのリストに追加していきたいのですが方法がわかりません。
顧客メタフィールドは、「好きなアーティスト」としており、リストなのでAさん・Bさんそれぞれ分けて自動振り分けしたいです。
好きなアーティストは1,2以外にも9まであり今後も追加予定です。

AIを使用してFLOWのコードを出してもらったのですが上手くいきません。

{%- assign notes = customer.note | strip | newline_to_br | split: '<br />' -%}

{%- for note in notes -%}
  {%- assign prefix = "好きなアーティスト" -%}
  
  {%- assign index_start = note | split: prefix | last | strip | slice: 0, 1 | default: "" | plus: 0 -%}
  
  {%- if index_start != blank -%}
    {%- for i in (1..index_start) -%}
      {{ prefix }}{{ i }}: {{ note | split: prefix | last | strip }}
    {%- endfor -%}
  {%- endif -%}
{%- endfor -%}

どうやら顧客メモの「好きなアーティスト 1: Aさん」の1の部分が1以外でも出力可能としているようなのですが、上手くいきません。

顧客メタフィールドの単一行のテキスト(リスト)にお客様アカウントのメモの複数情報をそれぞれ自動振り分けするFLOWのコードと設定を教えていただきたいです。

説明が下手くそで大変申し訳ございません。

補足)単一行のテキスト(リストではない)の場合は、以下のコードで出力できています。
(誕生日を顧客メタフィールドに出力する)

{%- assign notes = customer.note | strip | newline_to_br | split: '<br />' -%}
{%- for note in notes -%}
  {%- if note contains "Day: " -%}
    {{ note | split: 'Day: ' | last | strip }}
  {%- endif -%}
{%- endfor -%}

@Kiichi_1

テキストのリストには、

シンプルに、

好きなアーティスト 1: Aさん
好きなアーティスト 2: Bさん

と入力されれば良いでしょうか?

上記でよろしければ、下記ではどうでしょうか?

{%- capture value -%}
{%- assign notes = customer.note | strip | newline_to_br | split: '
'  -%}
{%- for note in notes -%}"{{ note | strip }}",{%- endfor -%}
{%- endcapture -%}
[{{value | remove_last: ","}}]

顧客メモに、好きなアーティストの情報以外も含まれている場合は、条件分岐が必要になります。

なお、

<input type="checkbox" name="customer[note][好きなアーティスト 1]" value="Aさん" />Aさん

は、

<input type="checkbox" name="customer[note][好きなアーティスト 1]" value="Aさん" />Aさん

とされた方が表示が整います。

(1を半角から全角にしました。逆に2の方を半角にしても良いです。)

ご参考まで。

(キュー田辺)

田辺様

返信していただきありがとうございます。

無事実装することができました!

ありがとうございます。

1 Like