从页面上的 Google 分析跟踪代码获取帐户 ID
Get account ID from Google Analytics Tracking code on page
我正在使用我的自定义网络爬虫执行审核,并试图为 Google Analytics 的遗留实施获取 accountID,但我似乎无法获得任何 JavaScript _gaq 中的函数 return 正在使用的 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 ""
}
Joshua,这不是可用的标准功能/获取功能。
但是您可以手动访问由跟踪库创建的 ga 对象。
例如,如果您打开此网页的控制台并输入:
ga.getAll()[0].a.data.values[':trackingId']
您将收到 UA-5620270-1,这可能是 Stack Overflow 的主要分析帐户。类似的方法也适用于您的情况 - 以及任何其他可访问的属性:
如果您准备接受一个不太优雅的解决方案,您可以使用
function getAccount(_gaq) {
for (i = 0; i < _gaq.length; i++) {
if (_gaq[i][0] == "_setAccount") {
return _gaq[i][1];
}
}
}
_gaq
是一个数组数组,函数简单地循环直到找到一个子数组,其中第一个元素是_setAccount
,第二个元素是returns,也就是账户数 (_gaq.push(['_setAccount', 'UA-XXXXX-X']);
).
正如您所说的遗留实现,甚至还有更旧版本的代码,因此您可能需要更多检查。我可以在活动页面上找到的最旧版本是:
<script type="text/javascript">
_uacct = "UA-XXXXXXXX-X";
urchinTracker();
</script>
从那里获取帐户 ID 非常容易。还有代码的同步版本(抱歉,现在找不到示例)。
对于当前版本,请查看 Petrs 的回答。
我只是用另一种方法做到了,如下:
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);
}
});
根据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。
Don't — use ga object methods outside a readyCallback as the methods
may not be available yet.
var trackers = ga.getAll();
Do — use ga object methods inside a
readyCallback as they're guaranteed to be available.
ga(function() {
var trackers = ga.getAll();
});
我正在使用我的自定义网络爬虫执行审核,并试图为 Google Analytics 的遗留实施获取 accountID,但我似乎无法获得任何 JavaScript _gaq 中的函数 return 正在使用的 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 ""
}
Joshua,这不是可用的标准功能/获取功能。
但是您可以手动访问由跟踪库创建的 ga 对象。
例如,如果您打开此网页的控制台并输入:
ga.getAll()[0].a.data.values[':trackingId']
您将收到 UA-5620270-1,这可能是 Stack Overflow 的主要分析帐户。类似的方法也适用于您的情况 - 以及任何其他可访问的属性:
如果您准备接受一个不太优雅的解决方案,您可以使用
function getAccount(_gaq) {
for (i = 0; i < _gaq.length; i++) {
if (_gaq[i][0] == "_setAccount") {
return _gaq[i][1];
}
}
}
_gaq
是一个数组数组,函数简单地循环直到找到一个子数组,其中第一个元素是_setAccount
,第二个元素是returns,也就是账户数 (_gaq.push(['_setAccount', 'UA-XXXXX-X']);
).
正如您所说的遗留实现,甚至还有更旧版本的代码,因此您可能需要更多检查。我可以在活动页面上找到的最旧版本是:
<script type="text/javascript">
_uacct = "UA-XXXXXXXX-X";
urchinTracker();
</script>
从那里获取帐户 ID 非常容易。还有代码的同步版本(抱歉,现在找不到示例)。
对于当前版本,请查看 Petrs 的回答。
我只是用另一种方法做到了,如下:
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);
}
});
根据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。
Don't — use ga object methods outside a readyCallback as the methods may not be available yet.
var trackers = ga.getAll();
Do — use ga object methods inside a readyCallback as they're guaranteed to be available.
ga(function() { var trackers = ga.getAll(); });