Javascript 如何使用Google Tag Manager从购买收入值中删除小数
我正在努力跟踪购买的价值。然而,在Google Analytics中,总收入的价值(例如1.321,49)被测量为1,32 我已经尝试使用以下自定义JS删除“,”,但没有成功。在尝试时,我想知道如何返回这个新值来测量它?可能无法作为DLV-ecommerce.purchase.actionField.revenue变量返回,该变量是我在标记中设置的值???如果你能给我一个深入的指导就好了,我对JS和GTM还不太熟悉;) 函数(){ var电子商务采购收入={{DLV-ecommerce.purchase.actionField.revenue}; var电子商务采购收入=电子商务采购收入。替换(“,”,”); 返回{{DLV-ecommerce.purchase.actionField.revenue};} 以下是一些包含更多信息的图像:Javascript 如何使用Google Tag Manager从购买收入值中删除小数,javascript,google-tag-manager,google-datalayer,Javascript,Google Tag Manager,Google Datalayer,我正在努力跟踪购买的价值。然而,在Google Analytics中,总收入的价值(例如1.321,49)被测量为1,32 我已经尝试使用以下自定义JS删除“,”,但没有成功。在尝试时,我想知道如何返回这个新值来测量它?可能无法作为DLV-ecommerce.purchase.actionField.revenue变量返回,该变量是我在标记中设置的值???如果你能给我一个深入的指导就好了,我对JS和GTM还不太熟悉;) 函数(){ var电子商务采购收入={{DLV-ecommerce.purc
发生这种情况的原因有很多 这种情况可能发生的一个原因是由于购买时没有将货币推入数据层 在英国和美国,我们将价值写为壹仟叁佰贰[英镑|美元],四十九[美分|便士],如下所示: 1032.49 但是,在欧洲,您可以使用以下格式编写相同的值:- 1.032,49 要解决此问题,只需在dataLayer对象中指定货币代码,或者将其设置为将增强的电子商务数据发送到Google Analytics的标记中的字段 Google Analytics将自动获取此信息,并正确格式化Analytics中显示的值 一旦您推送正确的货币值;您可能还需要调整Google Analytics中显示为设置的货币 可通过导航到以下位置找到此设置:
Google Analytics console >>
Admin (cog, bottom left) >>
View Settings (far right) >>
"Currency Display As"
选项1:-
window.dataLayer.push({
event: 'gtm.dom',
ecommerce: {
currencyCode: 'EUR', // NOTE: We have now told google to use EUR formatting
purchase: {
actionField: {
id: '5000000038',
affiliation: 'redacted',
order_id: '5000000038',
subtotal: '1,321.49',
shipping: '0.00',
tax: '277.51',
total: '1,599.00',
revenue: '1,321.49',
discount: '0.00',
coupon:''
},
products: [{}] // ...
选项2:-
window.dataLayer.push({
event: 'gtm.dom',
ecommerce: {
currencyCode: 'EUR', // NOTE: We have now told google to use EUR formatting
purchase: {
actionField: {
id: '5000000038',
affiliation: 'redacted',
order_id: '5000000038',
subtotal: '1,321.49',
shipping: '0.00',
tax: '277.51',
total: '1,599.00',
revenue: '1,321.49',
discount: '0.00',
coupon:''
},
products: [{}] // ...
您可以将货币代码设置为标记中的字段
在GTM中导航到“要设置的字段”(在“更多设置”下拉列表下),并添加一个新字段:
字段名称:currencyCode
价值:欧元
如果您的站点提供了使用多种货币支付的工具,您还可以编写一些逻辑,从数据层、浏览器cookies或其他变量检测用户的货币,以动态设置货币
有很多有用的例子,可以帮助我们进一步了解正在发生的事情
另一个原因可能在于转换函数
我发现您的转换不会影响原始字符串,而是返回原始的未转换值(返回{{{DLV-ecommerce.purchase.actionField.revenue};
)
要解决该特定问题,请按如下方式调整该功能:
function () {
var eRev = {{ecommerce.purchase.actionField.revenue}};
var dRev = {{DLV}};
eRev = Number(eRev.replace(/,/g,''));
ecommerce_purchase_revenue = dRev - eRev;
return ecommerce_purchase_revenue;
// You might need to convert it back to a string
// if this is the case, use the following return instead:
// return ecommerce_purchase_revenue.toString();
}
在函数中使用regex进行替换非常重要,以允许包含多个逗号分隔的情况。(例如1234234.12)
祝你好运解决这个问题 感谢您的快速回复。我已经试过了。遗憾的是,数据仍然没有以正确的方式填充。这可能需要一些时间来“重置”吗?听起来您的视图设置可能使用不同的货币。要调整此设置,请导航到您的分析控制台>>管理(cog,左下)>>查看设置(最右侧)。在该屏幕上,有一个选项可设置“货币显示为”,更新此设置后,您应该会看到正确的值格式。我已经更新了我的答案,包括这个设置的截图。谢谢你和我一起思考。该货币已在视图设置中设置为欧元。我今天再次测试了它,但仍然有相同的问题。看来还是出了点问题。我在我原来的帖子中添加了一个新的“更新的GTM标签”截图。你能看一下吗?也许我还是忽略了什么。感谢更新,请在我的答案中找到更新。转换所需的函数是:-
function(){var eRev={{{ecommerce.purchase.actionField.revenue}};var dRev={{{DLV};eRev=Number(eRev.replace(/,/g'));ecommerce\u purchase\u revenue=dRev-errev;return ecommerce\u purchase\u revenue;//您可能需要将其转换回字符串//如果是这种情况,请使用以下返回值://return ecommerce\u purchase\u revenue.toString()}