每个会话只发送一次事件?

是否可以在每个会话中仅发送一次Google分析事件? 我不想在每次网页浏览时发送我的特定事件。

我想要实现的目标:

我目前正在运行一个没有任何广告的网站。 我想测试我的网站有多少访问者使用广告拦截器。

我会添加一个像这样的元素

可能会被每个广告拦截器(至少大部分广告)过滤掉。 然后我会用jquery测试元素是否存在

 $(function(){ function test(){ var len = $('.ad').length; if(len === 0){ ga.send(..); } } // give adblockers a sec to remove everything, just in case setTimeout(test,500); }); 

我可以使用自定义cookie的解决方法,比如

 // simplified if (!cookie) { test(); } 

但是如果谷歌api只能这样做,我会感兴趣

Google Analytics(分析)事件是一种匹配类型(如网页浏览量),无法限定为会话或用户。 即使您每个会话只能发送一个事件(使用cookie或sessionStorage,您实际上也无法全面了解GA报告。

要提供更好的解决方案,请考虑使用自定义维度和“会话”范围来存储该数据。 令人高兴的是,维度应用于范围内的所有命中类型 – 意味着任何网页浏览,事件等也具有与之关联的维度。

为此,请在“自定义定义”中的“属性”设置下的Google Analytics管理中创建维度。 获取索引号(看起来像'dimension1''dimension 4'的字符串)并发送页面视图(理想情况下)或事件之前粘贴该行。

请记住:尺寸不是命中,所以简单地设置它们除了发送命中之外什么都不做! 此外,请确保在事件上启用非互动 (如果这是您选择的路线),否则您将错误地报告使用广告拦截器的人的反弹。

这是理想的片段(注意:如果您要将setTimeout作为检测的一部分,请不要使用此方法,因为它会延迟页面视图发送… 考虑一个不需要超时的方法。 ):

  

如果您无法在 GA发送pageview片段之前进行检测,那么上面的代码将如下所示。

 function test(){ var len = $('.ad').length; if(len === 0){ ga('set', 'dimension1', 'Ad Blocker'); //Change 'dimension1' to yours. ga('send', 'event', 'Ad Blocker', {nonInteraction: true}); //Add action and label as needed. } }