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

【第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 のトップページはこちら

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