
Photo by
kanam
【第110回】 AMPscript を使って 1 週間ごとに内容が変わるコンテンツブロックを作成する
Salesforce Marketing Cloud を使って、同じ顧客に対して 1 週間に 1 回、全く同じ内容のメッセージを送り続けるシナリオがあったとします。もしそれが毎週続いたら、早々に飽きられてしまい、開封率やクリック率が下がるだけならまだしも、挙句の果てには、購読解除となってしまいますよね。そのような事態を避ける為に「少しでもメールの内容を変えられたら…」と考えたことはありませんか?
今回はそのような時に使える 1 週間ごとに内容が変わる AMPscript の書き方の紹介です。様々なコンテンツブロックに対して使えるので、自由にアレンジして使ってみてください。
%%[SET @dateDiff = DateDiff(DateParse('2023-11-05'),SystemDateToLocalDate(Now()),'d')
SET @weekNumber = FormatNumber(Subtract(Divide(@dateDiff,7),0.49),'N0')]%%
%%[IF @weekNumber == 0 or Mod(@weekNumber,6) == 0 THEN]%%
%%=ContentBlockById('コンテンツ 1')=%%
%%[ELSEIF @weekNumber == 1 or Mod(@weekNumber,6) == 1 THEN]%%
%%=ContentBlockById('コンテンツ 2')=%%
%%[ELSEIF @weekNumber == 2 or Mod(@weekNumber,6) == 2 THEN]%%
%%=ContentBlockById('コンテンツ 3')=%%
%%[ELSEIF @weekNumber == 3 or Mod(@weekNumber,6) == 3 THEN]%%
%%=ContentBlockById('コンテンツ 4')=%%
%%[ELSEIF @weekNumber == 4 or Mod(@weekNumber,6) == 4 THEN]%%
%%=ContentBlockById('コンテンツ 5')=%%
%%[ELSEIF @weekNumber == 5 or Mod(@weekNumber,6) == 5 THEN]%%
%%=ContentBlockById('コンテンツ 6')=%%
%%[ENDIF]%%
この計算式は下記のような形で、第何週目か(@weekNumber)を集計しています。

<注意事項>
・このサンプルは 6 週間で 1 回転します。
・1 週間が何曜日から開始するかは、1 行目の日付(初日)が持っている「曜日」から開始されます。この例の 2023 年 11 月 5 日は「日曜日」なので「日曜日〜土曜日」単位となります。
このサンプルを応用すれば 4 週間で 1 回転もできますし、5 週間で 1 回転も可能です。下記を参考にしてください。
%%[SET @dateDiff = DateDiff(DateParse('2023-11-05'),SystemDateToLocalDate(Now()),'d')
SET @weekNumber = FormatNumber(Subtract(Divide(@dateDiff,7),0.49),'N0')]%%
%%[IF @weekNumber == 0 or Mod(@weekNumber,4) == 0 THEN]%%
%%=ContentBlockById('コンテンツ 1')=%%
%%[ELSEIF @weekNumber == 1 or Mod(@weekNumber,4) == 1 THEN]%%
%%=ContentBlockById('コンテンツ 2')=%%
%%[ELSEIF @weekNumber == 2 or Mod(@weekNumber,4) == 2 THEN]%%
%%=ContentBlockById('コンテンツ 3')=%%
%%[ELSEIF @weekNumber == 3 or Mod(@weekNumber,4) == 3 THEN]%%
%%=ContentBlockById('コンテンツ 4')=%%
%%[ENDIF]%%
%%[SET @dateDiff = DateDiff(DateParse('2023-11-05'),SystemDateToLocalDate(Now()),'d')
SET @weekNumber = FormatNumber(Subtract(Divide(@dateDiff,7),0.49),'N0')]%%
%%[IF @weekNumber == 0 or Mod(@weekNumber,5) == 0 THEN]%%
%%=ContentBlockById('コンテンツ 1')=%%
%%[ELSEIF @weekNumber == 1 or Mod(@weekNumber,5) == 1 THEN]%%
%%=ContentBlockById('コンテンツ 2')=%%
%%[ELSEIF @weekNumber == 2 or Mod(@weekNumber,5) == 2 THEN]%%
%%=ContentBlockById('コンテンツ 3')=%%
%%[ELSEIF @weekNumber == 3 or Mod(@weekNumber,5) == 3 THEN]%%
%%=ContentBlockById('コンテンツ 4')=%%
%%[ELSEIF @weekNumber == 4 or Mod(@weekNumber,5) == 4 THEN]%%
%%=ContentBlockById('コンテンツ 5')=%%
%%[ENDIF]%%
今回は以上です。