如何从Google Analytics获取推广活动ID?及tracker数据获取异常求助
解决Google Analytics推广活动ID获取返回undefined的问题
Hey there, let's break down why you're seeing undefined when trying to pull campaign IDs from Google Analytics, and fix it step by step!
首先,排查核心问题:你用的是哪种GA跟踪代码?
老的ga.js已经被Google废弃,现在绝大多数网站用的是**gtag.js(Global Site Tag)**或者Google Analytics 4的代码。你之前的代码是针对ga.js的,如果你的网站用的是gtag.js,那肯定会返回undefined。
情况1:你的网站用的是gtag.js
如果你的页面代码里有类似gtag('config', 'UA-XXXXXXXXX-X')的代码,那用下面两种方法获取推广活动信息:
方法A:从dataLayer中提取
gtag.js会把campaign数据存入dataLayer,你可以直接从中读取:
// 等待dataLayer加载完成后执行 window.dataLayer = window.dataLayer || []; function fetchCampaignDetails() { // 从dataLayer中找到包含campaign数据的条目 const campaignEntry = dataLayer.find(item => item.campaign); if (campaignEntry) { console.log('推广活动ID:', campaignEntry.campaign.id); // 对应utm_id参数 console.log('推广活动来源:', campaignEntry.campaign.source); console.log('推广活动媒介:', campaignEntry.campaign.medium); } else { // 如果dataLayer中没有,直接从URL解析UTM参数 const urlParams = new URLSearchParams(window.location.search); console.log('推广活动ID(来自URL):', urlParams.get('utm_id')); console.log('推广活动来源(来自URL):', urlParams.get('utm_source')); console.log('推广活动媒介(来自URL):', urlParams.get('utm_medium')); } } // 在页面加载完成后调用函数 document.addEventListener('DOMContentLoaded', fetchCampaignDetails);
方法B:直接解析URL中的UTM参数
如果用户是通过带UTM参数的链接进入网站,推广活动ID对应的是utm_id参数,你可以直接从URL提取:
const urlParams = new URLSearchParams(window.location.search); const campaignId = urlParams.get('utm_id'); const campaignSource = urlParams.get('utm_source'); const campaignMedium = urlParams.get('utm_medium'); console.log('推广活动ID:', campaignId); console.log('推广活动来源:', campaignSource); console.log('推广活动媒介:', campaignMedium);
情况2:你仍在使用废弃的ga.js
如果你的网站确实还在使用老的ga.js,那可能是tracker初始化的问题,试试遍历所有tracker实例:
ga(function() { // 获取所有已初始化的tracker const allTrackers = ga.getAll(); allTrackers.forEach(tracker => { console.log('Tracker名称:', tracker.get('name')); console.log('推广活动ID:', tracker.get('campaignId')); // 对应utm_id console.log('推广活动来源:', tracker.get('campaignSource')); console.log('推广活动媒介:', tracker.get('campaignMedium')); }); });
重要提醒:为什么会返回undefined?
如果以上方法还是返回undefined,大概率是因为当前页面的URL没有携带UTM参数(包括utm_id、utm_source等)。Google Analytics只有当用户通过带UTM参数的链接进入时,才会存储这些campaign数据,否则这些值就是undefined。
内容的提问来源于stack exchange,提问作者Analise Burtet
相关产品推荐
相关产品推荐

