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

# Kameleoon.API.Data

> カスタムデータを設定し、Kameleoon LocalStorage のデータを読み書きする Kameleoon.API.Data メソッドのリファレンスです。

このモジュールは、顧客や訪問の特性を追跡するための**カスタムデータ**を設定するメソッドを提供します。また、Kameleoon の統合 LocalStorage 内のデータの取得および書き込みを行うデータ管理メソッドも含まれています。

## readLocalData

`readLocalData()` メソッドは、以前に `writeLocalData()` を介して保存したローカルデータを読み取ります。エンジンは、標準的なストレージ制限を回避する統合 Local Storage からこのデータを取得します。

```javascript theme={null}
var userId = Kameleoon.API.Data.readLocalData("myUserId");

if (userId) {
  Kameleoon.API.Data.retrieveDataFromRemoteSource(userId, function (data) {
    console.log(data.returningVisitor);
  });
}
```

**引数**

| 名前 | 型 | 説明 |
| - | - | - |
| key | String | 取得するデータのキー。このフィールドは必須です。 |

**戻り値**

| 名前 | 型 | 説明 |
| - | - | - |
| value | String | データの値。 |

## performRemoteSynchronization

`performRemoteSynchronization()` メソッドは、Data API に対してサーバー同期呼び出し(SSC)を実行します。この呼び出しでは、現在のビジターについて Kameleoon のバックエンドサーバーに保存されているビジット履歴を取得し、LocalStorage に書き込みます。これにより、Activation API を通じてデータにアクセスでき、ターゲティングに利用できるようになります。このメソッドは通常、クロスデバイスの照合や Safari ITP のために自動的に実行されるため、手動で呼び出す必要はありません。

```javascript theme={null}
Kameleoon.API.Data.performRemoteSynchronization("customDataName", "customDataValue", false);
```

**引数**

| 名前 | 型 | 説明 |
| - | - | - |
| key | String | マッピング識別子として機能するカスタムデータのキー (例: アカウント ID やメール)。省略された場合、このメソッドは Kameleoon App でクロスデバイスリコンシリエーション用に構成されたデフォルトの識別子を使用します。 |
| value | String | Data API 呼び出しに使用される現在の訪問者識別子の値。省略された場合、このメソッドは最初の引数で指定されたカスタムデータの現在の値を使用します。 |
| currentVisitOnly | Boolean | 有効な場合、SSC は現在の訪問のみのデータをリクエストします。Data API またはサーバー間統合経由で取得したカスタムデータ値を更新するためにこの最適化を使用してください。省略された場合、このメソッドはデフォルトで **false** になります。 |

## resetCustomData

`resetCustomData()` メソッドはカスタムデータの値をリセットします。

```javascript theme={null}
Kameleoon.API.Data.resetCustomData("MyCustomDataName");
```

**引数**

| 名前 | 型 | 説明 |
| - | - | - |
| name | String | Kameleoon App で定義されたカスタムデータの名前。このフィールドは必須です。 |

## retrieveDataFromRemoteSource

`retrieveDataFromRemoteSource()` メソッドは、指定された **key** でリモート Kameleoon サーバーに保存されたデータを取得します。このメソッドは、Data API 経由で以前に保存されたデータの取得をサポートしています。訪問者に対して大量のデータを迅速に保存および取得する場合に使用します。

この非同期メカニズムでは、サーバー呼び出しが完了したときに **callback** 関数が必要です。

```javascript theme={null}
if (location.href.indexOf("loginPage") != -1) {
  Kameleoon.API.Core.runWhenConditionTrue(function () {
    return typeof dataLayer != null;
  }, function () {
    dataLayer.forEach(function (map) {
      if (map.userId) {
        Kameleoon.API.Data.retrieveDataFromRemoteSource(userId, function (data) {
          Kameleoon.API.Data.setCustomData("known_user", data.knownUser);
        });
      }
    });
  }, 200);
}
```

**引数**

| 名前 | 型 | 説明 |
| - | - | - |
| key | String | ルックアップキー。このフィールドは必須です。 |
| callback | Function | メソッドがデータを取得した後に実行される関数です。JS オブジェクトである **data** 引数を受け取ります。このフィールドは必須です。 |

## setCustomData

`setCustomData()` メソッドはカスタムデータの値を設定します。

```javascript theme={null}

// Single Type Custom Data
Kameleoon.API.Data.setCustomData("mySingleCustomDataName", "myNewValue"); // --> "myNewValue"

// List Type Custom Data
Kameleoon.API.Data.setCustomData("myListCustomDataName", "myFirstValue"); // --> ["myFirstValue"]
Kameleoon.API.Data.setCustomData("myListCustomDataName", "mySecondValue"); // --> ["myFirstValue", "mySecondValue"]
Kameleoon.API.Data.setCustomData("myListCustomDataName", ["myThirdValue", "myFourthValue"]); // --> ["myFirstValue", "mySecondValue", "myThirdValue", "myFourthValue"]
Kameleoon.API.Data.setCustomData("myListCustomDataName", ["myThirdValue", "myFourthValue"], true); // --> ["myThirdValue", "myFourthValue"]

// Count List Type Custom Data
Kameleoon.API.Data.setCustomData("myCountListCustomDataName", "myFirstValue"); // --> {value: 'myFirstValue', count: 1}
Kameleoon.API.Data.setCustomData("myCountListCustomDataName", "myFirstValue"); // --> {value: 'myFirstValue', count: 2}
Kameleoon.API.Data.setCustomData("myCountListCustomDataName", "mySecondValue"); // --> {value: 'myFirstValue', count: 2}, {value: 'mySecondValue', count: 1}
```

**引数**

| 名前 | 型 | 説明 |
| - | - | - |
| CustomDataNameOrIndex | String または Number | Kameleoon App で定義されたカスタムデータの名前またはインデックス (インデックスはカスタムデータダッシュボードの 'INDEX' 列に表示されます)。このフィールドは必須です。 |
| value | String, Number, Boolean, Array | カスタムデータの値です。指定する値は、Kameleoon アプリでこのカスタムデータに対して宣言された型と一致する必要があります。このフィールドは必須です。**`Type` を `Single` に設定した場合、`setCustomData()` は String、Number、Boolean を受け付けます。`Type` を `List` または `Count List` に設定した場合は、String または Number の配列を受け付けます。** |
| overwrite | Boolean | **省略可能なブール値**。`true` の場合、新しい値が既存のカスタムデータを上書きします。`false` または省略の場合: **List/Count List** は値を追加します (すべての値がレポートに表示されます)。**Single 型**は上書きします (最新の値のみがレポートに表示されます)。**Page スコープのカスタムデータ** (すべての型) は値を追加します。 |

## writeLocalData

`writeLocalData()` メソッドは、後で `readLocalData()` を介して取得するために、訪問者のブラウザにローカルデータを記録します。エンジンは、標準的なストレージ制限を回避する統合セッションデータとして Local Storage にこれを保存します。データは RAM キャッシングを介して同じタブ内ですぐに取得可能になり、物理的な書き込みは非同期で行われます。

```javascript theme={null}
Kameleoon.API.Data.writeLocalData("myData", "myDataValue", true);
```

**引数**

| 名前 | 型 | 説明 |
| - | - | - |
| key | String | 書き込むデータのキー (名前)。このフィールドは必須です。 |
| value | String | 書き込むデータの値。このフィールドは必須です。 |
| persistent | Boolean | データの永続性の切り替え。非永続データは 1 時間後に期限切れになり、永続データは 30 日間保持されます。省略された場合、このメソッドはデフォルトで **false** になります。 |
