我正在使用我的自定义网络抓取工具执行审核,并且正在尝试获取Google Analytics遗留实施的accountID,但我似乎无法获得_gaq中的任何JavaScript函数来返回正在使用的accountId。有人知道怎么做这个吗?我读过的所有文档实际上只提到了如何设置变量,而不是为了审计实现而设置变量的方法。
提前致谢
更新
谢谢大家!我希望我能把你的所有回复都作为好的答案。
经过一些测试后,我提出了以下几乎处理每个用例的函数。
function getAccount() {
try {
if (_gaq) {
for (i = 0; i < _gaq.length; i++) {
if (_gaq[i][0] == "_setAccount") {
return _gaq[i][1]
}
}
}
if (_gat) {
if (_gat.fb) {
return _gat.fb
}
}
if (ga) {
return ga.getAll()[0].a.data.values[':trackingId']
}
} catch (e) { }
return ""
}
答案 0 :(得分:2)
Joshua,这不是一个可用的标准功能/获取功能。
但您可以手动访问跟踪库创建的 ga 对象。
例如,如果您打开此网页的控制台并输入:
ga.getAll()[0].a.data.values[':trackingId']
您将收到 UA-5620270-1 ,它可能是Stack Overflow的主要Google Analytics帐户。类似的方法也适用于您的情况 - 以及任何其他可访问的属性:
答案 1 :(得分:1)
如果您准备接受不太优雅的解决方案,可以使用
function getAccount(_gaq) {
for (i = 0; i < _gaq.length; i++) {
if (_gaq[i][0] == "_setAccount") {
return _gaq[i][1];
}
}
}
_gaq
是一个数组数组,该函数只是循环遍历,直到找到第一个元素为_setAccount
的子数组,并返回第二个元素,即帐号({{1} })。
在谈论遗留实现时,甚至还有旧版本的代码,因此您可能需要更多检查。我在活动页面上找到的最旧版本是:
_gaq.push(['_setAccount', 'UA-XXXXX-X']);
从那里获取帐户ID非常容易。还有同步版本的代码(抱歉,目前无法找到示例)。
对于当前版本,请看Petrs回答。
答案 2 :(得分:1)
首先根据documentation,在页面上设置所有跟踪器
// returns an array with all the trackers
const trackers = ga.getAll();
然后,对于每个跟踪器,对于获取属性的每个跟踪器,您都可以获得tracking id
// returns the 'trackingId' propperty
const trackingId = tracker.get('trackingId'));
如果您想缩短它,可以这样做
const trackingIds = ga.getAll().map(tracker => tracker.get('trackingId'));
警告:
请记住始终after the ga ready运行此程序。
不要-在readyCallback之外使用ga对象方法作为方法 可能尚不可用。
var trackers = ga.getAll();
执行-在a内使用ga对象方法 readyCallback,因为它们肯定可用。
ga(function() { var trackers = ga.getAll(); });
答案 3 :(得分:0)
我刚刚使用另一种方法完成了它,如下所示:
var _gaq = _gaq || [];
_gaq.push(function() {
var trackers, i;
trackers = _gat._getTrackers();
for (i = trackers.length - 1; i >= 0; i--) {
var account = trackers[i]._getAccount();
console.log("tracker account", account);
}
});