Javascript GTM:为自定义HTML标记使用transactionProducts变量

Javascript GTM:为自定义HTML标记使用transactionProducts变量,javascript,e-commerce,google-tag-manager,Javascript,E Commerce,Google Tag Manager,我正在使用谷歌标签管理器(GTM)进行电子商务跟踪。车间系统向GTM发送以下信息: dataLayer=[{ “事件”:“交易”, “交易ID”:“100002486”, “交易日期”:“2015-09-03”, “交易总额”:295, “transactionShipping”:0, “交易税”:26.82, “transactionPaymentType”:“Rechnung”, “交易货币”:“欧元”, “transactionShippingMethod”:“tablerate”, “

我正在使用谷歌标签管理器(GTM)进行电子商务跟踪。车间系统向GTM发送以下信息:

dataLayer=[{
“事件”:“交易”,
“交易ID”:“100002486”,
“交易日期”:“2015-09-03”,
“交易总额”:295,
“transactionShipping”:0,
“交易税”:26.82,
“transactionPaymentType”:“Rechnung”,
“交易货币”:“欧元”,
“transactionShippingMethod”:“tablerate”,
“交易产品”:[
{
“名称”:“Handelsvertretergesetz”,
“sku”:“9783700760344”,
“类别”:“Buch”,
“价格”:113.64,
“数量”:1
},
{
“名称”:“Steuerrecht”,
“sku”:“9783700759294”,
“类别”:“Kodex”,
“价格”:77.27,
“数量”:2
}
]
我想我看到了问题(或者至少有一个问题)。在您的ScarabQueue中,“items”应该是一个包含两个产品数据数组的对象。但是,您正在推送一个对象(并且这个对象包含产品数据数组)。我在正确表达这一点上有点困难,因此我包含了一个屏幕截图,我的意思是:

在左侧,您可以看到正确的(手动)分配,在右侧,您可以看到来自示例数据层的推送。左侧项是一个包含2个项(包含产品数据的数组)的对象。右侧的“项”仅包含一个嵌套有产品数据的元素(transactionProducts对象)

您可以尝试将{{transactionProducts}}变量重命名为“items”,并按下按钮:

items = {{transactionProducts}};
ScarabQueue.push(['purchase', {
    orderId: '{{transactionId}}',
    items
}]);
没有保证,但我认为这应该是可行的,或者至少它会产生与“手动”数据分配类似的结构:


嗨,艾克,谢谢你的回复。“transactionProducts”已经是GTM变量了。对不起,我想我没有仔细阅读-我通常不会做愚蠢的评论:-(问题有点不清楚。你能澄清一下“获取{{transactionProducts}}”是什么意思吗变量转换为自定义HTML标记?也许我理解得太字面了,但只要在需要的地方使用“{transactionProducts}}”,您的“ScarabQueue”就行了“对象以某种方式与GTM数据层交互以推送ecomm数据??如果没有,那么可能就是缺少这些数据的原因。嗨,nyuen,谢谢你的回复。我希望我能澄清一点:在电子商务确认页面上,已经有一个标准数据层将所有电子商务信息推送到GTM,包括变量{{transactionId}}和{{transactionProducts}}。我已经在谷歌分析中使用了这些,它工作得非常好。挑战是实现另一个电子商务跟踪标签(ScarabQueue)通过使用已经可用的GTM变量。由于没有类似于Google Analytics的标记模板,我必须使用自定义HTML标记。嗨,艾克,谢谢你的建议!我尝试了一下,但现在GTM的JavaScript编译器出现以下错误:“此语言功能仅在es6模式下受支持:扩展对象文本。使用--language_in=ECMASCRIPT6或ECMASCRIPT6_STRICT启用es6功能。”这很奇怪-这是简单的变量赋值。我在第一行后忘了一个分号,您修复了吗(我在我的示例中修复了)?否则这可能会导致GTM失效。