因此,我遇到了一个问题,即生产环境中的Google Analytics(分析)没有收到Google增强型电子商务数据。
少数情况:
问题已解决
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(分析)。
在出现此错误之前:“命令已忽略,目标未知:未定义” 与此人的报告相同:Command ignored. Unknown target: undefined when setting Custom Dimension in Google Analytics tracking code
因此,当我在Google Analytics(分析)中进行检查时,我确实看到该交易正在并在正确的时间(几乎实时)上显示。
问题
所以我想,让我们部署并让数据流..不幸的是,没有。最近几天没有来自付费交易的数据。
因此,当我在生产环境中运行GA调试工具并复制已付款的发票结果链接时,我可以在Google Analytics(分析)中看到该笔交易。
同样,此交易确实正确显示在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");
}
});
因此,某些东西是从会话存储中提取的(例如产品),而某些东西是在检索了很长的发票参考代码后发送的。
我做错了什么?