電子メール メッセージに動的コンテンツを追加する
重要
この記事は、2025年6月30日に製品から削除される予定の アウトバウンド マーケティング にのみ適用されます。 中断を避けるため、この日付より前にリアルタイムの旅程に移行してください。 詳細情報: 移行の概要
警告
一部の電子メール フィールドにフィールド レベルのセキュリティを使用している場合は、適切な権限を追加する必要があります。そうしないと、 Customer Insights - Journeys 電子メールを処理できません。
フィールド レベルのセキュリティを設定する方法:
- 右上の 設定 アイコンを選択 して、次に選択 詳細設定を選択します。
- システム セクションで、選択 セキュリティ。
- 選択 列セキュリティ プロファイル。
- 新しいフィールド セキュリティ プロファイルを作成するには、選択 新しいプロファイル をクリックし、[全般] セクションに名前を入力します。
- ユーザー セクションで、システム ユーザー「# D365 Marketing Core Sending」を追加します。
- フィールド権限 セクションで、すべての必須フィールドに 読み取り 権限を追加します。
動的コンテンツは、特定の個人に対してメッセージが送信される直前に解決されます。 通常は、受信者の取引先担当者レコードからの情報の差し込み (名や姓など)、特別なリンクの配置、コンテンツの設定からの情報やリンクの配置に、動的コンテンツを使います。 コーディングが苦にならない場合は、条件付きステートメントや for-each ループなどを含むカスタム ロジックを作成することもできます。 動的コンテンツは、メッセージ本文の任意の場所で使うことができ、数種類の動的な値はメッセージ ヘッダー フィールド (件名、送信元アドレス、送信元名) で使うこともできます。
コンテンツ設定を使用して、電子メール メッセージの標準値と必須値のリポジトリを設定する
コンテンツ設定は、マーケティング電子メール メッセージで使うことができる標準と必須の値のセットです。 各セットには、サブスクリプション センターのリンク、友人に転送のリンク、ソーシャル メディアのリンク、郵便の宛先、および パーソナライズ 機能を使って動的な値としてメッセージ内に配置できる他の情報が含まれます。
Dynamics 365 Customer Insights - Journeys には既定のコンテンツ設定レコードが 1 つ付属しており、既定のサブスクリプション センター (やはり既製のものが含まれます) を使うように事前に構成されています。 必要に応じてこのレコードをカスタマイズでき、追加でレコードを作成することもできます。 各顧客体験を、特定のコンテンツ設定レコードを使うようにセットアップします。つまり、その顧客体験で送信されるすべてのメッセージに、同じレコードが使われます。 ただし、顧客体験ごとに異なるレコードを使うことができます。つまり、複数の顧客体験で同じマーケティング電子メールのデザインを使い、それぞれで異なるコンテンツ設定レコードを指定できます。 複数のコンテンツ設定レコードがある場合は、その中のただ 1 つだけが既定になり、新しく作成する各顧客体験に自動的に適用されます。
コンテンツ設定の値は、送信時に初めて評価されます。つまり、いつでもコンテンツ設定レコードを編集でき、保留中および以降のすべての電子メール メッセージは、自動的に最新の値を使うようになります。
使用する各コンテンツ設定レコードは、電子メールの組み立てと配信を管理する外部マーケティング サービスで使用できる必要があります。 したがって、コンテンツ設定レコードは、新規に作成するたびにライブに移行を選択して公開する必要があります。
Note
電子メール メッセージでよく使用する他の種類の値がある場合、または顧客体験レベルで管理する場合、Dynamics 365 のエンティティの他の種類に対するのと同じように、コンテンツ設定エンティティにカスタム フィールドとしてそれらの値を追加できます 。 ただし、現在のリリースでは、コンテンツ設定エンティティのすべてのカスタム フィールドは種類がテキスト (文字列) である必要があります。 詳細 : Customer Insights - Journeys のカスタマイズ
コンテンツ設定レコードを表示、編集、作成する方法:
アウトバウンド マーケティング>マーケティング テンプレート>コンテンツ設定の順に移動します。
標準の一覧ページが開きます。一覧の表示、並べ替え、検索、フィルターを行って特定のレコードを探し、コマンド バーのボタンを使ってレコードを追加または削除できます。 レコードを選んで編集用に開くか、コマンド バーで新規を選択して新しいレコードを作成できます。
コンテンツ設定フォームが開きます。 既にライブに移行済みのレコードを編集する場合は、編集する前にコマンド バーの 編集 を選択する必要があります。 新規に作成する場合は、フィールドへの入力を開始するだけです。
必要に応じて次の設定を行います。
- 名前: 顧客設定レコードの名前を入力します。 これは、顧客体験または電子メール メッセージのプレビューにコンテンツ設定を割り当てるときに表示される名前です。
- 所有者: レコードを作成した Dynamics 365 Customer Insights - Journeys ユーザーを表示します。
- 代表住所: 組織の住所の主要部分を入力します。 すべてのマーケティング電子メール メッセージは、コンテンツ設定レコードから取得された有効な代表住所を含んでいる必要があります。 選択 ボタンをクリックし、 パーソナライズ を使用して、既存のレコードのフィールド (特定のアカウント レコードのアドレス フィールドなど) を参照する式を入力します。
- 住所 2: 補足の住所情報を入力します (必要な場合)。 選択 ボタンをクリックし、 パーソナライズ を使用して、既存のレコードのフィールド (特定のアカウント レコードのアドレス フィールドなど) を参照する式を入力します。
- 既定: はい に設定すると、現在のコンテンツ設定レコードがすべての新しい顧客体験に対する既定になります。 既定のセットが常にただ 1 つだけ存在する必要があります。既定のセットを変更すると、既存の既定セットは自動的にいいえに変更されます。
- 所有する部署の既定値: この設定は、部署のスコーピングが有効になっている場合にのみ使用できます。 これをはいに設定すると、現在のコンテンツ設定のレコードが、その部署内のすべての新しい顧客体験の既定となります。 部署のスコープのコンテンツ設定の既定値は常にひとつでなければなりません。既定を変更すると、既存の既定値は自動的に いいえ に変更されます。
- LinkedIn URL、Twitter URL、Facebook URL、Instagram URL、YouTube URL、Google Plus URL: これらのソーシャル メディア サービスごとに、組織のランディング ページの URL を入力します。
-
サブスクリプション センター: サブスクリプション センターとして設定されている既存のマーケティング ページを指定します。 すべてのマーケティング電子メール メッセージは、コンテンツ設定レコードから取得された有効なサブスクリプション センター リンクを含んでいる必要があります。 選択 の ボタンをクリックし、 パーソナライズ を使用して、使用する特定のページの 完全なページURL フィールドを参照する式を入力します。 結果の式は次のようになります (GUID の場所はパーソナライズを使用して選択したレコードにより異なります):
{{msdyncrm_marketingpage(3343053c-8daf-e911-a85e-000d3a3155d5).msdyncrm_full_page_url}}
-
友人に転送: 「友人に転送」ページとしてレコード設定されている既存のマーケティング ページを指定します。 選択 ボタンをクリックして、利用可能なページのリストから選択します。 選択 の ボタンをクリックし、 パーソナライズ を使用して、使用する特定のページの 完全なページURL フィールドを参照する式を入力します。 結果の式は次のようになります (GUID の場所はパーソナライズを使用して選択したレコードにより異なります):
{{msdyncrm_marketingpage(36458a9e-72af-e911-a859-000d3a3159df).msdyncrm_full_page_url}}
ウィンドウの右下隅の保存を選択して設定を保存します。
既にライブに移行済みのコンテンツ設定レコードを編集した場合、レコードは保存時に自動的に公開されます。 新しいレコードを作成する場合は、コマンド バーの ライブに移行 を選択してマーケティング サービスに公開すると、そのレコードの使用を開始できます。
パーソナライズを使って動的フィールド値を配置する
パーソナライズを使用すると、有効な動的式を作成して、受信者の取引先担当者レコード、メッセージのコンテンツ設定、他のデータベース値からフィールド値を配置できます。 このボタンは、グラフィカル デザイナーでテキスト要素を選ぶと常に、テキスト書式設定ツール バーに表示されます。 このボタンは、件名、送信元アドレス、送信元名などの一部の設定フィールドにも表示されます。
Note
パーソナライズ ダイアログには Marketing Insights サービスと同期しているエンティティと関係のみが表示されます。 一覧にない 1 つ以上のエンティティについて情報を表示したり関係を使用する必要がある場合は、Marketing Insights サービスに関連エンティティを追加するように管理者に依頼してください。 管理者の場合は エンティティを選択して Marketing Insights サービスと同期する で手順をご確認ください。 所有者 エンティティは、電子メールのパーソナライズではサポートされなくなりました。 レコードの所有者を表すエンティティに応じて、 systemuser または team エンティティのいずれかに置き換えます。
パーソナライズを使用して動的式を使用する
パーソナライズの使用方法:
動的テキストを挿入するフィールドまたはテキスト要素にカーソルを置き、 「パーソナライズ」 ボタン を 選択 します。 パーソナライズ ダイアログが開きます。
次のいずれかを実行します:
- 動的コンテンツを選択し、メッセージを使用するコンテキストに基づいて変更できる値を設定したら、ドロップダウン リストから次のいずれかを選択します。
- 取引先担当者: 受信者の取引先担当者レコードから、名などのフィールド値を配置します。 これらの値は受信者によって異なります。
- ContentSettings: コンテンツ設定からフィールド値を配置します。 サブスクリプション センターの URL、転送の URL、送信者の住所などの値が使用できます。 これらの値は、メッセージが使用されている顧客体験によって異なります。
- FormDoiSubmission: フォーム ダブル オプトイン に対して動的フィールドを配置します。 以下で説明するように、このフィールドに関連付ける値は必要ありません。
- メッセージ: メッセージ自体に関係する値を配置します。現在、これには Web ページとして開く URL とダブル オプトイン電子メール で使用される各種の動的な値が含まれます。
- 静的コンテンツを選択し、特定のレコードから固定値 (今後のイベント名など) を配置します。 この値は、メッセージの使用場所や受信者にかかわらず同じです。 次に以下の設定を行い、必要な値を含むエンティティとレコードを識別します。
- オプションの選択(コンボ ボックスの一番上): エンティティを選択します (イベントや取引先企業など)。 エンティティを検索するには、このボックスにカーソルを置き、必要なエンティティが表示されるまで名前を入力します。
- レコードの選択 (ドロップダウン リスト下部) : 特定のレコードを名前で選択します。 この一覧には、選択したエンティティのすべてのレコードを示しています。 エンティティの場合と同じように、ここでも検索できます。
- 動的コンテンツを選択し、メッセージを使用するコンテキストに基づいて変更できる値を設定したら、ドロップダウン リストから次のいずれかを選択します。
ここでは配置する特定のフィールドを識別する必要があります。 次のいずれかを実行します。
- 関連エンティティ を選択し、前のページで選択したエンティティに関連するエンティティからフィールドを検索します。 そして次の設定を使用し、表示するフィールドおよび関係を識別します。
ダイアログの下部に 最後の式 が表示されます。 挿入を選択し、式を配置します。
重要
for-each ループを使用して作成されたリストは、特定の順序でレンダリングされず、どのフィールドでも並べ替えることができません。
パーソナライズがデータベースの関連付けを表示する方法
パーソナライズでリレーションシップを選択している場合、次の命名規則の 1 つを使ってオプションが表示されます。
-
FieldName (PrimaryEntity) -> SecondaryEntity
主エンティティがかっこ内にありフィールド名が表示されている場合は 多対一 (N:1) の関係で副エンティティから 1 つのレコードになります。 そのため、通常は 2 番目のドロップダウン リストを使用して、式と共に表示する副エンティティからフィールドを選択します。 -
PrimaryEntity -> FieldName (SecondaryEntity)
副エンティティがかっこ内にありフィールド名が表示されている場合は 一対多 (1:N) の関係で副エンティティから複数のレコードにできます。 そのため、フィールドを選択できません (2 番目のドロップダウン リストが無効になります)。そして代わりにこの関係を for/each ループ の一部として使用して、利用可能な各関連レコードの値を表示する必要があります。 -
PrimaryEntity -> SecondaryEntity
どちらのエンティティもかっこで囲まれていない場合、これは 多対多 (N:N) の関係で複数のレコードを双方向に接続できます。 したがって、フィールドを選択できず (2番目のドロップダウン リストは無効になります)、このリレーションシップを個人設定に使用することはできません。 これは、リレーションシップが中間エンティティによって維持されており、主エンティティから中間エンティティにしか移動できないためです。
ここで:
- PrimaryEntity は、リレーションシップの開始側のエンティティです。 これは常に矢印の左側に表示されます。 これは、パーソナライズ ダイアログの前のページで選択したエンティティです。 たとえば、取引先担当者の 会社名 フィールド (フィールド名) を通じて、取引先担当者 (主エンティティ) を 取引先企業 (副エンティティ) に関連付けることができます; これは次のように表示されます: 会社名 (取引先企業) -> 取引先企業
- FieldName は、常にエンティティ名の横に表示されます (かっこ内)。 これは関係を確立するフィールドの名前です。 名前付きフィールドはかっこ内のエンティティに属し、矢印の反対側のエンティティからの値を表示します (しかし実際には値が引き出される関連レコードの ID を含みます)。 場合によっては、同じ 2 つのエンティティ間のリレーションシップに気付きます。それぞれのエンティティは異なるフィールドを通過します。
- SecondaryEntity は、リレーションシップの行先です。 これは常に矢印の右側に表示されます。 最後の式で表示される値は、副エンティティに属するフィールドから取得されます。
Note
N: N の関連付けで、フィールドの値が表示されません。 つまり、同じ 2 つのエンティティ間に複数の N:N 関係がある場合、ドロップダウン リストに複数の同一に見える関係が表示されます。 この状況は非常にまれですが、それを確認した場合は試行錯誤により使用する正しい関連付けを特定する必要があります。 確認するには 結果の式 をチェックして、正しい関係を選択したかどうかを確認します (関連付けはここで異なって示されており、手がかりを提供する可能性があります)。または両方のバージョンの N:N 関係を含むテスト メッセージを設定して、テストの顧客体験を使用して自分自身に配信します。
いくつかの例には次のようなものがあります。
- 会社名 (取引先担当者) -> 取引先企業: この関係は取引先担当者レコードの 会社名 フィールドで 取引先企業 エンティティからの情報を表示するために 取引先担当者 エンティティによって使用されます。 つまり、取引先担当者が働く会社 (取引先企業) にリンクします。
- 管理パートナー (取引先担当者) -> 取引先企業 : この関連付けは、 取引先担当者 エンティティによって、取引先担当者レコードの 管理パートナー フィールドにある 取引先企業 エンティティからの情報を表示するために使用します。 つまり、取引先担当者の管理パートナーと、会社 (取引先企業) を関連付けます。
- 取引先担当者 -> 取引先責任者 (取引先企業) : この関連付けは、 取引先企業 エンティティによって、取引先企業レコードの 取引先責任者 フィールドの 取引先担当者 エンティティからの情報を表示するために使用します。 つまり、現在の取引先担当者が取引先責任者として割り当てられているすべてのアカウントが検索されます。
- 取引先担当者 -> 取引先担当者 (イベント登録) : この関連付けは、 イベント登録 エンティティによって、イベント登録レコードの 取引先担当者 フィールドにある 取引先担当者 エンティティからの情報を表示するために使用します。 言い換えれば、現在の取引先担当者によって (またはそのために) 行われたすべてのイベント登録を検索します。
パーソナライズで作成された式
パーソナライズは次のような形式を使う式を作成します:
{{EntityName.FieldName}}
{{EntityName(RecordID).FieldName}}
{{EntityName.RelationshipName.FieldName}}
{{EntityName(RecordID).RelationshipName.FieldName}}
結果の式でリレーションシップ名に使用される表記は、それらがパーソナライズ ダイアログで表示されるものと一致しないことに注意してください。 結果の式の例を以下に示します。
{{contact.firstname}}
受信者の名を配置します。{{msdyncrm_marketingpage(3343053c-8daf-e911-a85e-000d3a3155d5).msdyncrm_full_page_url}}
括弧内の GUID で指定されたマーケティング ページ レコードのmsdyncrm_full_page_url
フィールドの値を配置します。 通常、コンテンツ設定 レコードでこのフォームの式を使用して、サブスクリプション センターや「友人に転送」ページを指定します。{{msdyncrm_contentsettings.msdyncrm_subscriptioncenter}}
メッセージを送信する顧客体験用に構成された コンテンツ設定 で識別されているサブスクリプション センター ページの URL を配置します。{{msdyncrm_contentsettings.msdyncrm_forwardtoafriend}}
メッセージを送信する顧客体験用に構成された コンテンツ設定 で識別されている転送ページへの URL を配置します。{{Message.ViewAsWebpageURL}}
現在のメッセージを Web ブラウザーで開くための URL を配置します。{{msevtmgt_event(8a519395-856c-4e22-b560-650ce6d6a79d).msevtmgt_webinarurl}}
指定したイベント ID (かっこ内) によって示されるイベントのウェビナー URL を配置します。{{msdyn_survey(39128da2-c968-4627-9595-f030b6571be4).msdyn_name}}
指定した調査 ID (かっこ内) によって示される調査の名前を配置します。{{contact.contact_account_parentcustomerid.name}}
この式は、取引先担当者が勤めている会社の取引先企業名を検索します。{{contact.contact_account_msa_managingpartnerid.name}}
この式は、取引先担当者が勤めている会社の取引先企業の管理パートナー名を検索します。
機能する式を取得したら、それをコピーしてどこにでも貼り付けられます。 毎回、パーソナライズを使う必要はありません。
重要
フィールド式では、最大 2 ホップ (ピリオド) を使用できます。 パーソナライズで生成した式にホップを追加して、より複雑な式を作成しないでください。
チップ
パーソナライズでサポートされるデータの種類が必要な場合、最初から入力するのではなく、通常は パーソナライズ 機能を使ってコードを配置するのが最良の方法です。 これにより、エンティティ名、関係名、フィールド名がデータベースで使われていた名前と一致するので、スペルミスの回避に役立ちます。
メモ
Dynamics 365 Customer Insights - Journeys のメール送信機能は、計算フィールドをサポートしていません。
宛先、送信元名、送信元アドレス、返信先フィールドの動的な値
マーケティング電子メール フォームの概要タブで、メッセージのコンテンツに関係しないさまざまな設定を送信者と受信者 セクションで指定できます。 これには、メッセージで使われる宛先、送信元名、送信元アドレス、返信先を設定するための値と式が含まれます。
この機能を利用する一般的な方法の 1 つは 送信者名 と 送信元アドレス を取引先担当者レコードの所有者に設定することです。 次に、各取引先担当者レコードの所有者をその取引先担当者を管理する営業担当者に割り当てます。受信者には知っている可能性のある人の差出人アドレスが記載されたマーケティング電子メールが送信されます。これは開封率を大幅に増やします。 方法は以下のとおりです。
- Customer Insights - Journeys インスタンスが ユーザー (systemuser) を Marketing Insights サービスと同期するようにまだ設定されていない場合は、この設定について管理者と相談してください。 管理者の場合は、 エンティティを選択し、Marketing Insights サービスと同期する で手順をご確認ください。
- 電子メール メッセージを開き 概要 タブに移動します。
- [送信者名] フィールドの内容を削除し、このフィールドの横にある [パーソナライズ] ボタン を 選択 します。
- パーソナライズ ダイアログの最初のページで、コンテキスト を選択して 取引先担当者 に設定します。 次へ を選択します。
- パーソナライズ ダイアログの 2 ページ目で 関連エンティティ を選択して、次の手順を実行します:
- 一番上のドロップダウン リスト (関連付け) を 所有ユーザー (取引先担当者) -> ユーザー に設定します。
- 下部のドロップダウン リスト (フィールド) を 氏名 に設定します。
- OK を選択して式を配置すると次のようになります:
{{contact.contact_systemuser_owninguser.fullname}}
。 - [送信元アドレス] フィールドの内容を削除し、このフィールドの横にある [パーソナライズ] ボタン を 選択 します。
- パーソナライズ ダイアログの最初のページで、コンテキスト を選択して 取引先担当者 に設定します。 次へ を選択します。
- パーソナライズ ダイアログの 2 ページ目で 関連エンティティ を選択して、次の手順を実行します:
- 一番上のドロップダウン リスト (関連付け) を 所有ユーザー (取引先担当者) -> ユーザー に設定します。
- 下部のドロップダウン リスト (フィールド) を 既定電子メール に設定します。
- OK を選択して式を配置すると次のようになります:
{{contact.contact_systemuser_owninguser.internalemailaddress}}
。
所有者ユーザーの名前や電子メール アドレスをメッセージのコンテンツ内の任意の場所に配置するために、同様の手法を使用できます。 パーソナライズを使うか、Handlebar の式をコピー/ペーストするか、あるいは手動で Handlebar の式を入力することもできます。
動的な値を使用して画像ソースやリンクを選択する
動的な式を使用して、画像要素のソース URL を定義できます。 これを行うには、画像要素を 選択 し、その プロパティ パネルに移動して、 ソース フィールドの横にある パーソナライズ ボタン を 選択 して、URLの一部として動的テキストを配置します。 通常はこれに静的テキストを組み合わせて完全な URL を組み立てます。 たとえば、受信者の取引先担当者 ID または会社名を含めて、各受信者に関連する画像を指定できます。
画像のリンク宛先を設定するための動的な式を作成するために、パーソナライズを使用することもできます。
メモ
Dynamics 365 Customer Insights - Journeys ファイル ライブラリ は、アップロードする各画像に対して一意の GUID ベースのファイル パスを生成します。つまり、ファイル ライブラリの画像は元のファイル名を含まない、予測不可能な URL を持ちます。 したがって、ここで説明する手法を使用するには、URL が予測可能で、Dynamics 365 フィールドから簡単に抽出できる値を含めることができる独自の Web サイトまたはサード パーティのホスティング サービスで画像をホストする必要があります。
レコード ID の検索
(フォーム {{EntityName(RecordID).FieldName}}
を使う) 状況に依存しないフィールド式には、値の取得元の特定のレコードを識別するためのレコード ID が必要です。 通常、パーソナライズはこれらの ID を見つける際に役立ちますが、メッセージの動的機能を設計している時は手動で ID を見つける必要がある場合があります。 レコードの ID を確認する方法は次のとおりです。
- 参照するレコードを開きます。
- ブラウザーのアドレス バーに表示されている URL を参照します。次のような URL が表示されています:
https://<MyOrg>.crm.dynamics.com/main.aspx?appid=00001111-aaaa-2222-bbbb-3333cccc4444&pagetype=entityrecord&etn=msevtmgt_event&id=11112222-bbbb-3333-cccc-4444dddd5555
&id=
で始まる URL の部分を探します。この後に、現在のレコードの ID 番号が続きます。 その数値 (値のみ) をコピーし、式で使います。
高度な動的コンテンツ
高度な論理的処理を電子メールのデザインに追加し、受信者、人口統計、コンテキストに対するコンテンツの対応をいっそう高めることができます。 この種類のカスタマイズには、スクリプトとプログラミングに関する基本的な知識が必要です。
前の例で見たように、動的コンテンツは二重波かっこ ({{
と }}
) で囲まれています。 これには、パーソナライズ 機能を使って追加する標準フィールド値と、このセクションで説明している高度なプログラミング構成要素の両方が含まれます。
チップ
二重波かっこを使ってコード ブロックの開始と終了を示すのではなく、メッセージ内で二重波かっこを表示するには、\{{
や \}}
のように最初の波かっこの前にバックスラッシュを追加してエスケープします。 スラッシュはレンダリングされた最終的なメッセージには表示されませんが、二重波かっこは表示されます。
条件付きステートメントと比較
条件付き (if-then-else) ステートメントでは、1 つ以上の条件式が true と false のどちらに解決されるかに応じてコンテンツが表示されます。 これらのステートメントを作成するために必要なコードを追加するには、テキスト要素内に配置するか、または他のデザイン要素間でカスタム コード要素を配置します。 詳細: デザイナーで高度な動的コンテンツを入力する方法
条件付きステートメントは次のような形式になります。
{{#if (<operator> <value1> <value2>)}}
Content displayed when the expression is true
{{else if (<operator> <value1> <value2>)}}
Content displayed when the first expression is false and the second one is true
.
.
.
{{else}}
Content displayed when all expressions are false
{{/if}}
各項目は次のとおりです。
- 条件ブロックは常に
{{#if … }}
で開く必要があります。 - 条件式はかっこで囲む必要があります。
- <operator>で始まる条件式は、以下の表に記載した値のいずれかである必要があります。 最初の値と 2 番目の値の比較方法を設定します。
- <value1> と <value2> は、条件式によって比較される値であり、それぞれ動的な値または固定された値にすることができます。 <値1> または <値2> が固定された文字列値 (数字または式以外) の場合は、単一引用符 (') で囲む必要があります。実数の場合は、小数点としてピリオド (.) を使います。
- <値 1> がブール型フィールド (Dynamics 365 では Two Options フィールドと呼ばれます) の場合、<演算子>、<値 2>、または条件式は含まれません。 ブール型フィールドには常に true または false であるため、これらを直接使用して
{{#if contact.is_vip}}
などの条件を設定する必要があります。 -
{{else}}
と{{else if … }}
の句は省略可能です。 - 条件ブロックは常に
{{/if}}
で閉じる必要があります。
次の表に、条件式で使えるすべての演算子の一覧を示します。 その他の演算子は現在使うことができず、条件式に (AND や OR などの演算子を使った) 複雑なブール式を使用することもできません。
Dynamics 365 Customer Insights - Journeys 構文 (大文字と小文字は区別されます) | 演算子 |
---|---|
eq | 指定の値に等しい |
ne | 指定の値に等しくない |
lt | 指定の値より小さい |
gt | 指定の値より大きい |
lte | 指定の値以下 |
gte | 指定の値以上 |
たとえば、次の条件付きステートメントを使って、各メッセージの受信者の国に基づいてメッセージのあいさつ文で使われる言語を設定できます。
<p>{{#if (eq contact.address1_country 'Denmark')}}
Hej
{{else if (eq contact.address1_country 'US')}}
Hi
{{/if}} {{contact.firstname}}!</p>
ここでは、is_vip
と呼ばれるブール型 (Two Options) の条件分を示します; ブルー型のフィールドは常に true か false の値が入るため、条件には演算子、比較値または条件式が含まれないことに留意してください。
<!-- {{#if contact.is_vip}} -->
<h3>Be sure to show your VIP card to receive a 20% discount!</h3>
<!-- {{/if}} -->
チップ
空のフィールド値は、以下を使ってテストできます。
{{#if (eq contact.lastname '')}}
''
は、二重引用符ではなく 2 つの単一引用符です。 このフィールドは、null フィールドではなく空のフィールドです。
チップ
条件式には複雑なブール式を使えませんが、以下のような類似機能を実装できます。
サポートされていません:
{{#if A and B}}<DisplayedContent>{{/if}
同等です (サポートされます):
{{#if A}}{{#if B}}<DisplayedContent>{{/if}}{{/if}}
サポートされていません:
{{#if A or B}}<DisplayedContent>{{/if}
同等です (サポートされます):
{{#if A}}<DisplayedContent>{{/if}} {{#if B}}<DisplayedContent>{{/if}}
チップ
データベースでオプション セットとして保存される値をテストしている場合、表示値ではなく、オプション セットのインデックス値を使用します。 たとえば、contact.customertypecode
と呼ばれるフィールドがある可能性があります。それは顧客の種類を識別する整数を保持します。 各顧客の種類コードには、0 = "銅"、1 = "銀"、2 = "金" のような表示名もあります。 この場合、一致する表示値ではなく、インデックス (整数) を使用するように式を設定する必要があります。 したがって、ゴールド顧客を探している場合は、以下を使用する必要があります。
{{#if (eq contact.customertypecode 2)}}
チップ
"1,932,333" などの大きい数字をテストしている場合、UI でよく表示されるとしても、比較ステートメントでは千単位の桁区切り文字 (,) を省きます。 この値をテストするには、式は次のように表示されます。
{{#if (eq contact.customernumber 1932333)}}
For-each ループ
For-each ループでは、特定の現在のレコードに関連するレコードのコレクションを段階的に作成できます。たとえば、特定の取引先担当者に関連付けられている最近のすべてのトランザクションの一覧を提供できます。 これらのステートメントを作成するために必要なコードを追加するには、テキスト要素内に配置するか、または他のデザイン要素間でカスタム コード要素を配置します。 詳細: デザイナーで高度な動的コンテンツを入力する方法
For-each ループの形式は次のとおりです。
{{#each Entity.RelationshipName }}
...
{{this.RelatedField1}}
...
{{this.RelatedField2}}
...
{{/each}}
各項目は次のとおりです。
- ループ ブロックは常に
{{#each … }}
で開く必要があります。 -
Entity.RelationshipName
は、ループが反復する関連レコード セットを識別します。 - ループは、使用可能な最初の関連レコードから開始し、すべての関連レコードが一覧されるまで、使用可能な各関連レコードについて繰り返します。 関連レコードは、予測不能な任意の順序で返されることにご注意ください。
-
{{this.RelatedField<n>}}
は、関連レコードからのフィールド名を識別します。 この式の "this" の部分は、ループの現在の繰り返しで処理されている関連レコードを参照し、この後に関連エンティティの有効なフィールド名が続く必要があります。 各ループには任意の数のフィールドを含めることができます。 - ループ ブロックは常に
{{/each}}
で閉じる必要があります。
たとえば、データベースには、取引先担当者が注文した製品の一覧が含まれることがあります。 次のようなコードを使って、これらを電子メール メッセージに一覧表示できます。
<p>You have purchased:</p>
<ul>
<!-- {{#each contact.contact_product_productid}} -->
<li>{{this.name}}</li>
<!-- {{/each}} -->
</ul>
この例では、Dynamics 365 Customer Insights - Journeys システムは product というユーザー定義エンティティを含むようにカスタマイズされています。productid フィールドの contact エンティティと product エンティティの間には 1:N 関係が設定されています。 電子メール メッセージで利用できる product エンティティについては、(通常どおり) Marketing Insights サービスと 同期 されている必要もあります。
重要
メール レンダリングの目的で、最初の 1,000 件の関連項目のみがリレーションシップに追加されます。 1,000 件を超える項目とのリレーションシップの使用は、メール テンプレートではサポートされておらず、予期しない結果になる可能性があります。
また、第 2 レベルのリレーションシップはサポートされていないことにも注意してください。 したがって、次の構文は使用できません:
{{#each Entity.RelationshipOnEntity}}
...
{{#each this.RelationshipOnRelatedEntity}}
...
{{/each}}
...
{{/each}}
デザイナーで高度な動的コンテンツを入力する方法
デザイナーで高度な動的コードを入力するときは、予期しない間違いを犯してコードを破損してしまうことが多いため、慎重に行う必要があります。 コードの入力およびテスト方法に関するヒントを以下にいくつか示します。
- デザイナー タブのデザイン要素間でコード スニペットを配置するためにカスタム コード要素を使用します。これは HTML タブを使用して HTML に直接コードを配置するよりはるかに見やすくて信頼性があります。ただし、テキスト要素内で動的コードも使用するかもしれず、その場合はこのリストで後に説明するように、HTML タブのコードをクリーンアップする必要があります。 (フルページ エディター で作業している場合は、カスタム コード要素を選択して内容を編集します。)
- デザイナータブでコードをテキスト要素に入力する場合、追加する任意の余分な空白やキャリッジ リターンがあるとコードに
および<p>
タグが作成され、破損する可能性があります。 必ず後で HTML タブに移動して、このような余分なタグをすべて確認し、除去してください。 - コードをテキスト要素に入力する場合、すべての動的コンテンツ コードは、開始タグと終了タグのセット (
<p>
と</p>
など) で囲まれているか、HTML コメント内にある必要があります (表示テキストから完全に分離されたコードの場合)。 コメントまたは有効な HTML タグのペア (またはカスタムコード要素) の外側にはコードを配置しないでください。配置すると、エディターが混乱します (特に、HTML タブと設計タブの間を切り替える場合)。 HTML タブで、テキスト要素内の HTML の確認および修正に取り組む必要があります。 - (この一覧の後の for-each ループの例に示されているように) 各行を独自の HTML タグのセットで囲む場合を除き、同じ式 (for-each ループ内など) に含まれているコード要素の間にキャリッジ リターンを配置しないでください。
- パーソナライズ 機能は、データベース テーブル、フィールド、関連付け名を検索するのに役立つため、データベースから値をフェッチする式を作成するのにとても便利です。 このツールは、デザイナータブのテキスト要素内で作業しているとき、および値を入力するときにそれをサポートする特定のフィールド (電子メール件名など) で利用可能です。 パーソナライズは、HTML タブまたはカスタム コード要素内で作業してるときには利用できないため、代わりに、任意のテキスト要素でパーソナライズを使用し始めてから、結果の式をカスタム コード要素または HTML に切り取り/貼り付けできます。
- ループの作成時または検索値の配置時に使用する関連付け名は、Marketing Insights サービスで使用されている関連付け名と一致している必要があります。 この関連付け名は、Dynamics 365 のカスタマイズに使用されている関連付け名と同じである必要はありません。 正しい関連付け名を確認するには、パーソナライズ 機能を使用します。
たとえば、デザイナーの HTML タブに次のように入力することで、電子メール メッセージのあいさつ行を設定できます (テキスト要素の内部または外部のいずれか)。
<p>{{#if (eq contact.address1_country 'Denmark')}}Hej{{else if (eq contact.address1_country 'US')}}Hi{{/if}}{{contact.firstname}}!</p>
以下の例 (以前にも示しました) は、コメントを使って、表示されるコンテンツ (HTML タブにもあります) の完全に外部に存在するコードを囲む方法を示しています。
<p>You have purchased:</p>
<ul>
<!-- {{#each contact.contact_product_productid}} -->
<li>{{this.name}}</li>
<!-- {{/each}} -->
</ul>