You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同一页面共存GA3与GA4时,如何独立获取各自Client ID

GA3与GA4同页面部署的Client ID问题及排查

问题描述

我通过GTM在同一页面部署了Google Analytics 3(GA3)和Google Analytics 4(GA4),需要分别获取两者的Client ID,但不确定它们是否共用ID。用以下代码查看追踪器列表时,第一个console.log能拿到带UA- ID的GA3追踪器完整对象,第二个返回undefined,识别不到GA4;同时在Chrome开发者工具的Application>Cookies里只找到一个_ga cookie,想确认这是不是说明两者共用同一个Client ID,还是我漏了什么?

ga(function(tracker) {
  var trackers_multi = ga.getAll(); 
  console.log("Trackers1: " + JSON.stringify(trackers_multi[0]));
  console.log("Trackers2: " + JSON.stringify(trackers_multi[1]));
});

解答

1. 为什么代码识别不到GA4追踪器

你用的ga()和ga.getAll()是GA3(analytics.js)专属的API,GA4依赖的是gtag.js或gtag()接口,这套老API无法检测到GA4的追踪实例,所以trackers_multi[1]返回undefined是正常的——两者运行机制完全独立,GA3的API管不到GA4。

2. Client ID是否共用?

  • 默认情况下,GA4会复用GA3的_ga cookie中的Client ID,所以你只看到一个_ga cookie是正常的。GA4的Client ID格式和GA3一致(例如GA1.2.XXXXXX.XXXXXX),本质是同一个值。
  • 若需要GA4生成独立的Client ID,可在GTM的GA4配置中手动开启「创建新的Client ID」选项,或者通过gtag('set', 'client_id', '自定义ID值')强制设置。

3. 如何分别获取两者的Client ID

获取GA3的Client ID

沿用你现有代码,从GA3追踪器中提取:

ga(function(tracker) {
  const ga3ClientId = tracker.get('clientId');
  console.log('GA3 Client ID:', ga3ClientId);
});

获取GA4的Client ID

需使用GA4的gtag() API,或直接读取GA4专属的_ga_<测量ID> cookie(比如测量ID为G-ABC123,对应cookie是_ga_G-ABC123):

// 方法1:通过gtag API获取
gtag('get', 'G-ABC123', 'client_id', function(clientId) {
  console.log('GA4 Client ID:', clientId);
});

// 方法2:直接读取cookie
function getGa4ClientId(measurementId) {
  const cookieName = `_ga_${measurementId}`;
  const cookies = document.cookie.split('; ');
  for (const cookie of cookies) {
    const [name, value] = cookie.split('=');
    if (name === cookieName) {
      return value;
    }
  }
  return null;
}
console.log('GA4 Client ID:', getGa4ClientId('G-ABC123'));

内容的提问来源于stack exchange,提问作者j3ys5k

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 18:40:45