从页面上的 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 的主要分析帐户。类似的方法也适用于您的情况 - 以及任何其他可访问的属性:

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

如果您准备接受一个不太优雅的解决方案,您可以使用

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(); });