使用自定义javascript宏以GTM数据层格式格式化电子商务交易数据

使用自定义javascript宏以GTM数据层格式格式化电子商务交易数据,javascript,google-tag-manager,google-datalayer,Javascript,Google Tag Manager,Google Datalayer,我正在为一个电子商务网站的谷歌标签管理器实施工作 不幸的是,我们不能硬编码数据层。因此,我正在寻找解决办法。我想我可以使用google标记管理器和自定义javascript宏自己实现数据层。 我现在正在处理购买事件。 我成功地抓取了购买确认页面,得到了三个变量:productName、productId和productPrice。这就是我目前所需要的。当在同一事务中购买多个产品时,这三个变量作为数组出现。所以这些变量看起来像下面所示的 现在我的目标是将这些数据格式化为数据层格式,以便在GTM和G

我正在为一个电子商务网站的谷歌标签管理器实施工作

不幸的是,我们不能硬编码数据层。因此,我正在寻找解决办法。我想我可以使用google标记管理器和自定义javascript宏自己实现数据层。 我现在正在处理购买事件。 我成功地抓取了购买确认页面,得到了三个变量:productName、productId和productPrice。这就是我目前所需要的。当在同一事务中购买多个产品时,这三个变量作为数组出现。所以这些变量看起来像下面所示的

现在我的目标是将这些数据格式化为数据层格式,以便在GTM和GA中使用

请参阅下面的代码

谢谢你的帮助

杰克


这将起作用,但我不确定是否在所有浏览器上都支持

var列=['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(函数(行){
返回行.reduce(函数(结果、字段、索引){
结果[列[索引]]=字段;
返回结果;
}, {});
});
var产品=arr.REDUCT(功能(acc、cur、i){
acc[i]=cur;
返回acc;
}, {});
console.log(产品)
//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'
       }]