FROM CACHE - jp_header
このコミュニティはピアツーピアサポートに移行しました。Shopify サポートは今後、このコミュニティへのサービスを提供いたしません。これからもぜひ、他のマーチャントやパートナーとつながり、サポートし合い、経験を共有してください。 当社の行動規範に違反する行動や削除を希望するコンテンツがありましたら、引き続きご報告ください

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

解決済

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
1153 468 452

成功

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

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
1153 468 452

成功

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

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
1153 468 452

@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 />に変換するものではなく、改行を追加する


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

 

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