【第538回】 Marketing Cloud Next : AMPscript の IF 文による画像出し分け
Marketing Cloud Next Growth & Advanced Editions における Summer ’26 新機能リリース で、ついに AMPscript が登場しました。
現時点では Marketing Cloud Engagement に比べて、いくつかの重要な関数が使えないものの、IF 文(条件分岐)も利用できますので、AMPscript による動的コンテンツ的な表現を行うことも可能です。
IF 文
IF 文とは、条件に応じて表示内容を切り替えるための「条件分岐」です。
例えば、以下のサンプルでは変数 @test に固定値として "True" を設定し、その値によって表示内容を切り替えています。
%%[
SET @test = "True"
IF @test == "True" THEN
]%%
Condition met!
%%[ELSE]%%
Condition not met.
%%[ENDIF]%%この例では "True" を固定で指定しているため、常に「Condition met!」が表示されます。「" "」で囲うと固定の文字列扱いになります。
重要:AMPscript のブロックは、ビジュアルエディターのパラグラフコンポーネントに配置してしまうと、エラーが発生して送信やプレビューができなくなります。必ず HTML コンポーネントに配置するようにしてください。
実際の運用では、固定値の代わりに「データグラフ」や「コンテンツ変数」の値を利用します。
例えば、「データグラフ」の場合
SET @test = $dataGraph.Favorite_Genre__cや「コンテンツ変数」の場合
SET @test = $content.Favorite_Genreのように動的な値を取得することで、顧客ごとに異なるコンテンツを表示できるようになります。
サンプルコード
今回は、データグラフ内の「Favorite Genre」という項目の値に応じて、画像を動的に表示する例です。
対象となる「Favorite Genre」の値は、以下の4つです。
Rock
Jazz
Pop
Classical
%%[IF $dataGraph.Favorite_Genre__c == "Rock" THEN]%%
%%=ContentBlockByKey("MCMQ7DESJCTNCTHGD63VCEILTLQI")=%%
%%[ELSEIF $dataGraph.Favorite_Genre__c == "Jazz" THEN]%%
%%=ContentBlockByKey("MCP4LDVOJKOVFJBIC4QIZC52Z4YY")=%%
%%[ELSEIF $dataGraph.Favorite_Genre__c == "Pop" THEN]%%
%%=ContentBlockByKey("MCBFUZ5WF34FBMVHBHCXPGTCBUG4")=%%
%%[ELSEIF $dataGraph.Favorite_Genre__c == "Classical" THEN]%%
%%=ContentBlockByKey("MCRGSXERQVOBFRHOEZVV5TAD4QQY")=%%
%%[ELSE]%%
<div>
<img alt="Other"
src="https://nac-plus.cdn.salesforce-experience.com/cms/delivery/media/MCKI6HMM4EZZC2REX4HAEVJSREMU?channelId=0apgC000000BcYE&oid=00DgC0000024nxA"
style="width:100%;display:block;"
width="550">
</div>
%%[ENDIF]%%※ フォールバック(ELSE)の部分だけ Content Block は使用していません
Content Block を利用しない場合の注意点
各画像のタグを <div> で囲う必要があります。
CMS にアップロードした画像の URL を取得する方法は こちら から。
ContentBlockBy 関数
以下の ContentBlockBy 関数が利用できます。
ContentBlockById():コンテンツブロックを コンテンツキー で指定
ContentBlockByKey():コンテンツブロックを コンテンツキー で指定
ContentBlockByName():コンテンツブロックを API 参照名で指定
重要: Marketing Cloud Next では、大量のメッセージをレンダリングする際、毎回 Content API から同じコンテンツを取得するのではなく、Caffeine(自分のポケット)や Redis(共有のロッカー)に一時的に保存(キャッシュ)し、それを再利用することで処理の高速化と API 負荷の軽減を行っています。また、Locale ごとにキャッシュが分けられるため、Language Variant も適切に扱える仕組みになっています。
コンテンツキー は、以下で取得できます。
ContentBlockById() で使用
ContentBlockByKey() で使用

API 参照名 は、以下で取得できます。
ContentBlockByName() で使用

これらを AMPscript をビジュアルエディターに配置すると、実はコードビューでは自動的に、以下の Handlebars 形式へ変換されています。
ContentBlockById() ⇒ {{getContentBlock key=""}}
ContentBlockByKey() ⇒ {{getContentBlock key=""}}
ContentBlockByName() ⇒ {{getContentBlock apiname=""}}
注意:現在、Handlebars で利用できるコンテンツ関数は getContentBlock key のみです。getContentBlock apiname は内部エラーとなるのでまだ利用しないようにしてください。
↓ ↓ ↓ ↓ ↓ 利用開始の目安は以下の注意文言が外れた時です。

実際の画面確認
配信対象を変えることで、画像が変更されることも確認できました。



いかがでしたでしょうか。
個人的に、Summer '26 の新機能により、これまでコードエディターのみだった作業を ビジュアルエディター上でも対応できるようになったことは、想像以上に大きなアップデートであったと思っています。加えて、AMPscript と Handlebars を組み合わせて利用できる点も大きなメリットです。
Marketing Cloud Next では、AMPscript で記述したコードが内部的には Handlebars に変換されて処理されている ことも理解しておきたいポイントですね。
今回は以上です。
