【问题标题】:Send Google analytics client_id to Piwik将 Google 分析 client_id 发送到 Piwik
【发布时间】:2016-07-12 15:21:52
【问题描述】:

有没有办法通过使用 javascript 解决方案将 Google 分析 client_id 发送到 Piwik?实际上,我可以使用官方文档中描述的以下代码 sn-p 来获取 google 的客户端 ID:

    ga(function(tracker) {
      var clientId = tracker.get('clientId');
    });

我认为问题在于 Google 的 ga.js 和 Piwik 的跟踪代码异步运行,我无法将 client_id 发送到 Piwik。我在 Piwik 中创建了一个自定义维度并将相关代码添加到我的跟踪脚本中,但 Piwik 说“未定义值”。我尝试发送静态 ID(例如 test123),它工作正常。

我尝试在使用window.onload 函数加载页面后加载 Piwik 的跟踪代码,但没有成功。我也试图等到clientId 变量生成,但它也没有工作。我尝试为两个跟踪脚本关闭异步选项,但没有成功。

我运行 chrome 的时间线调试以查看每个跟踪代码何时加载,但即使 Piwik 的 js 代码稍后加载,client_id 也没有传递到我的服务器。

知道如何将这些信息发送到我自己的服务器以在 Piwik 中处理它吗?如果有人可以提及另一种调试可能性,这可以帮助我确定问题,那也很好。

【问题讨论】:

  • 你可以忽略谷歌关于不要直接访问cookie的建议,在你发送数据之前通过你的piwik函数中的JS读取它。
  • @EikePierstorff 感谢您的评论!刚刚得出了同样的结论。已经在研究解决方案。完成后会在这里发布。

标签: javascript google-analytics matomo


【解决方案1】:

正如 EikePierstorff 所提到的,更好的解决方案是从存储的 cookie 中读取 Google 的 client_id。您可以通过发出以下命令来获取 Google Analytics cookie 的内容:

document.cookie.valueOf('_ga')

它列出了 cookie 的内容。 cookie 中的每个元素都用分号 (;) 分隔。我使用以下代码阅读了client_id

    function getClientId(){
      var cookie_val_array = document.cookie.valueOf('_ga').split(';');
          for (i=0; i < cookie_val_array.length; i++){
            if(cookie_val_array[i].indexOf('_ga=') >= 0){
                client_id = cookie_val_array[i].split('.')[2] + '.' + cookie_val_array[i].split('.')[3];
            }
         }
       return client_id;
   }

我使用以下代码将其传递给 Piwik:

_paq.push(['setCustomDimension', customDimensionId = 1, customDimensionValue = getClientId()]);

注意:您应该在 Piwik 中创建一个自定义维度,并且您的自定义维度可能有不同的 id。

我想强调几点:

  • 如果这是您第一次运行 Google Analytics 的代码 sn-p 您的页面和 cookie 尚未生成,但此代码将给出 错误。所以如果你愿意,你需要处理它。

  • Google 可能会更改其 cookie 的格式和内容,因此请 在开始阅读任何内容之前检查 cookie 的内容 它的价值。

【讨论】:

    猜你喜欢
    • 2017-09-09
    • 1970-01-01
    • 2014-04-08
    • 2022-12-15
    • 2017-05-08
    • 2011-11-13
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    相关资源
    最近更新 更多