メインコンテンツへスキップ
見出し画像
Photo byakisuke0925

【第12回】 AMPscript を使ってメールに「曜日」を表示する方法

    Nobuyuki Watanabe

    マーケティングメールを作成する際、「日付」を表示するパターンは多くありますが、「曜日」も一緒に表示したい場合があります。

    その形式は、英語ではなく、日本語で「日・月・火・水・木・金・土」といった形で表示をする必要がある場合に、どうすれば良いでしょうか。

    そこで、今回は Salesforce Marketing Cloud の AMPScript を使って、日本語の「曜日」を表示する方法を紹介します。


    ■「日付」を表示する AMPscript

    まずは、「日付」を表示する AMPscript の方から簡単にお浚いします。

    「◯ 年 ◯ 月 ◯ 日」と表示する場合

    %%=Format(SystemDateToLocalDate(GetSendTime()),'yyyy年MMMM%d日','Date','ja-JP')=%%

    2023 / 01 / 01 のように「0」を含めた形で表示したい場合

    %%=Format(DateAdd(Now(),'15','H'),'yyyy/MM/dd','Date')=%%

    参考:他の表示の例は、下記 note で確認してください。

    ここでタイムゾーンのローカライズが必要になります。AMPscript で修正する際に、SystemDateToLocalDate() を使用するか、DateAdd() を使用するかは、好みの選択で良いと思います。

    タイムゾーンの修正について、Marketing Cloud をよく知らない方のために説明しておきますと、日本のタイムゾーンは「JST」(日本標準時)ですが、Marketing Cloud のサーバーがある拠点のタイムゾーンは「CST」(米国中部標準時)です。

    この差が 15 時間あるので、ローカライズのため SystemDateToLocalDate() を使用してあげるか、DateAdd() を使用して 15 時間をプラスしてあげることが必要になります。

    また、日付関数で GetSendTime() を使用するか、Now() を使用するかという問題もあるかと思います。

    以下がそれぞれの定義です。

    ■ GetSendTime() :個別の購読者の送信完了時刻
    ■ Now():現在のシステム時刻

    基本的には、どちらを使っても問題ない認識ですが、VAWP(メールを Web ページとして表示)のリンクを踏んだ場合に状況が変わってきます。

    メール本文のデータは送信時にレンダリングされるため静的ですが、VAWP のリンクは毎回ページが開かれるたびに最新のデータを取得し、再度レンダリングが行われます。この違いが、GetSendTime() と Now() の挙動に影響を与えます。

    • GetSendTime():メール送信時の日時が固定されて表示されます。例えば、2024 年 12 月 25 日に送信したメールは、VAWP で表示してもその日付のままです。

    • Now():ページを開いた時点の日時が表示されます。2024 年 12 月 25 日に送信されたクリスマスメールでも、2025 年 1 月 1 日に VAWP リンクを開けば、その時点の 2025 年 1 月 1 日が表示されます。

    どちらも時刻を取得する関数ですが、上記の点には注意して下さい。


    ■「曜日」を表示する AMPscript

    さて、ここで話を本題に戻しますと「曜日」の表示は、以下となります。

    「○曜日」を含ませる場合(例:月曜日)

    %%=Format(SystemDateToLocalDate(GetSendTime()),'dddd','Date','ja-JP')=%%

    「○曜日」を含まない場合(例:月)

    %%=Replace(Format(SystemDateToLocalDate(Now()),'dddd','Date','ja-JP'),'曜日','')=%%

    「○曜日」を含まない場合は、少し力技ですが、Replace() を使って「曜日」を空欄に置換して除外するという方法を採っています。

    このような構文は覚える必要はないと思います。使いたい場合に、このような記事があったことを思い出し、検索でこの記事に戻ってきてください。

    追記:2024 年 9 月 9 日
    @skykid さんからコメントで、以下の AMPscript でも「○曜日」を含まないの場合が対応できると情報頂きました。ご共有ありがとうございました。
    %%=FormatDate(SystemDateToLocalDate(Now()),'dddd','','ja-JP')=%%

    今回は以上です。


    次の記事はこちら

    前回の記事はこちら

    私の note のトップページはこちら

     
     
     
    Salesforce Marketing Cloud、Agentforce、Data Cloud、Salesforce 認定資格に関する実践的な情報を発信しています。これらの記事が、皆さまの学習や日々の業務に少しでもお役に立てば幸いです。