Google analytics 如何在页面加载时将多个事件推送到google analytics?

Google analytics 如何在页面加载时将多个事件推送到google analytics?,google-analytics,google-datalayer,Google Analytics,Google Datalayer,当我的电子商务收据页面加载时,我尝试两次推送到分析数据层 我的问题是,我只能选择这两个事件中的一个 我在收据页面上输出: <script> function trackEcommerce() { dataLayer.push({ 'event': 'checkout', 'ecommerce': { 'checkout': { 'action

当我的电子商务收据页面加载时,我尝试两次推送到分析数据层

我的问题是,我只能选择这两个事件中的一个

我在收据页面上输出:

<script>
    function trackEcommerce() {
        dataLayer.push({
            'event': 'checkout',
            'ecommerce': {
                'checkout': {
                    'actionField': { 'step': 2 }
                }
            }
        });
    }
    dataLayer.push({
        'event' : 'purchaseEvent',
        'ecommerce': {
            'purchase': {
                'actionField': {
                    'id': '@orderId',                         
                    'affiliation': 'Eldorado',
                    'revenue': '@OrderTotal.ToString("F", System.Globalization.CultureInfo.GetCultureInfo("en-GB"))',                     
                    'tax':'@VatTotal.ToString("F", System.Globalization.CultureInfo.GetCultureInfo("en-GB"))',
                    'shipping': '@ShippingFee.ToString("F", System.Globalization.CultureInfo.GetCultureInfo("en-GB"))'
                    },
                'products': [
                    @foreach (var item in GetLoop("OrderLines"))
                    {
                        string productName = item.GetString("Ecom:Product.Name").Replace("\"", "").Trim();
                        string productNumber = item.GetString("Ecom:Product.Number");
                        double orderLineUnitPrice = item.GetDouble("Ecom:Order:OrderLine.UnitPrice.PriceWithoutVAT.Value");
                        int orderLineQuantity = item.GetInteger("Ecom:Order:OrderLine.Quantity");
                        string brand = item.GetString("Ecom:Product:Field.Brands.Value");
                        var DwProduct = ProductService.GetProductById(item.GetString("Ecom:Order:OrderLine.ProductID"), item.GetString("Ecom:Order:OrderLine.ProductVariantID"), item.GetString("Ecom:Product.LanguageID"));
                        string category = DwProduct.DefaultGroup == null ? "" : DwProduct.DefaultGroup.Name;                        
                        <text>{
                            'name': '@productName',
                            'id': '@productNumber',
                            'price': '@orderLineUnitPrice.ToString("F", System.Globalization.CultureInfo.GetCultureInfo("en-GB"))',
                            'brand': '@brand',
                            'category': '@category',
                            'quantity': @orderLineQuantity
                        },</text>
                    }
                ]
            }
        },
        'eventCallback': trackEcommerce()
    });
</script>

我还尝试了连续输出两个数据层推送,但两个推送之间没有eventCallback或其他关系。

最明显的是,您使用的是函数调用
trackEcommerce()
,而不是引用类似
'eventCallback':trackEcommerce的函数

然而,仅仅使用两个简单的后续推送应该可以很好地工作,并且更容易调试

dataLayer.push({ 'event': 'checkout', ... });
// ... 
dataLayer.push({ 'event': 'purchaseEvent', ... })


最明显的是,您使用的是函数调用
trackEcommerce()
,而不是引用像
'eventCallback':trackEcommerce

然而,仅仅使用两个简单的后续推送应该可以很好地工作,并且更容易调试

dataLayer.push({ 'event': 'checkout', ... });
// ... 
dataLayer.push({ 'event': 'purchaseEvent', ... })