发送 Google 分析 client_id 到 Piwik

Send Google analytics client_id to Piwik

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

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

我认为问题在于 Google 的 ga.js 和 Piwik 的跟踪代码是 运行 异步的,我无法发送 client_id给皮维克。我在 Piwik 中创建了一个自定义 diemnsion,并将相关代码添加到我的跟踪脚本中,但 Piwik 说 'Value is not defined'。我尝试发送静态 ID(例如 test123)并且工作正常。

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

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

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

如 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 的代码片段 您的页面和 cookie 尚未生成,此代码将给出一个 错误。所以如果你愿意,你需要处理它。

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