解析eCommerse数据以推送到Google Tag Manager的dataLayer

时间:2015-12-03 21:59:24

标签: javascript dom google-analytics google-tag-manager google-datalayer

以下是推送到以太网的eCommerse数据。

我想提取数据的特定位以将其推送到Google跟踪代码管理器(GTM)的dataLayer数组。任何隐藏的东西,我都没用(例如信用卡信息等)。请注意,所有这些代码都是公开的,不包含敏感数据。

尝试A:

<script type="text/javascript">//anything below I'm not going to mess with

var _gaq = _gaq || [];

BLACKBAUD.netcommunity.api.DonationConfirmation.add(function(data){

if(data.TransTotal){

_gaq.push(['_addTrans', data.TransID, '',data.TransTotal, '', '', '', '', '']);

for(var i=0;i<data.Items.length;i++){

_gaq.push(['_addItem', data.Items[i].ID, data.Items[i].SKU, data.Items[i].Name, '', data.Items[i].Price, data.Items[i].Quantity]);

};

_gaq.push(['_trackTrans']);
dataLayer.push({gaqBatch_gaq}); //Except for here. I have added this line.
};

});
</script> 

以上是我最初的尝试。它推动推送数据集(3段)(参见图像)。

Google Tag Manager - Preview Mode - Data Layer Push Results (A)

尝试B:

我在上面修改了我的剪辑,

dataLayer.push({_gaq});

var gaqTemp = [].concat.apply([], _gaq); //Merges Arrays. Found this on stackoverflow. dataLayer.push({'gaqBatch' : gaqTemp}); //Pushes Merged Array to dataLayer as 'gaqBatch'

这导致以下结果: Google Tag Manager - Preview Mode - Data Layer Push Results (B)

我真正想要的是:

    {
gtm: {
...
},
...
gaqBatch: [
'giftID' : 6024, //from gaqBatch array index 1
'giftAmount' : $25, //from gaqBatch array index 3
'transID' : aaaa-bbbb-cccc-dddd-eeee-ffff, //from gaqBatch array index 11
'giftType' : Donation, //from gaqBatch array index 12
'giftTotal' : $25 //from gaqBatch array index 15
]
}

如果我可以避免将电子商务代码段中的所有数据推送到GTM数据层,我更喜欢这样。即将其临时存储在一个数组中并创建5个对象: giftID,giftAmount,transID,giftType,giftTotal

这些对象的目的是将它们用作GTM中的dataLayer变量,以便在Google Analytics中提供指标。

谢谢,

对不起,这是我的第一篇文章,我不想忘记任何细节。

1 个答案:

答案 0 :(得分:1)

想出来......

var _gaq = _gaq || [];
var dataLayer = dataLayer || [];

_gaq.push('_addTrans', '9874', '', '115', '', '', '', '', '','_addItem', '5949', '10000-100000-10000-10000-10000000', 'Donation', '', '115', '1','_trackTrans');

var tmpGiftAmount = _gaq[3];
var tmpGiftID = _gaq[1];
var tmpTransID = _gaq[11];

dataLayer.push({'giftAmount' : tmpGiftAmount, 'giftID' : tmpGiftID, 'transID' : tmpTransID});