(再)配送完了メール内の配送業者名を日本語表示にしたい

Topic summary

配送完了メール内で配送業者名を日本語表示にする際のコード実装に関する技術的な問題と解決。

問題点:

  • 配送業者名が「Yamato(JA)」などアルファベット表記になる
  • replaceフィルターを使用したが「Yamato (JA) Yamato(JA)」と重複表示される
  • ヤマト運輸と佐川急便の両方に対応する必要がある

原因:

  • replaceフィルターが2行記述されていたため重複出力
  • 実際のデータは「Yamato (JA)」(半角スペース有り)だが、コードでは「Yamato(JA)」(スペース無し)で判定していたため置換が機能しなかった

解決方法:

  • replaceではなく条件分岐(if/elsif)を使用
  • tracking_company_name変数に日本語名を代入する方式に変更
  • 半角スペースを含む正確な文字列「Yamato (JA)」「Sagawa (JA)」で判定するよう修正

結果:
コード修正により無事解決。テーマはDawnを使用。

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

お世話になっております。

一度こちらで質問させていただいたのですが、解決できなかった&別の問題が発生したので、再度投稿させていただきます。

お客様への配達完了メールで、追跡番号を表示させる際に、配送業者名がアルファベット表記になってしまいます(例えば、Yamanto(JA)など)

  1. それを「ヤマト運輸」と表示させたく、下記のようなコードを入力しました。

結果、添付画像のような、「Yamato (JA) Yamato(JA)」という表示がされるようになってしまいました。

何が間違っているのでしょうか。

  1. 弊社ではヤマトと佐川を併用しているため、下記のように、ヤマトと佐川それぞれreplaceコードを入れてあるのですが、これは合っているでしょうか。

テーマは、dawnです。

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

{% if fulfillment.tracking_numbers.size > 0 %}


{% if fulfillment.tracking_numbers.size == 1 and fulfillment.tracking_company and fulfillment.tracking_url %} {{ fulfillment.tracking_company | replace: 'Yamato(JA)', 'ヤマト運輸' }}

{{ fulfillment.tracking_company| replace:‘Sagawa(JA)’,‘佐川急便’ }}

追跡番号: {{ fulfillment.tracking_numbers.first }}
{% elsif fulfillment.tracking_numbers.size == 1 %}
追跡番号: {{ fulfillment.tracking_numbers.first }}
{% else %}
{{ fulfillment.tracking_company | replace: ‘Yamato(JA)’, ‘ヤマト運輸’ }}

{{ fulfillment.tracking_company| replace:‘Sagawa(JA)’,‘佐川急便’ }}

追跡番号:

{% for tracking_number in fulfillment.tracking_numbers %}
{% if fulfillment.tracking_urls[forloop.index0] %}

{{ tracking_number }}

{% else %}
{{ tracking_number }}
{% endif %}


{% endfor %}
{% endif %}

{% endif %}

ご質問いただいています、配送業社名を日本語に変更されたい件ですが、

1.につきましては、下記の2行がそれぞれ「Yamato(JA)」を出力しているため、

「Yamato(JA) Yamato(JA)」と表示されているのではと推測されます。

{{ fulfillment.tracking_company | replace: 'Yamato(JA)', 'ヤマト運輸' }}
{{ fulfillment.tracking_company| replace:'Sagawa(JA)','佐川急便' }}

実際に出力された状態↓

Yamato(JA) Yamato(JA)

2.につきましては、1の状況より、replaceが効いていないと推測されます。

上記の状況より「replace」で処理を行うのではなく、fulfillment.tracking_companyの中身を判断し、ヤマト運輸と佐川急便に内容を変更することで、ご希望に添えるのではと思われますので、ご質問内容に記載いただいているコードを修正したサンプルコードを下記に記載させていただきます。

サンプルコード

{% if fulfillment.tracking_numbers.size > 0 %}
  {% if fulfillment.tracking_company == 'Yamato(JA)' %}
    {% assign tracking_company_name = 'ヤマト運輸'%}
  {% elsif fulfillment.tracking_company == 'Sagawa(JA)' %}
    {% assign tracking_company_name = '佐川急便'%}
  {% else %}
    {% assign tracking_company_name = fulfillment.tracking_company %}
  {% endif %}
  

    

    {% if fulfillment.tracking_numbers.size == 1 and fulfillment.tracking_company and fulfillment.tracking_url %}
      {{ tracking_company_name }} 追跡番号: {{ fulfillment.tracking_numbers.first }}
    {% elsif fulfillment.tracking_numbers.size == 1 %}
      追跡番号: {{ fulfillment.tracking_numbers.first }}
    {% else %}
      {{ tracking_company_name }} 追跡番号:

      {% for tracking_number in fulfillment.tracking_numbers %}
        {% if fulfillment.tracking_urls[forloop.index0] %}
          
            {{ tracking_number }}
          
        {% else %}
            {{ tracking_number }}
        {% endif %}
        

      {% endfor %}
    {% endif %}
  

{% endif %}

ありがとうございます。

さっそくやってみたのですが、Yamato(JA)Yamato(JA)と連続になってしまう部分は解消されたのですが、日本語表記にはならずでした…。

どうしたものでしょう…。

実際のソースを拝見しないと判断できない部分はございますが、

{{ tracking_company_name }} 追跡番号

部分が

{{ fulfillment.tracking_company }} 追跡番号

と記載されていたりしませんでしょうか。

実際のソースを拝見し確認させていただければ、もう少し確認できるかと思いますので、

差し支えなければ、対象のメール文を添付頂けたりしますでしょうか。

(キュー小坂)

株式会社Q

小坂様

お返事ありがとうございます。

最初の回答でいただいたサンプルコード内12行目と16行目の部分ですよね?

確認したのですが、いただいたものをそのままコピペしていたので、

{{ tracking_company_name }} 追跡番号

になってしました。

今入っているコード全文と、これで送られてくるメール画像を添付します。

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

{% if fulfillment.item_count == item_count %}{% endif %}

{% capture email_body %}
{{ billing_address.last_name }} {{ billing_address.first_name }} 様

ご注文いただいた商品の配送が完了致しました。

配達状況は、追跡番号にてご確認いただけます。

お手元に届くまで、楽しみにお待ちくださいませ。

今後とも、どうぞよろしくお願い致します。{% endcapture %}
{% capture email_emphasis %}配達完了予定日 **{{fulfillment.estimated_delivery_at | date: "%B %d, %Y"}}**{% endcapture %}

 
 
 
 
 
 

 

   <table>

     
       
         <table>

 
   
     

       <table>

         
           

             <table>

               <tr>

                 <td>

                   {%- if shop.email_logo_url %}
                     
                   {%- else %}
                     # 
                       {{ shop.name }}
                     
                   {%- endif %}
                 

</td>

                   <td>

                     
                       ご注文番号 {{ order_name }}
                     
                   

</td>

               </tr>

             </table>

           
         
       </table>

     
   
 
</table>

         <table>

 
   
     
       <table>

         
           

           ## {{ email_title }}
           

{{ email_body }}

           {% if fulfillment.estimated_delivery_at %}
             

{{ email_emphasis }}

           {% endif %}
           {% if order_status_url %}
             <table>

 <tr>

   <td>

 

</td>

 </tr>

 
   
     <table>

       <tr>

         <td>

ご注文を見る

</td>

       </tr>

     </table>
     {% if shop.url %}
   <table>

     <tr>

       <td>

またはショップにアクセスする

</td>

     </tr>

   </table>
{% endif %}

   
 
</table>

           {% else %}
             {% if shop.url %}
   <table>

     
       
         <table>

           <tr>

             <td>

ショップにアクセスする

</td>

           </tr>

         </table>
       
     
   </table>
{% endif %}

{% endif %}
{% if fulfillment.tracking_numbers.size > 0 %}
  {% if fulfillment.tracking_company == 'Yamato(JA)' %}
    {% assign tracking_company_name = 'ヤマト運輸' %}
  {% elsif fulfillment.tracking_company == 'Sagawa(JA)' %}
    {% assign tracking_company_name = '佐川急便' %}
  {% else %}
    {% assign tracking_company_name = fulfillment.tracking_company %}
  {% endif %}
  

    

    {% if fulfillment.tracking_numbers.size == 1 and fulfillment.tracking_company and fulfillment.tracking_url %}
      {{ tracking_company_name }} 追跡番号: {{ fulfillment.tracking_numbers.first }}
    {% elsif fulfillment.tracking_numbers.size == 1 %}
      追跡番号: {{ fulfillment.tracking_numbers.first }}
    {% else %}
      {{ tracking_company_name }} 追跡番号:

      {% for tracking_number in fulfillment.tracking_numbers %}
        {% if fulfillment.tracking_urls[forloop.index0] %}
          
            {{ tracking_number }}
          
        {% else %}
            {{ tracking_number }}
        {% endif %}
        

      {% endfor %}
    {% endif %}
  

{% endif %}

           
         
       </table>
     
   
 
</table>

         <table>

 
   
     
       <table>

         <tr>

           <td>

             ### 配送中のアイテム
           

</td>

         </tr>

       </table>
       <table>

         
           

 {% for line in fulfillment.fulfillment_line_items %}
 {% endfor %}
<table>

   
     <table>

       <tr>
<td>

         {% if line.line_item.image %}
           
         {% endif %}
       

</td>

       <td>

         {% if line.line_item.product.title %}
           {% assign line_title = line.line_item.product.title %}
         {% else %}
           {% assign line_title = line.line_item.title %}
         {% endif %}

         {% if line.quantity < line.line_item.quantity %}
           {% capture line_display %} {{ line.quantity }} of {{ line.line_item.quantity }} {% endcapture %}
         {% else %}
           {% assign line_display = line.line_item.quantity  %}
         {% endif %}

         {{ line_title }} × {{ line_display }}

         {% if line.line_item.variant.title != 'Default Title' %}
           {{ line.line_item.variant.title }}
         {% endif %}
       

</td>

     </tr>
</table>
   
 </table>

           
         
       </table>
     
   
 
</table>

         <table>

 
   
     
       <table>

         <tr>

           <td>

             

ご不明な点がございましたら、このメールにご返信いただくか、[{{ shop.email }}](mailto:{{ shop.email }})までご連絡ください。

           

</td>

         </tr>

       </table>
     
   
 
</table>

       
     
   </table>
 

添付いただいたパワポのデータを拝見したところ、
ヤマトの名称が『Yamato (JA)』となっている様にお見受けしました。
お送りしていたソースでは『Yamato(JA)』の時にヤマト運輸としており、
Yamatoの後に半角スペースがないため文字が置き換わらず、

『Yamato (JA)』が表示されている様です。

お送りいただいたソースの下記部分を

{% if fulfillment.tracking_company == 'Yamato(JA)' %}
  {% assign tracking_company_name = 'ヤマト運輸' %}
{% elsif fulfillment.tracking_company == 'Sagawa(JA)' %}
  {% assign tracking_company_name = '佐川急便' %}
{% else %}

下記に変更いただけましたら、日本語が表示する様になるかと思われます。

{% if fulfillment.tracking_company == 'Yamato (JA)' %}
  {% assign tracking_company_name = 'ヤマト運輸' %}
{% elsif fulfillment.tracking_company == 'Sagawa (JA)' %}
  {% assign tracking_company_name = '佐川急便' %}
{% else %}

半角スペースかはいただいたパワポに貼り付けていただいた画像データから判断しましたので、
日本語に切り替わらない場合、メール文に表示されているテキストに置き換えていただければと思います。

(キュー小坂)

株式会社Q

小坂様

ありがとうございます!

無事解決しました。

半角スペース、気がつきませんでした。細かいところに気づいてくださり、感謝です。

本当にありがとうございました。