見出し画像

【第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&#61;0apgC000000BcYE&amp;oid&#61;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 に変換されて処理されている ことも理解しておきたいポイントですね。

今回は以上です。


次の記事はこちら

前回の記事はこちら

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