> ## Documentation Index
> Fetch the complete documentation index at: https://developers.hubspot.jp/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# プログラミング可能なコンテンツが含まれるEメールを作成する

'プログラミング可能なコンテンツが含まれるEメールを作成する';

<Alert type="warning">
  現在のところ、この機能はベータ版として提供されています。この機能を使用することにより、[ベータサービス利用規約](https://legal.hubspot.com/jp/hubspot-beta-terms)に同意したことになります。このガイドで説明する機能は、ベータ版でのみご利用いただけます。ベータ版を使用するには[テンプレートまたはモジュールでオプトイン](https://knowledge.hubspot.com/ja/marketing-email/create-programmable-emails)してください。
</Alert>

<ProductTier tiers={['marketing_hub-professional', 'marketing_hub-enterprise']} />

プログラミング可能なコンテンツを使用することで、HubLでHubSpotアカウントのデータを取得して、Eメールをパーソナライズできます。

プログラマブルEメールで使用できるデータソースは、HubSpotサブスクリプションに応じて異なります。

* **Marketing Hub** Professionalサブスクリプションをご利用の場合、標準CRMオブジェクト（コンタクト、会社、製品など）のデータを使用できます。
* **Marketing Hub** Enterpriseサブスクリプションをご利用の場合は、[HubDB](https://developers.hubspot.com/docs)テーブルや[カスタムオブジェクト](https://knowledge.hubspot.com/ja/records/use-custom-objects)などの構造化データソースを使用することもできます。このデータは、受信者のコンタクトプロパティーに基づいて絞り込むことができます。

例えば、不動産のウェブサイトでは、見込み客に希望する物件の要件を入力してもらうフォームを設置することができます。見込み客がフォームを送信すると、フォームの入力内容に基づき、見込み客が興味を持ちそうな物件情報をEメールで送信するワークフローを設定できます。

## Eメール送信の上限

プログラマブルEメールには、CRM HubL関数である[crm\_object](/cms/reference/hubl/functions#crm-object)、[crm\_objects](/cms/reference/hubl/functions#crm-objects)、[crm\_associations](/cms/reference/hubl/functions#crm-associations)を含めることができますが、これらの関数を含むEメールには、送信する受信者数によって、以下の制限が適用されます。

<table>
  <tbody>
    <tr>
      <td>
        <strong>受信者数合計</strong>
      </td>

      <td>
        <strong>CRM HubL関数の最大数</strong>
      </td>
    </tr>

    <tr>
      <td>500,000</td>
      <td>1</td>
    </tr>

    <tr>
      <td>250,000</td>
      <td>2</td>
    </tr>

    <tr>
      <td>165,000</td>
      <td>3</td>
    </tr>

    <tr>
      <td>125,000</td>
      <td>4</td>
    </tr>

    <tr>
      <td>100,000</td>
      <td>5</td>
    </tr>
  </tbody>
</table>

上記のいずれかの制限値に達するか、それを超えるEメールを送信すると、Eメールの送信に遅延が生じるか、キャンセルされます。

上記の制限に加え、以下の点にもご注意ください。

* プログラマブルEメールを複製する場合、元のEメールが処理中の状態にある間は、複製したEメールを送信することはできません。Eメールの送信ごとに、少なくとも1時間の間隔を空ける必要があります。
* `crm_object`、`crm_objects`、`crm_associations`のHubL関数が含まれるプログラマブルEメールでは、A/Bテストを実施することはできません。これらの関数を使用して送信されたEメールは、他のEメールよりも送信時間が大幅に遅いため、テスト結果が不正確になる恐れがあります。

## 1. プログラマブルEメールのモジュールを作成する

HubDBまたはカスタムオブジェクトのデータにアクセスするためのEメールモジュールを作成するには、次の手順に従います。

* HubSpotアカウントにて、［マーケティング］＞［ファイルとテンプレート］＞［デザインマネージャー］の順に進みます。

* 左上の［ファイル］をクリックし、［新規ファイル］を選択します。

* 表示されるダイアログボックスで、ファイルタイプとして［モジュール］を選択し、［次へ］をクリックします。次に、［Eメール］チェックボックスをオンにして、ファイルの**名前**を入力します。

* ［作成］をクリックします。

* 作成したモジュールで、プログラマブルEメールを有効にするには、次の手順に従います。

  * 右側の設定パネルで、［モジュールをプログラマブルEメールのベータに対応させる］スイッチをオンに切り替えます。

  ![プログラマブルEメールスイッチ0](https://www.hubspot.jp/hubfs/Knowledge_Base_2021/Developer/programmable-email-switch0.png)

* また、コード化されたEメールテンプレートでは、ファイルの先頭に`isEnabledForEmailV3Rendering: true`を追加することで、プログラマブルEメールを有効にできます。

  ![プログラマブルEメール用のデザイン マネージャー テンプレートを有効にする](https://knowledge.hubspot.com/hs-fs/hubfs/Imported%20sitepage%20images/enable-design-manager-template-for-programmable-email.png?width=510\&name=enable-design-manager-template-for-programmable-email.png)

モジュールを作成したら、CRMのデータにアクセスするためのコードを追加します。次の例は、さまざまなデータソースからクエリーを実行する方法を示しています。

### 標準オブジェクト

[crm\_object](/cms/reference/hubl/functions#crm-object)、[crm\_objects](/cms/reference/hubl/functions#crm-objects)、[crm\_associations](/cms/reference/hubl/functions#crm-associations)などのHubL関数を使用して、コンタクト、会社、製品など、アカウント内の標準オブジェクトのデータを照会できます。

以下のコードは、[`crm_object`](/cms/reference/hubl/functions#crm-object) HubL関数を使用して、IDが`2444498793`の製品のデータを照会し、名前、説明、価格をレンダリングします。

```hubl theme={null}
{% set product = crm_object("product", 2444498793, "name,description,price") %}

<div>
  <p>
    <span>Name: </span>
    <span>{{ product.name }}</span>
  </p>
  <p>
    <span>Description: </span>
    <span>{{ product.description }}</span>
  </p>
  <p>
    <span>Price: </span>
    <span>{{ product.price }}</span>
  </p>
</div>
```

### カスタムオブジェクト

**Marketing Hub** Enterpriseアカウントをお持ちの場合は、アカウント内で作成されたカスタムオブジェクトのデータを照会できます。

以下のコードは、Propertyという名前のカスタムオブジェクトからデータを取得し、カスタムオブジェクトのプロパティーに格納されている値（場所、価格など）を返します。

以下の例では、[HubL関数](/cms/reference/hubl/functions#crm-objects)`crm_objects`を呼び出す際の最初の引数として、カスタムオブジェクトの完全修飾名を使用しています。

* 完全修飾名は、HubSpotアカウントID（プレフィックス：`p`）の後にアンダースコアとカスタムオブジェクトの名前（小文字、複数形）が続きます（例：`properties`）。
* オブジェクトの`fullyQualifiedName`を取得するには、[CRMオブジェクトスキーマAPI](https://developers.hubspot.com/docs)に`GET`リクエストを送信します。

```hubl theme={null}
{% set real_estate_listings = crm_objects("p2990812_properties", "", "listing_name,location, price, address, type") %}

{% for home in real_estate_listings.results %}
    {{ home.address}} <br>
	{{ home.price }} <br>
	<img
	alt="{{ home.name }}"
	src="{{ home.hero_image }}"
	style="outline: none; max-width: 100%;"
	width="260px"
	/>
	<br>
	<hr>
{% endfor %}
```

<Alert type="warning" titleText="注：">
  カスタムオブジェクトの名前にハイフンが含まれている場合（例：My-Custom-Object）、そのオブジェクトのプロパティーはプログラマブルEメールでレンダリング<u>できません</u>。ハイフンを省略してカスタムオブジェクトを[HubSpotアカウントで直接](https://knowledge.hubspot.com/ja/object-settings/create-custom-objects)作成し直すか、または[カスタムオブジェクトAPI](/api-reference/crm-custom-objects-v3/guide)を使用することができます。
</Alert>

返されるデータを受信者ごとに絞り込むには、受信者のコンタクトプロパティーで結果を絞り込むための`query`パラメーターを追加します。詳しくは[フィルターオプションの一覧](/api-reference/cms-hubdb-v3/guide#filter-returned-rows)をご確認ください。

```hubl theme={null}
{% set query = "price__lte="~contact.budget_max|int~"&price__gte="~contact.budget_min|int~"&city="~contact.city"&order=listing_name" %}
{% set real_estate_listings = crm_objects("p2990812_Property", query, "listing_name,location, price, address, type") %}
{% for home in real_estate_listings.results %}

  ...

{% endfor %}
```

### HubDB

**Marketing Hub** Enterpriseアカウントをお持ちの場合は、EメールでHubDBテーブルのデータを使用できます。

以下のコードでは、HubL関数[`hubdb_table_rows`](/cms/reference/hubl/functions#hubdb-table-rows)を使用してテーブルから全てのデータを取得します。これにより、Eメールに全ての不動産物件がリスト表示され、各物件の画像とともに詳細情報が出力されます。

```hubl theme={null}
{% set real_estate_listings = hubdb_table_rows(1234567) %}

{% for home in real_estate_listings%}
    {{ home.address}} <br>
	{{ home.price }} <br>
	<img
	alt="{{ home.name }}"
	src="{{ home.hero_image.url }}"
	style="outline: none; max-width: 100%;"
	width="260px"
	/>
	<br>
	<hr>
{% endfor %}
```

返されるデータを受信者ごとに絞り込むには、`query`パラメーターを追加します。このパラメーターで指定したコンタクトプロパティーを基準に、結果を絞り込むことができます。詳しくは[フィルターオプションの一覧](/api-reference/cms-hubdb-v3/guide#filter-returned-rows)をご確認ください。

```hubl theme={null}
{% set query = "price__lte="~contact.budget_max|int~"&price__gte="~contact.budget_min|int~"&persona="~contact.hs_persona.value~"&order=listing_name" %}

{% for home in real_estate_listings %}

	...

{% endfor %}
```

<Alert type="info">
  上記の例では、Budget max（予算上限）のコンタクトプロパティーを`contact.budget_max`で参照し、Persona（ペルソナ）を`contact.hs_persona.value`で参照しています。これは、Persona（ペルソナ）が[列挙型プロパティー](https://knowledge.hubspot.com/ja/properties/property-field-types-in-hubspot)であり、プロパティーの値を解析するには`.value`を追加する必要があるためです。一方、他のプロパティータイプには追加する必要はありません。
</Alert>

## 2. モジュールをEメールに追加する

公開された状態のモジュールを、ドラッグ＆ドロップEメールの本文に追加します。

* HubSpotアカウントで、［マーケティング］＞［Eメール］に移動します。
* 作成した**Eメール**を選択します。
* 左のサイドバーにある［コンテンツ］で、［その他］をクリックします。プログラマブルEメールのモジュールをEメールの本文にドラッグします。

![ドラッグ＆ドロップEメールエディター - その他のモジュール](https://www.hubspot.jp/hubfs/Knowledge_Base_2021/Developer/drag-and-drop-email-editor-more-modules.png)

特定のコンタクトプロパティーを基準にデータを絞り込むようにモジュールを設定した場合、Eメールのプレビューは空白になります。これは、Eメールツールが特定のコンタクトでEメールをプレビューするように設定されていないためです。

特定のコンタクトに対してEメールがどのように表示されるのかをプレビューで確認するには、次の手順に従います。

* 右上の［アクション］をクリックし、［プレビュー］を選択します。

![Eメール アクション メニュー0](https://www.hubspot.jp/hubfs/Knowledge_Base_2021/Developer/email-actions-menu0.png)

* 次の画面で、［特定のコンタクトとしてプレビュー］ドロップダウンメニューをクリックし、プレビュー対象の**コンタクト**を選択します。

![特定のコンタクトとしてEメールをプレビュー](https://www.hubspot.jp/hubfs/Knowledge_Base_2021/Developer/preview-email-as-specific-contact0.png)

これで、受信者のコンタクトプロパティーを基に、その受信者に関連するデータのみが表示されるようになります。

![Eメールプレビューのスクリーンショット](https://f.hubspotusercontent00.net/hubfs/53/preview%20window.png)

Eメールテンプレートまたはモジュールに、HubLで解決できないカスタムコードが含まれている場合、その場所にプレースホルダーモジュールが表示されます。

![プログラマブルEメールのプレースホルダーモジュール](https://www.hubspot.jp/hubfs/Knowledge_Base_2023_2024/placeholder-module-in-programmable-email.png)

<Alert type="warning">
  設定した基準を満たすHubDBの行やカスタムオブジェクトのレコードがない場合に備え、常にフォールバックデータが送信されるようにすることが重要です。そうでない場合、Eメールが空白のまま送信される恐れがあります。

  このベータ版を使用すると、既存のテンプレートで問題が発生する場合があります。Eメールを公開して送信する前に、全ての変更を十分に検証することが重要です。
</Alert>

## HubDBに関するその他のチュートリアル

* [HubDBを使って動的ページを作成する](https://developers.hubspot.com/docs)
* [複数のHubDBテーブルを結合する方法](https://developers.hubspot.com/docs)
* [HubDBを使用して動的なチーム メンバー ページを作成する方法](https://developers.hubspot.com/docs)
* [HubDBを使ってマルチレベルの動的ページを作成する方法](https://developers.hubspot.com/docs)

## HubSpotアカデミー

* [CMS HubでHubDBとカスタムオブジェクトを使用する](https://academy.hubspot.com/lessons/other_data_sources_hubdb_and_custom_objects)
