我正在为电子商务网站实施Google跟踪代码管理器。
不幸的是,我们无法对DataLayers进行硬编码。因此,我正在寻找解决方法。我以为可以自己使用Google标记管理器和自定义javascript宏来实现数据层。
我正在从事购买活动。
我成功地刮取了购买确认页面,并且得到了三个变量productName,productId和productPrice。目前我只需要这些。在同一笔交易中购买多个产品的情况下,这三个变量作为数组出现。因此,变量看起来如下所示。
现在,我的目标是将数据格式化为数据层格式,以便可以在GTM和GA中使用。
请参阅下面的代码
谢谢你的帮助!
插口
//this is what I currently have
var productName = [ 'Product A', 'Product B', 'Product C']
var productId = ['1111', '2222', '3333']
var productPrice = [2.99, 4.95, 6.95]
//this is the format I want to achieve
var products = [{
'name': 'Product A',
'id': '1111',
'price': '2.99'
},
{
'name': 'Product B',
'id': '2222',
'price': '4.95'
},
{
'name': 'Product C',
'id': '3333',
'price': '6.95'
}]
最佳答案
这可以工作,但是我不确定所有浏览器都支持
var column = ['name', 'id', 'price']
var productName = ['Product A', 'Product B', 'Product C']
var productId = ['1111', '2222', '3333']
var productPrice = [2.99, 4.95, 6.95]
var agg = [productName, productId, productPrice];
var row = Object.keys(agg[0])
.map(colNumber => agg.map(rowNumber => rowNumber[colNumber]))
var arr = row.map(function(row) {
return row.reduce(function(result, field, index) {
result[column[index]] = field;
return result;
}, {});
});
var products = arr.reduce(function(acc, cur, i) {
acc[i] = cur;
return acc;
}, {});
console.log(products)