Javascript 如何使用Google Tag Manager从购买收入值中删除小数

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

我正在努力跟踪购买的价值。然而,在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};}

以下是一些包含更多信息的图像:


发生这种情况的原因有很多

这种情况可能发生的一个原因是由于购买时没有将货币推入数据层

在英国和美国,我们将价值写为壹仟叁佰贰[英镑|美元],四十九[美分|便士],如下所示:

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()}