解析电子商务数据以推送到 Google 标签管理器的数据层
Parsing eCommerse data to push into dataLayer for Google Tag Manager
下面是推送到ether的电商数据。
我想提取数据的特定位以将其推送到 Google 跟踪代码管理器 (GTM) 的数据层数组。任何隐藏的东西,我都没有用(例如信用卡信息等)。请注意,所有这些代码都可供 public 使用,并且不包含敏感数据。
尝试 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 Whosebug.
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' : , //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' : //from gaqBatch array index 15
]
}
如果我可以避免将电子商务代码段中的所有数据推送到 GTM dataLayer,我更愿意这样做。 IE。将其临时存储在数组中并创建 5 个对象:giftID、giftAmount、transID、giftType、giftTotal.
这些对象的目的是将它们用作 GTM 中的数据层变量,以在 Google Analytics 中提供指标。
谢谢,
抱歉,篇幅较长,这是我的第一个 post,我不想忘记任何细节。
想通了...
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});
下面是推送到ether的电商数据。
我想提取数据的特定位以将其推送到 Google 跟踪代码管理器 (GTM) 的数据层数组。任何隐藏的东西,我都没有用(例如信用卡信息等)。请注意,所有这些代码都可供 public 使用,并且不包含敏感数据。
尝试 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 Whosebug.
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' : , //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' : //from gaqBatch array index 15
]
}
如果我可以避免将电子商务代码段中的所有数据推送到 GTM dataLayer,我更愿意这样做。 IE。将其临时存储在数组中并创建 5 个对象:giftID、giftAmount、transID、giftType、giftTotal.
这些对象的目的是将它们用作 GTM 中的数据层变量,以在 Google Analytics 中提供指标。
谢谢,
抱歉,篇幅较长,这是我的第一个 post,我不想忘记任何细节。
想通了...
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});