Treasure DataのProfiles APIをGoogle DFP(DoubleClick for Publishers)と統合できます。この統合により、広告主はTreasure Dataで定義したセグメントに広告を配信できます。
- 前提条件
- TD Profiles APIとGoogle DFPの統合
- TD Profile APIで使用するためのGoogle DFPの設定
- JavaScript DFPタグとTreasure Dataタグの作成
JavaScriptとHTMLの基本知識
Treasure Dataの基本知識
Treasure Data JavaScript SDKの基本知識
Treasure Data Profiles APIの基本知識
Google DFP(DoubleClick for Publishers)の基本知識
Treasure Data JavaScript SDKの使用には、Treasure Dataのサポートまたはサービスチームの指導が必要な場合があります。
TD Profiles APIをGoogle DFPと統合するには、以下のセクションの手順を完了してください。
- WebブラウザでGoogle DFPに移動します。
- Inventory > Key-valuesに移動します。

- 新しいキーを選択します。
- 名前と表示名フィールドに入力します。

- 値の追加を選択します。
- Treasure Dataで作成したすべてのセグメントIDを1行ずつリストします。例:257、258、259。

- 適用を選択します。
- オプションで、特定のセグメントIDに表示名を追加します。

- Inventory > Ad unitsを選択します。
- コードと名前フィールドに入力します。

- 保存を選択します。
- 保存を選択します。
- Delivery > Ordersを選択します。
- 新しい注文を選択して新しい注文を作成します。

- フィールドを編集します。例:名前、広告主、名前、開始時刻、終了時刻、数量、レート。

- 下にスクロールしてKey-valuesセクションを見つけます。
- 作成したキー値を指定します。例:td_kv_wp。

- 作成したセグメントIDのリストを選択します。例:

- Inventoryを選択します。
- 作成した広告ユニットを選択します。例:td-dfp-test-ad。注文オブジェクトが作成されます。例:

- Delivery > Line Itemsに移動して、クリエイティブを登録します。
- クリエイティブの追加を選択します。

- 作成するクリエイティブタイプを選択します。例:画像クリエイティブ。

- 名前と宛先を指定します。
- クリエイティブの画像ファイルをアップロードします。
- 宛先を指定します。例:https://www.treasuredata.com/。

Google DFPのJavaScriptタグを生成するには:
- WebブラウザでGoogle DFPに移動します。
- Inventory > Ad unitsに移動します。
- タグの生成を選択します。
- 作成した広告ユニットを選択します。例:td-dfp-test-ad。

- タグタイプとしてGoogle Publisher Tagを選択します。

- 続行を選択します。HTMLヘッダーとボディ用のJavaScriptタグが生成されます。

- 作業を保存します。
DFPタグとTreasure Data JavaScriptタグを組み合わせるには:
- Treasure Data JavaScriptタグとDFPタグを組み合わせるファイルを開きます。
- googletag.pubads().setTargeting()関数を呼び出して、Treasure DataのセグメントIDをGoogle DFPに渡します。
例えば、以下のHTMLには、DFP JavaScriptタグとTD JavaScriptタグの統合コードが含まれています。
<!DOCTYPE html><html>
<head>
<!-- Load DFP Tag -->
<script async='async' src='https://www.googletagservices.com/tag/js/gpt.js'></script>
<!-- Load Treasure Data Tag -->
<script type="text/javascript">
!function(t,e){if(void 0===e[t]){e[t]=function(){e[t].clients.push(this),this._init=[Array.prototype.slice.call(arguments)]},e[t].clients=[];for(var r=function(t){return function(){return this["_"+t]=this["_"+t]||[],this["_"+t].push(Array.prototype.slice.call(arguments)),this}},s=["addRecord","set","trackEvent","trackPageview","trackClicks","ready","fetchGlobalID","fetchUserSegments"],a=0;a<s.length;a++){var c=s[a];e[t].prototype[c]=r(c)}var n=document.createElement("script");n.type="text/javascript",n.async=!0,n.src=("https:"===document.location.protocol?"https:":"http:")+"//cdn.treasuredata.com/sdk/2.1/td.min.js";var i=document.getElementsByTagName("script")[0];i.parentNode.insertBefore(n,i)}}("Treasure",this);
</script>
<!-- Header Script Tag: Start-->
<script>
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
var td = new Treasure({...})
var successCallback = function (values) { var segIdAll = []; for (var i = 0; i < values.length; i++) { segIdAll = segIdAll.concat(values[i].values); }; var segId = segIdAll.filter(function (x,i,self) {return self.indexOf(x) === i;}); console.log(JSON.stringify(segId)); googletag.cmd.push(function() { googletag.defineSlot('/YOUR_NUMBER_/td-dfp-test-ad', [200, 200], 'div-gpt-ad-YOUR-XYZ-0').addService(googletag.pubads()); googletag.pubads().enableSingleRequest(); googletag.pubads().setTargeting('td_kv_wp',segId); googletag.enableServices(); googletag.cmd.push(function() { googletag.display('div-gpt-ad-XYZ-0')}); }); };
var errorCallback = function (error) { console.log(err); };
td.fetchUserSegments({
audienceToken: ['YOUR_PROFILES_API_TOKEN_1', 'YOUR_PROFILES_API_TOKEN_2'],
keys: {
key_column_1: 'someValue',
key_column_2: 'someOtherValue',
}
}, successCallback, errorCallback)
</script>
<!-- Header Script Tag: End -->
</head>
<title>Web Profiles API</title>
<body>
<b>Hello Treasure Data!</b>
<!-- DFP Body Tag: Start -->
<div id='div-gpt-ad-YOUR-XYZ-0' style='height:200px; width:200px;'></div>
<!-- DFP Body Tag: End -->
</body>
</html>テストするには、上記のHTMLにアクセスして結果を確認します。
