GA无法从打字稿

时间:2018-08-06 10:51:36

标签: typescript google-analytics enhanced-ecommerce

因此,我遇到了一个问题,即生产环境中的Google Analytics(分析)没有收到Google增强型电子商务数据。

少数情况:

  • GA是通过Google跟踪代码管理器加载的
  • 许多其他将数据推送到GA的跟踪器都是通过Google跟踪代码管理器加载的,从而导致创建了许多“跟踪器”
  • documentation
  • 前端是用带有角度框架的打字稿编写的。

问题已解决

1我遇到一个常见的问题,其中window.ga在打字稿中给出了常见的“未定义”问题。像这样解决ga问题:(<any>window).ga

2因为我不是用代码自己创建Google Analytics(分析),所以无法定义自己的跟踪器(我认为)。而且加载GA还要花费几秒钟的时间(因为代码管理器会异步加载脚本)。要获取众多跟踪器之一,我使用以下代码(在服务内)将数据发送到Google Analytics(分析)。

sendGa(name : string, data: any) {
    (<any>window).ga(() => {
        var trackers = (<any>window).ga.getAll();
        var firstTracker = trackers[0];
        var trackerName = firstTracker.a.data.values[":name"];
        (<any>window).ga(trackerName + '.' + name, data);
    });
}

来源跟踪器:https://developers.google.com/analytics/devguides/collection/analyticsjs/accessing-trackers

我还有更多的功能可以使用更多的参数,这些参数只是以逗号分隔。

诊断

因此,使用上述2个修复程序,我可以验证使用GA调试扩展程序将数据正确发送到了Google Analytics(分析)。

GA

在出现此错误之前:“命令已忽略,目标未知:未定义” 与此人的报告相同:Command ignored. Unknown target: undefined when setting Custom Dimension in Google Analytics tracking code

因此,当我在Google Analytics(分析)中进行检查时,我确实看到该交易正在并在正确的时间(几乎实时)上显示。

ga2 转化=>电子商务=>销售业绩

问题

所以我想,让我们部署并让数据流..不幸的是,没有。最近几天没有来自付费交易的数据。

因此,当我在生产环境中运行GA调试工具并复制已付款的发票结果链接时,我可以在Google Analytics(分析)中看到该笔交易。

ga3

同样,此交易确实正确显示在Google Analytics(分析)中。

下面是我的代码,scriptService具有上述功能:

        //sent data to analytics
        this.apiInvoice.getSome("/byinvoicereference/" + this.merchantReference).subscribe(data => {
            if (data && data.length > 0) {
                var invoice = data[0];
                if (this.shoppingCart && this.shoppingCart.products) {
                    for (var i = 0; i < this.shoppingCart.products.length; i++) {
                        var product = this.shoppingCart.products[i];
                        this.scriptService.sendGa("ec:addProduct", { // List of productFieldObjects.
                            'name': product.productName, // Name or ID is required.
                            'id': product.productId,
                            'price': product.price,
                            'category': product.productType.toString(),
                            'variant': product.rentDays,
                            'quantity': 1,
                        });
                    }
                }
                //now set actual values
                this.scriptService.sendGa2("ec:setAction",
                    'purchase',
                    {
                        'id': invoice.invoiceNumber,
                        'revenue': invoice.totalExclPrice,
                        "tax": invoice.totalTaxPrice,
                    });
                //sent event and page view a long with data
                this.scriptService.sendGa3("send", "event", "Order", "Completed");
                this.scriptService.sendGa('send', "pageview");
            }

        });

因此,某些东西是从会话存储中提取的(例如产品),而某些东西是在检索了很长的发票参考代码后发送的。

我做错了什么?

0 个答案:

没有答案