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

# CSVを使用したダイナミックコンテンツ

> OneSignalでCSVアップロードとLiquid構文を使用して、プッシュ、メール、SMSメッセージを大規模にパーソナライズします。

OneSignalは、大規模に[メッセージコンテンツをパーソナライズする](./message-personalization)ためのいくつかの方法を提供します。このガイドは、プッシュ、メール、SMSのためにOneSignalダッシュボードにあるCSVアップロード機能を備えたダイナミックコンテンツの使用に焦点を当てています。

**主な利点：**

* **CSVを使用して大規模にパーソナライズ** – 1つのメッセージ、すべての人にカスタムエクスペリエンス
* **多言語サポート** – ユーザーごとに自動的に言語を切り替え
* **ダイナミックパーソナライゼーション** – コンテンツはユーザープロパティ（言語、地域、キャンペーンID）に適応
* **チームコラボレーション** – 非技術ユーザーがCSVファイルでコンテンツを編集
* **HTML インジェクション（メール）** – CSVセルにHTMLマークアップを含めて、リッチなメールコンテンツを動的に構築
* **クロスチャネル互換性** – チャネル全体でCSVロジックを再利用

**一般的なユースケース：**

* 多言語オンボーディングまたはマーケティング
* 地域固有のプロモーション
* 場所ごとのイベント発表
* キャンペーンベースのパーソナライゼーション

***

## CSVを使用したダイナミックコンテンツのセットアップ手順

**クイックリファレンス：**

1. コンテンツのバリエーションを含むCSVファイルを作成します。
2. Liquid構文の`dynamic_content`プロパティを使用してCSVデータをメッセージにマッピングします。
3. OneSignalダッシュボードから新しいメッセージまたは[テンプレート](./templates)を作成します。
4. **Dynamic Content**または**Personalization**ボタンを選択します。
5. CSVファイルをアップロードしてメッセージを送信します。

### CSV要件と設定

* **ファイルサイズ：** 200 KB未満
* **列ヘッダー：**
  * タグキーの最初の列ヘッダーを予約するか、セクションを参照するために空白のままにします
  * 英数字と下線のみ
  * スペースの代わりに下線（`_`）を使用します
* **エンコーディング：** UTF-8

空白のCSVから始めるか、提供されたテンプレートを使用します。テンプレートは、メッセージおよびテンプレートエディターで**Dynamic Content**または**Personalization**ボタンを選択すると提供されます。

<Frame caption="メッセージエディターにあるDynamic Contentボタン。">
  <img src="https://mintcdn.com/onesignal/jBdBk5XvQR5eKOks/images/docs/772f91e24ebca83a05d4e96819a41ec58d5ca0acd3a715e971c4a43ba7654494-Screenshot_2025-02-10_at_5.23.32_PM.png?fit=max&auto=format&n=jBdBk5XvQR5eKOks&q=85&s=c51a6fcb07f7aab797cbfe74423530cb" alt="OneSignalメッセージエディターのDynamic Contentボタン" width="1960" height="380" data-path="images/docs/772f91e24ebca83a05d4e96819a41ec58d5ca0acd3a715e971c4a43ba7654494-Screenshot_2025-02-10_at_5.23.32_PM.png" />
</Frame>

利用可能なテンプレート：

* **多言語** – 言語ごとにコンテンツをローカライズ
* **コンテンツパーソナライゼーション** – データタグごとにコンテンツをカスタマイズ

<Frame caption="OneSignalダッシュボードのCSVテンプレートオプション。">
  <img src="https://mintcdn.com/onesignal/YOTSrtBSoqdrJ37A/images/docs/47f48b79aa100bd5d2c59a418216bafba75daaa92d0bf939dcd3ccceca39cd7c-Screenshot_2025-02-10_at_5.26.15_PM.png?fit=max&auto=format&n=YOTSrtBSoqdrJ37A&q=85&s=87947eb40093580c8589cf7eb4183564" alt="多言語とコンテンツパーソナライゼーションテンプレートを示すCSVテンプレートオプション" width="1986" height="870" data-path="images/docs/47f48b79aa100bd5d2c59a418216bafba75daaa92d0bf939dcd3ccceca39cd7c-Screenshot_2025-02-10_at_5.26.15_PM.png" />
</Frame>

#### CSVの例

このガイドでは、以下のCSVデータの例を使用します。

<Tabs>
  <Tab title="多言語テンプレートの例">
    * 列ヘッダーを[サポートされている言語コード](./multi-language-messaging#supported-languages)にマッピングします。
    * 各言語コードの各行に翻訳を追加します。
    * 複数のセクション（メールなど）がある場合は、最初の列をセクション名として指定します。

    この例には以下が含まれます：

    * 3つの言語：英語、スペイン語、フランス語。
    * 2つのセクション：「section\_1」と「section\_2」。

    <Frame caption="ユーザーの言語属性をコンテンツに一致させる多言語CSV（VLOOKUPに類似）。">
      <img src="https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/8716e43deead16759c2500d85900d2d1be8b6a9c51e0477160569b05534a58fb-Screenshot_2025-02-10_at_8.37.25_PM.png?fit=max&auto=format&n=0qspEXXeJ8zJbkJ-&q=85&s=4a20651cf2949bad117b8a9fda432536" alt="言語コードを列ヘッダーとし、翻訳コンテンツを行に持つ多言語CSV" width="1438" height="220" data-path="images/docs/8716e43deead16759c2500d85900d2d1be8b6a9c51e0477160569b05534a58fb-Screenshot_2025-02-10_at_8.37.25_PM.png" />
    </Frame>
  </Tab>

  <Tab title="コンテンツパーソナライゼーションテンプレートの例">
    * 最初の列ヘッダーをタグキーにマッピングし、基礎となる行を参照する値にマッピングします。ユーザーにタグを追加する方法の詳細については、[タグ](./add-user-data-tags)を参照してください。
    * 残りの列ヘッダーをパーソナライズするセクションまたはコンポーネントにマッピングします。

    この例では：

    * タグキーは`campaign_id`で、可能な値は`A`と`B`です。
    * 3つのコンポーネントがあります：「title」、「message」、「url」。

    <Frame caption="campaign_idデータタグを使用したパーソナライゼーションCSV。">
      <img src="https://mintcdn.com/onesignal/3zq1PvSaqvUE2bIx/images/docs/2d49628c7c891801e50b7f397442f5887e7b776897d24788be16887ed191f631-Screenshot_2025-04-10_at_9.47.35_AM.png?fit=max&auto=format&n=3zq1PvSaqvUE2bIx&q=85&s=23ec0fe2224cc3103e7a7c62168dd050" alt="campaign_idタグとtitle、message、url列を使用したコンテンツパーソナライゼーションCSV" width="1406" height="160" data-path="images/docs/2d49628c7c891801e50b7f397442f5887e7b776897d24788be16887ed191f631-Screenshot_2025-04-10_at_9.47.35_AM.png" />
    </Frame>

    <Warning>
      **重要：** CSVヘッダーからスペースと非英数字文字を削除するか、
      Liquidでハッシュ表記を使用してください。
    </Warning>

    <Frame caption="Liquid構文を使用してタグを参照する詳細なCSVの例。">
      <img src="https://mintcdn.com/onesignal/tc0EvmtSSX56SX0c/images/docs/9352ff1-event_translation.csv.png?fit=max&auto=format&n=tc0EvmtSSX56SX0c&q=85&s=e71b92286f500fc201b95bafa2b38a85" alt="タグベースのパーソナライゼーションのLiquid構文参照を示す詳細なCSVの例" width="3189" height="2646" data-path="images/docs/9352ff1-event_translation.csv.png" />
    </Frame>
  </Tab>
</Tabs>

### CSVデータをメッセージコンテンツにマッピングする

[Liquid構文](./using-liquid-syntax)を使用して、`dynamic_content`プロパティを使用してメッセージ内のCSVデータを参照します：

```liquid theme={null}
<!-- オプション1：コンポーネントから先にアクセス -->
{{dynamic_content.file_name.message_component[user_property]}}

<!-- オプション2：ユーザープロパティから先にアクセス -->
{{dynamic_content.file_name[user_property].message_component}}
```

**パラメータ：**

* `dynamic_content` – CSVデータを参照するために使用されるプロパティ名
* `file_name` – CSVファイル名（`.csv`拡張子なし）
* `message_component` – パーソナライズする特定のメッセージコンポーネント。これは、CSV列ヘッダーまたは最初の行の静的テキストです。
* `user_property` – 参照する[ユーザープロパティ](./message-personalization#properties)。

**フォールバックコンテンツ：**

CSVルックアップまたはダイナミックコンテンツが失敗した場合にメッセージがレンダリングされることを保証するために、常にハードコードされた文字列`default`フォールバックを使用してください。

```liquid フォールバックのためのLiquid構文 theme={null}
{{ dynamic_content.my_template.header[user.language] | default: "最新の更新へようこそ" }}
```

これは、CSVルックアップまたはダイナミックコンテンツが失敗した場合、メッセージがフォールバックテキスト`"最新の更新へようこそ"`をレンダリングすることを意味します。

これにより以下が保証されます：

* 利用可能な場合はダイナミックコンテンツが使用されます
* ダイナミックコンテンツが失敗した場合はハードコードされたメッセージが表示されます
* ユーザーが空白のコンテンツを受け取ることはありません

<Tabs>
  <Tab title="多言語メッセージの例">
    ```csv translations.csv theme={null}
    ,en,es,fr
    section_1,Hello,Hola,Bonjour
    section_2,Thanks for shopping with us...,Gracias por comprar con nosotros...,Merci pour votre achat avec nous...
    ```

    * `file_name`は`translations.csv`です。
    * `message_component`は最初の列の行`section_1`と`section_2`にあります。
    * `user_property`は言語コードに一致する列ヘッダーです。`user.language`[プロパティ](./message-personalization#properties)を使用してユーザー上でこれを参照できます。

    ```liquid 多言語メッセージの基本的なLiquid構文 theme={null}
    {{dynamic_content.translations.section_1[user.language]}}
    {{dynamic_content.translations.section_2[user.language]}}
    ```

    ```liquid （推奨）デフォルトフォールバック付き多言語メッセージのLiquid構文 theme={null}
    {% assign supported_langs = "en,es,fr,de" | split: "," %}
    {% assign lang = user.language | default: "en" %}

    {% unless supported_langs contains lang %}
      {% assign lang = "en" %}
    {% endunless %}

    {{ dynamic_content.translations.section_1[lang] | default: "Hello" }}
    {{ dynamic_content.translations.section_2[lang] | default: "Thanks for shopping with us..." }}
    ```

    <Frame caption="多言語メールコンテンツのためのLiquid構文の追加。">
      <img src="https://mintcdn.com/onesignal/4HyuQPBpu-4xjmQC/images/docs/d0df135475c202308b5b5e40f3893f1beff6d7d387a99e9264c5c5936283d699-Screenshot_2025-02-10_at_10.08.20_PM.png?fit=max&auto=format&n=4HyuQPBpu-4xjmQC&q=85&s=bb3aaec56a1bcca6e1400b096a5550b7" alt="多言語ダイナミックコンテンツのLiquid構文を含むOneSignalメールエディター" width="1062" height="446" data-path="images/docs/d0df135475c202308b5b5e40f3893f1beff6d7d387a99e9264c5c5936283d699-Screenshot_2025-02-10_at_10.08.20_PM.png" />
    </Frame>
  </Tab>

  <Tab title="コンテンツパーソナライゼーションメッセージの例">
    ```csv content_personalization_template.csv theme={null}
    campaign_id,title,message,url
    campaign_123,Flash deal for you,Tap to claim,https://example.com/flash
    campaign_456,Weekend picks are here,See what's trending,https://example.com/weekend
    default,Our latest offers,See what's new,https://example.com
    ```

    * `file_name`は`content_personalization_template.csv`です。
    * `user_property`はタグキー：`campaign_id`にマッピングされます。
    * `message_component`は、パーソナライズするメッセージのセクションにマッピングされた列ヘッダーです（title、message、またはurl）。

    ```liquid コンテンツパーソナライゼーションメッセージのLiquid構文 theme={null}
    {{ dynamic_content.content_personalization_template[campaign_id].title }}
    {{ dynamic_content.content_personalization_template[campaign_id].message }}
    {{ dynamic_content.content_personalization_template[campaign_id].url }}
    ```

    ```liquid （推奨）デフォルトフォールバック付きコンテンツパーソナライゼーションメッセージのLiquid構文 theme={null}
    {% assign cid = campaign_id | default: "default" %}

    {% unless dynamic_content.content_personalization_template[cid] %}
      {% assign cid = "default" %}
    {% endunless %}

    {{ dynamic_content.content_personalization_template[cid].title | default: "最新のオファー" }}
    {{ dynamic_content.content_personalization_template[cid].message | default: "新着を見る" }}
    {{ dynamic_content.content_personalization_template[cid].url | default: "https://example.com" }}
    ```

    <Frame caption="キャンペーンベースのプッシュパーソナライゼーションのためのLiquid構文の追加。">
      <img src="https://mintcdn.com/onesignal/tNi1OgLc_p9hiq7_/images/docs/1c80cff787617df73a16bd4858446a07db6af84f4d79404c4a2ad34e3e509876-Screenshot_2025-02-10_at_9.53.13_PM.png?fit=max&auto=format&n=tNi1OgLc_p9hiq7_&q=85&s=37a96d318756adc6b0f2a35aecc20c92" alt="ダイナミックコンテンツパーソナライゼーションLiquidの例" width="1774" height="1018" data-path="images/docs/1c80cff787617df73a16bd4858446a07db6af84f4d79404c4a2ad34e3e509876-Screenshot_2025-02-10_at_9.53.13_PM.png" />
    </Frame>
  </Tab>
</Tabs>

<Check>
  `default`フォールバック付きのLiquidを使用して、件名、プリヘッダー、ボタン
  ラベル、およびURLを更新します。
</Check>

### CSVセルでのHTMLの使用（メールのみ）

CSVセルにHTMLマークアップを直接含めて、リッチコンテンツをメールに注入することができます。これは、ユーザープロパティに基づいてメールのセクション全体（バナー、CTAなど）を入れ替えるのに便利です。

```csv promo_banners.csv theme={null}
campaign_id,banner_html
spring_sale,<div style="background:#4CAF50;padding:16px;text-align:center;"><a href="https://example.com/spring" style="color:#fff;font-size:18px;">Shop the Spring Sale</a></div>
default,<div style="background:#333;padding:16px;text-align:center;"><a href="https://example.com" style="color:#fff;font-size:18px;">See What's New</a></div>
```

メールテンプレートでHTMLセルを参照します：

```liquid theme={null}
{{ dynamic_content.promo_banners[campaign_id].banner_html | default: "<p>Check out our latest offers</p>" }}
```

HTMLはメール本文に直接レンダリングされるため、メールクライアントがサポートするインラインスタイルとマークアップを使用できます。

<Warning>
  CSVセルのHTMLはメールでのみサポートされています。プッシュとSMSチャネルはコンテンツをプレーンテキストとしてレンダリングし、HTMLマークアップを解釈しません。
</Warning>

***

## 参考

### テンプレートの更新

ダッシュボード経由でCSVを再アップロードするか、[テンプレート更新API](/reference/update-template)の`dynamic_content`プロパティを使用します。

### キーの特殊文字

**ハッシュ表記**（非英数字キーの場合）：

```liquid theme={null}
{{ dynamic_content.file_name["!the_row!"]["&the_column&"] }}
```

**ドット表記**（標準キーの場合）：

```liquid theme={null}
{{ dynamic_content.file_name.the_row.the_column }}
```

***

## よくある質問

### CSVを使用したダイナミックコンテンツをテストするにはどうすればよいですか？

メールを使用してメッセージの複数のバリエーションをテストします。

* メールで`+`アドレッシングを使用して複数のバリエーションをテストします：`username+test@example.com`。
* 上記の多言語およびコンテンツパーソナライゼーションの例に従ってタグを設定します。
* 複数のユーザーとデータタグのアップロードについての詳細は、[インポート](./import)を参照してください。

### CSVを使用したダイナミックコンテンツと他のパーソナライゼーションオプションをどちらを使用するか

ダッシュボードからメッセージを送信し、CSVファイルでユーザーデータにアクセスできる場合は、**CSVを使用したダイナミックコンテンツ**を使用してください。メッセージにダイナミックコンテンツを追加する他の方法については、[メッセージパーソナライゼーション](./message-personalization)または[多言語メッセージング](./multi-language-messaging)を参照してください。

***

## 関連ページ

<Columns cols={2}>
  <Card title="メッセージパーソナライゼーション" icon="wand-magic-sparkles" href="./message-personalization">
    OneSignalで利用可能なすべてのパーソナライゼーションオプションの概要。
  </Card>

  <Card title="Liquid構文の使用" icon="code" href="./using-liquid-syntax">
    OneSignalメッセージの完全なLiquid構文リファレンス。
  </Card>

  <Card title="インポート" icon="file-import" href="./import">
    ユーザーデータとセグメントをOneSignalにアップロードします。
  </Card>

  <Card title="テンプレート" icon="clone" href="./templates">
    再利用可能なメッセージテンプレートを作成します。
  </Card>
</Columns>
