[英]Parsing eCommerse data to push into dataLayer for Google Tag Manager
Below is the eCommerse data pushed into the ether. 以下是推入以太网的eCommerse数据。
I want to extract specific bits of the data to push it to Google Tag Manager's (GTM) dataLayer array. 我想提取数据的特定位以将其推送到Google跟踪代码管理器(GTM)的dataLayer数组。 Anything hidden, I have no use for (eg Credit Card info and etc.). 任何隐藏的东西,我都没用(例如信用卡信息等)。 Please note that all of this code is readily available to the public and does not contain sensitive data. 请注意,所有这些代码都可以随时向公众开放,并且不包含敏感数据。
ATTEMPT A: ATTEMPT 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>
This above was my original attempt. 以上是我最初的尝试。 It pushes the set of pushes data (3 segments) as such (refer to image). 它推送推送数据集(3段)(参见图像)。
Google Tag Manager - Preview Mode - Data Layer Push Results (A) Google跟踪代码管理器 - 预览模式 - 数据层推送结果(A)
ATTEMPT B: ATTEMPT B:
I revised my snipper above from, 我从上面修改了我的剪刀,
dataLayer.push({_gaq});
to 至
var gaqTemp = [].concat.apply([], _gaq); //Merges Arrays. Found this on stackoverflow. dataLayer.push({'gaqBatch' : gaqTemp}); //Pushes Merged Array to dataLayer as 'gaqBatch'
This results in the following: Google Tag Manager - Preview Mode - Data Layer Push Results (B) 这导致以下结果: Google跟踪代码管理器 - 预览模式 - 数据层推送结果(B)
What I really want is this: 我真正想要的是这个:
{
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
]
}
If I can avoid pushing all the data from the eCommerce snippet into the GTM dataLayer, I'd prefer that. 如果我可以避免将电子商务代码段中的所有数据推送到GTM dataLayer,我宁愿这样做。 Ie store it temporarily in an array and create 5 objects: giftID, giftAmount, transID, giftType, giftTotal . 即将其临时存储在数组中并创建5个对象: giftID,giftAmount,transID,giftType,giftTotal 。
The purpose of these objects would be to use them as dataLayer variables in GTM to feed metrics in Google Analytics. 这些对象的目的是将它们用作GTM中的dataLayer变量,以便在Google Analytics中提供指标。
Thank you, 谢谢,
Sorry for the length, this is my first post and I didn't want to forget any details. 对不起,这是我的第一篇文章,我不想忘记任何细节。
Figured it out... 弄清楚了...
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});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.