【问题标题】:How to remove decimal from purchase revenue value using Google Tag Manager如何使用 Google 跟踪代码管理器从购买收入值中删除小数点
【发布时间】:2019-09-04 10:11:45
【问题描述】:

我正在尝试跟踪购买的价值。然而,在谷歌分析中,总收入的值应该是 1.321,49,但被测量为 1,32。

我已经尝试使用以下自定义 JS 删除“,”,但没有成功。在尝试时,我想知道我应该如何返回这个新值来衡量它?也许它不可能作为我在标签中设置为值的 DLV - ecommerce.purchase.actionField.revenue 变量返回???如果你能给我一个不成熟的指导就好了,我对 JS 和 GTM 还不是很熟悉;)

函数(){ var ecommerce_purchase_revenue = {{DLV - ecommerce.purchase.actionField.revenue}}; var ecommerce_purchase_revenue = ecommerce_purchase_revenue.replace(",", ""); 返回 {{DLV - ecommerce.purchase.actionField.revenue}}; }

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

Datalayer

Javascript in GTM

Google Analytics Values

GTM variables

Updated GTM Tag

【问题讨论】:

    标签: javascript google-tag-manager google-datalayer


    【解决方案1】:

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

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

    在英国和美国,我们会写出价值一千三十二 [英镑|美元],四十九 [cents|pence],如下所示:-

    1,032.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:-

    您可以将货币代码设置为标签中的字段。

    在 GTM 中导航到“要设置的字段”(在“更多设置”下拉菜单下),然后添加一个新字段:

    字段名称:currencyCode 价值:欧元

    如果您的网站提供了使用多种货币支付的功能,您还可以编写一些逻辑来从数据层、浏览器 cookie 或其他变量中检测用户的货币以动态设置货币。

    Google's Developer reference 中有很多有用的示例,它们应该有助于进一步了解正在发生的事情。

    另一个原因可能在于您的转换功能。

    我发现您的转换不会影响原始字符串,而是返回未转换的原始值 (return {{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();
    }
    

    重要的是我们使用正则表达式在函数中进行替换,以允许包含多个逗号分隔的情况。 (例如 1,234,234.12)。

    祝你好运解决问题!

    【讨论】:

    • 感谢您的快速响应。我已经尝试了这些选项。可悲的是,数据仍然没有以正确的方式填写。这可能需要一些时间来“重置”吗?
    • 听起来您的视图设置也可能使用不同的货币。要对此进行调整,请导航至您的分析控制台>>管理员(cog,左下角)>>查看设置(最右侧)在此屏幕上,有一个选项可以设置“货币显示为”一旦您更新此内容,您应该会看到正确的值格式。我已更新我的答案以包含此设置的屏幕截图。
    • 感谢您与我一起思考。货币已在视图设置中设置为欧元。我今天再次测试了它,但仍然遇到同样的问题。好像还是有什么不对劲。我在原始帖子中添加了“更新的 GTM - 标签”的新屏幕截图。你可以来看看吗?也许我仍然忽略了一些东西。
    • 感谢您的更新,请在我的回答中找到更新。
    • 你的转换需要的函数是:-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(); }
    猜你喜欢
    • 2019-08-19
    • 2022-07-01
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-20
    • 2022-11-09
    • 1970-01-01
    相关资源
    最近更新 更多