FROM CACHE - jp_header
解決済

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

chrono_
Shopify Partner
6 0 2

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

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

 

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

 

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

 

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

 

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

main-register.liquid

            <div class="field">
      <input
        type="date"
        name="customer[note][Birthday]"
        id="RegisterForm-Birthday"
        {% if form.birthday %}value="{{ form.birthday }}"{% endif %}
        autocomplete="bday"
        placeholder="{{ 'customer.register.birthday' | t }}"
      >
      <label for="RegisterForm-Birthday">
        {{ 'customer.register.birthday' | t }}
      </label>
    </div>

            <div class="field">
      <input
        type="text"
        name="customer[note][Furigana]"
        id="RegisterForm-Furigana"
        {% if form.furigana %}value="{{ form.furigana }}"{% endif %}
        placeholder="{{ 'customer.register.furigana' | t }} "
      >
      <label for="RegisterForm-Furigana">
        {{ 'customer.register.furigana' | t | append: ' ※セイメイ'}}
      </label>
    </div>

            <div class="field">
      <input
        type="text"
        name="customer[note][Job]"
        id="RegisterForm-Job"
        {% if form.job %}value="{{ form.job }}"{% endif %}
        placeholder="{{ 'customer.register.job' | t }}"
      >
      <label for="RegisterForm-Job">
        {{ 'customer.register.job' | t }}
      </label>
    </div>

 

flow(value)

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

 

 

2023-01-16_12.51.19.png2023-01-16_12.51.53.png2023-01-16_12.58.19.png2023-01-16_13.16.29.png2023-01-16_13.17.09.png2023-01-16_13.17.23.png2023-01-16_13.17.39.png


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

1 件の受理された解決策

Qcoltd
Shopify Partner
1051 431 418

成功

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

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

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

 

 

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

 

 

{%- assign notes = customer.note | strip | newline_to_br | split: '<br />' -%}
{%- 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行目については、

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

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

 

ご参考まで。

(キュー田辺)

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

元の投稿で解決策を見る

5件の返信5

Qcoltd
Shopify Partner
1051 431 418

成功

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

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

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

 

 

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

 

 

{%- assign notes = customer.note | strip | newline_to_br | split: '<br />' -%}
{%- 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行目については、

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

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

 

ご参考まで。

(キュー田辺)

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

                                               

chrono_
Shopify Partner
6 0 2

Qcoltd様

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

chrono__0-1674084093274.png

 

 

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

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

 Chrono

Qcoltd
Shopify Partner
1051 431 418

@chrono_ 様

 

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

 

ところで、

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

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

 

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

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

{{ notes_raw | strip | newline_to_br }}

 

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

Birthday: 2023-01-19<br />
Furigana: テスト<br />
Job: 検証

 

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

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

 

Birthday: 2023-01-19<br />\nFurigana: テスト<br />\nJob: 検証

 

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

 

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

 

このように、

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

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

 

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

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

そうではなく、

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

 

ご参考まで。

(キュー田辺)

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

キュー田辺様

 

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


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

「newline_to_brは、改行を<br />に変換するものではなく、改行を追加する


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

 

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