---
title: "エクスポート時のJavaScript"
slug: "javascript-in-the-export"
abstract: "JavaScriptを使ったカスタムデータを計算し、それをSitecore CDPのオーディエンスエクスポートに含めることです。"
---
# エクスポート時のJavaScript

オーディエンスエクスポートを作成する際は、[ゲストプロファイルにあるデータ](https://doc.sitecore.com/cdp/ja/users/sitecore-cdp/data-availability-in-sitecore-cdp/available-data-types/guest-data.html "Guest data")に加えてJavaScriptを使ってデータを計算できます。これにより、Sitecore CDPからエクスポートしたデータをさらに充実させることができます。

例えば、ゲストの生年月日がゲストプロフィールに記載されている場合、追加のコーディングなしで[${guest.dateOfBirth}として出力に含](https://doc.sitecore.com/cdp/ja/users/sitecore-cdp/audience-export/data-in-the-export.html#UUID-b89e130c-ae01-8831-e80d-ef1c1ff4a1c8_section-idm4545492155870433871423726306 "Including data in the output")めることができます。しかし、ゲストの年齢がゲストプロフィールにない場合は、JavaScriptで計算し、出力に含めることができます。

JavaScriptをオーディエンスエクスポートで使用するには、以下が可能です:

-   **JavaScript**コードエディタに関数を入力します。コードを手動で書くことも、自然言語を使って[Code Assistant](https://doc.sitecore.com/cdp/ja/users/sitecore-cdp/ai-in-cdp/code-assistant.html "Code Assistant")で生成することも可能です。関数の例として[コードスニペット](https://doc.sitecore.com/cdp/ja/users/sitecore-cdp/audience-export/code-snippets.html "Code snippets")をご覧ください。
-   **出力構造**タブのフィールドにある[ユーティリティ関数を呼び出します](https://doc.sitecore.com/cdp/ja/users/sitecore-cdp/audience-export/javascript-in-the-export.html#UUID-e0fcc0c5-b3e4-cbab-1a1c-81f5c3fee3e4_section-idm4642469535550433964492091815 "Calling utility functions")。

こちらは、オーディエンスエクスポートでJavaScriptを使う方法を紹介するビデオです:

:::youtube{id="I0EaySNO4os"}

## 関数を用いたデータの計算

オーディエンスエクスポートで、JavaScript関数は「 **出力フォーマット** 」>コードエディタで **「出力>定義** 」 **JavaScript**使えます。すべての関数を1つの関数にまとめ、1つのオブジェクトを返すことを確認してください。

(function () {
 /\* first function \*/
 /\* second function \*/
 /\* third function \*/
 return {} // return a single object
})()

JavaScriptでは、ゲストプロファイルのデータを使うことができます。コードエディタで *「guest* 」と入力し始めると、ゲストデータモデルの参照の自動補完リストが表示されます。

![Writing JavaScript and referencing data from the guest data model.](https://doc.sitecore.com/api/markdown-image/cdp/ja/users/sitecore-cdp/images/cdp-audience-export-js-1.jpg)

> !注エラーを防ぐために、console.log()を使ってテストログにメッセージをログすることをお勧めします。ログは手動で追加するか、[コードアシスタント](https://doc.sitecore.com/cdp/ja/users/sitecore-cdp/audience-export/code-assistant.html#UUID-4761b59d-a6fb-217e-76e6-25c914dee8ca_section-idm23495970622833 "Understand and refactor code") に作成を促すことができます。 [エクスポートのテスト](https://doc.sitecore.com/cdp/ja/users/sitecore-cdp/audience-export/testing-the-export.html "Testing the export")時にはテストログを使用します。

### ベーシックモードとアドバンストモード

JavaScriptは基本モードまたは上級モードで書くことができます。モードを選択するには、**出力を定義**画面の上部で**「基本**」または「**上級**」をクリックしてください。

以下はベーシックモードとアドバンストモードの違いの概要です:

-   Basicモードでは、JavaScriptが返すオブジェクトはフラットで、入れ子は許されません。オブジェクトキーは文字列、数値、またはブール値でいられます。関数を書いた後、出力**構造タブの**[出力](https://doc.sitecore.com/cdp/ja/users/sitecore-cdp/audience-export/javascript-in-the-export.html#UUID-e0fcc0c5-b3e4-cbab-1a1c-81f5c3fee3e4_section-idm4603441978648033871245048397 "Including the computed data in the output")にオブジェクトキー名を入力します。出力はJSONまたはCSVでできます。
-   上級モードでは、JavaScriptが返すオブジェクトには文字列、数値、ブール値、その他のオブジェクトが含まれます。つまり、オブジェクトは入れ子にでき、 guest.sessionsなどのより複雑なデータを出力に含めることができます。上級モードでは、計算されたデータを出力に手動で含める必要はありません。代わりに、JSON出力はJavaScriptが返す完全なオブジェクトの構造と一致します。CSVはサポートされていません。

#### 例

::::タブ::タブ{title="basic-mode"}

##### 基本モード

例1。ゲストの年齢を計算します

こちらはベーシックモードのJavaScript関数の例です。ゲストプロフィールの生年月日を参照して、ゲストのおおよその年齢を計算します:

(function () {
 // Calculate age based on a date
 function getAge(date) {
 var today = new Date();
 var birthDate = new Date(date);
 var age = today.getFullYear() - birthDate.getFullYear();
 var m = today.getMonth() - birthDate.getMonth();
 if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
 age--;
 }
 return age;
 }

 // Calculate the guest's age based on their date of birth
 var guestAge = "";
 if (guest.dateOfBirth) {
 guestAge = getAge(guest.dateOfBirth);
 }

 // Return the guest's age in the "age" variable. Then, reference "age" as ${jsResult.age} on the Output structure tab.
 return { age: guestAge }
})()

関数を書いた後は、変更内容を **保存** してください。

返されたオブジェクトのキー名はageです。[ゲストの年齢を出力に含める](https://doc.sitecore.com/cdp/ja/users/sitecore-cdp/audience-export/javascript-in-the-export.html#UUID-e0fcc0c5-b3e4-cbab-1a1c-81f5c3fee3e4_section-idm4603441978648033871245048397 "Including the computed data in the output")には、**出力**構造タブの列に${jsResult.age}と書きます。

::::::tab{title="advanced-mode"}

##### 上級モード

例2。ネストされたセッションデータを返す

詳細モードのJavaScript関数の例を紹介します。過去30日間のゲストのセッションデータを返します。このデータを含むオーディエンスエクスポートは、非アクティブなゲストを見つけて再エンゲージメントするのに役立ちます:

(function() {
 load("classpath:moment.js");

 const sessionDataArray = ;
 const tenDaysAgo = moment.utc().subtract(30, "days").format("YYYY-MM-DD");

 if (guest.sessions && guest.sessions.length > 0) {
 for (let index in guest.sessions) {
 const session = guest.sessionsindex;
 const sessionDate = moment(session.startedAt).format("YYYY-MM-DD");

 if (sessionDate >= tenDaysAgo) {
 console.log(\`Processing session dated: ${sessionDate}\`);
 sessionDataArray.push({
 "browserRef": session.browserRef || "",
 "cartType": session.cartType || "",
 "channel": session.channel || "",
 "pointOfSale": session.pointOfSale || "",
 "duration": session.duration || 0,
 "value": session.value || 0,
 "events": session.events || 
 });
 console.log("Session data added");
 }
 }
 }
 console.log("All session data processed.");
 return {
 "sessions": sessionDataArray
 };
})()

関数を書いた後は、変更を **保存** してください。その後、JavaScriptの計算が成功しているかを確認する [ために、オーディエンスエクスポートをテスト](https://doc.sitecore.com/cdp/ja/users/sitecore-cdp/audience-export/testing-the-export.html "Testing the export") します。

:::::::

#### 計算データを出力に含める

JavaScriptをBasicモードで書く場合、計算されたデータを**Output**構造タブの**Attribute value**欄の文字列や数値フィールドに含める必要があります。

JavaScriptが返すオブジェクトのキーを参照する際は、${jsResult.objectKeyName} 表記法を用いてください。例えば、JavaScriptに返されたオブジェクトのage属性が含まれている場合、**Attribute value**フィールドにそれを ${jsResult.age}として含めます。

![Including the computed data from the JavaScript in the output structure.](https://doc.sitecore.com/api/markdown-image/cdp/ja/users/sitecore-cdp/images/cdp-audience-export-js-2.jpg)

フィールドを更新した後は、変更を **保存** してください。その後、JavaScriptの計算が成功しているか [を確認するためにオーディエンスエクスポートをテスト](https://doc.sitecore.com/cdp/ja/users/sitecore-cdp/audience-export/testing-the-export.html "Testing the export") します。

## ユーティリティ関数の呼び出し

[ユーティリティ関数は](https://doc.sitecore.com/cdp/ja/users/sitecore-cdp/audience-export/utility-functions.html "Utility functions") ゲストプロファイルのデータにアクセスし、データの変換を行うのに役立ちます。例えば、文字列の結合、日付変換、ハッシュ化して機密データの安全なエクスポートが可能です。

Basicモードで**Defiming**出力画面で**Output** Exportをクリック> **Output Addition**をクリックし、文字列や数値フィールドの**Attribute value**欄にユーティリティ関数を入力して、オーディエンスエクスポートでこれらの関数を呼び出せます。関数パラメータは必ずお好みの値に置き換えてください。

以下は [${sha256()}](https://doc.sitecore.com/cdp/ja/users/sitecore-cdp/audience-export/utility-functions.html#UUID-125e8b91-06d5-eba1-d97f-4b74c4c00236_section-idm23441412101394 "${sha256(value)}") ユーティリティ関数を呼び出してゲストのメールアドレスを安全にエクスポートする例です:

![cdp-audience-export-js-5.jpg](https://doc.sitecore.com/api/markdown-image/cdp/ja/users/sitecore-cdp/images/cdp-audience-export-js-5.jpg)

または、以下のデータ拡張オブジェクトを持つゲストプロファイルを考えてみてください:

{
 "dataExtensions": 
 {
 "name": "ext1",
 "values": {
 "MemberCardCategoryRenewalDate": "18/05/2026",
 "MemberCardBalance": 22000,
 "MemberCardType": "shop&miles",
 "MemberCardCategory": "premium",
 "MilesRequiredForMemberCardCategory": 3000
 }
 }
 
}

**Attribute value**欄で*${getDataExtension(guest.dataExtensions, "ext1", "MemberCardCategory", "not-available")}*を呼び出して、MemberCardCategoryの値にアクセスして出力に含めることができます。

フィールドを更新した後は、変更を **保存** してください。その後、JavaScriptの計算が成功しているか [を確認するためにオーディエンスエクスポートをテスト](https://doc.sitecore.com/cdp/ja/users/sitecore-cdp/audience-export/testing-the-export.html "Testing the export") します。