从页面上的Google Analytics跟踪代码中获取帐户ID

时间:2015-03-10 21:50:48

标签: javascript google-analytics

我正在使用我的自定义网络抓取工具执行审核,并且正在尝试获取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 ""
}

4 个答案:

答案 0 :(得分:2)

Joshua,这不是一个可用的标准功能/获取功能。

但您可以手动访问跟踪库创建的 ga 对象。

例如,如果您打开此网页的控制台并输入:

ga.getAll()[0].a.data.values[':trackingId']

您将收到 UA-5620270-1 ,它可能是Stack Overflow的主要Google Analytics帐户。类似的方法也适用于您的情况 - 以及任何其他可访问的属性:

屏幕:http://fii.cz/sbdqevk

答案 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);
  }
});