状況
一部の Web サイトでは、拡張 e コマース トラッキングが完全に実装されています。これは組み込み機能の拡張 e コマースによって行われます - dataLayer を使用します。
例:
var ecommercObject = {
'ecommerce': {
'purchase': {
'actionField': {
'id': 'T12345', // Transaction ID. Required for purchases and refunds.
'affiliation': 'Online Store',
'revenue': '35.43', // Total transaction value (incl. tax and shipping)
'tax':'4.90',
'shipping': '5.99',
'coupon': 'SUMMER_SALE'
},
'products': [{ // List of productFieldObjects.
'name': 'Triblend Android T-Shirt', // Name or ID is required.
'id': '12345',
'price': '15.25',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Gray',
'quantity': 1,
'coupon': '' // Optional fields may be omitted or set to empty string.
},
{
'name': 'Donut Friday Scented T-Shirt',
'id': '67890',
'price': '33.75',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Black',
'quantity': 1
}]
}
}
}
望ましい動作
拡張 e コマースの実装を別の分析システムに再利用したいと考えています。
だから私は GTM のマクロ/変数が必要です。これは強化された e コマース JavaScritp オブジェクトを返します。
現在の試み
カスタム JS: E コマース オブジェクト
コンソールでこのマクロを試してみましたが、GTM では機能しませんでした。
(function(){
myStringArray = window.dataLayer;
var arrayLength = myStringArray.length;
for (var i = 0; i < arrayLength; i++) {
if(myStringArray[i].ecommerce){
return myStringArray[i];
}
}
return false;
})()
DataLayer 変数: ECOMMERCE OBJECT
マクロ型 DataLayer を dataLayer 変数名「ecommerce」で試してみました。無効。
問題
カスタムタグでこのコードを使用すると:
var eecom = {{ECOMMERCE OBJECT}}
console.dir(eecom);
空文字列を返します。
質問
拡張 e コマース オブジェクトが dataLayer に表示されたときにそれを取得する一般的な解決策はありますか?