如何提取gtag('consent')的用户设置值?
获取 gtag('consent') 设置值的解决方案
谷歌的gtag('get')确实无法直接读取consent相关配置,不过可以通过以下几种方式获取用户的授权状态:
方法1:直接从全局数据层读取
gtag会将consent配置存入window.dataLayer对象,你可以通过遍历该对象定位对应配置:
- 获取默认授权配置:
const defaultConsent = window.dataLayer.find(item => item.event === 'consent_default')?.consent; console.log(defaultConsent); - 获取更新后的授权配置:
const updateConsent = window.dataLayer.find(item => item.event === 'consent_update')?.consent; console.log(updateConsent); - 提取单个权限状态(如
ad_user_data):const targetConsent = window.dataLayer.find(item => item.consent?.ad_user_data !== undefined); const adUserDataStatus = targetConsent?.consent.ad_user_data; // 返回 'granted' 或 'denied'
方法2:在GTM中配置自定义变量
通过GTM自定义变量直接读取数据层中的consent值:
- 创建自定义JavaScript变量,代码如下:
function() { return window.dataLayer.find(item => item.event === 'consent_update')?.consent || window.dataLayer.find(item => item.event === 'consent_default')?.consent; } - 后续在GTM的标签、触发器中可直接调用该变量,获取当前完整授权配置。
方法3:手动同步授权状态到全局变量
在调用gtag('consent')时,同步将配置存入全局变量,方便后续直接读取:
// 设置默认授权时同步存储 const defaultConfig = { ad_user_data: 'granted', functionality_storage: 'denied' }; gtag('consent', 'default', defaultConfig); window.currentConsent = defaultConfig; // 更新授权时同步更新全局变量 const updateConfig = { ad_user_data: 'denied' }; gtag('consent', 'update', updateConfig); window.currentConsent = {...window.currentConsent, ...updateConfig};
之后直接读取window.currentConsent即可获取最新授权状态。
内容的提问来源于stack exchange,提问作者cccnrc
相关产品推荐
相关产品推荐

