操作返回Javascript中的Google Analytics API数据

Manipulating returned Google Analytics API data in Javascript

本文关键字:Analytics API 数据 Google 中的 返回 Javascript 操作      更新时间:2023-09-26

我正在尝试使用Google Analytics Embed API创建关于KPI-performance的基于文本的语句,以放置在仪表板上方。一个例子可能是这样的:"本周有X笔在线交易,比上周的表现变化了Y%,这来自Z个会话,每个会话的大致价值为$abc"。等等。目的是从数据中获得有用的见解,这些数据可以自动生成,并且页面上的空间应该比图表或图表少。

为了实现这一点,我需要能够:

  1. 查询API
  2. 操作返回的结果/执行基本计算
  3. 将这些结果发送到我的HTML页面

看来我能完成第1步和第3步。我可以在API上执行查询,并将这些查询发送到我的HTML页面,但我被困在第2步——以我想要的方式操纵/更改返回的结果

举一个真实的例子,比方说我想显示我的会话数据每周的变化。我可以获得最后7天的数据,并使用以下代码将这些数据发送到我页面上的元素(框1):

 var lastSevenDays = new gapi.analytics.report.Data({
      query: {
     ids: 'ga:123456789',
          'start-date':'7daysAgo',
          'end-date':'today',
          'metrics': 'ga:sessions'
        }
       });
       lastSevenDays.on('success', function(lastSevenDays) {
             for (var prop in lastSevenDays) {
              var outputDiv = document.getElementById('box1');
              outputDiv.innerHTML = lastSevenDays[prop];   
         }  
            console.log(lastSevenDays);
    }); 
  lastSevenDays.execute();
  //profile id: 123456789 isn't real in this example. 

这很好,过去7天的会话数据会写入我的页面。

然而,当我尝试将其与我的第二个查询(前7天的数据)结合起来,将其作为box2(第二次查询)和box3(数字差异)发送到页面时,有些东西不起作用。

下面的代码尝试。我想我的第一个查询可能是从Google Analytics API返回一个数组,当输出到HTML页面时,该数组似乎有效,因为数组中只有一个值。

  var lastSevenDays = new gapi.analytics.report.Data({
  query: {
    ids: 'ga:123456789',
      'start-date':'7daysAgo',
      'end-date':'today',
      'metrics': 'ga:sessions'
    }
   });  
   lastSevenDays.on('success', function(lastSevenDays) {
         for (var prop in lastSevenDays) {
          var outputDiv = document.getElementById('box1');
          outputDiv.innerHTML = lastSevenDays[prop];   
         }  
            console.log(lastSevenDays);             
    }); 
  lastSevenDays.execute();
  // The previous 7 days 
  var previousSevenDays = new gapi.analytics.report.Data({
  query: {
    ids: 'ga:123456789',
      'start-date':'7daysAgo',
      'end-date':'today',
      'metrics': 'ga:sessions'
    }
   });  
   previousSevenDays.on('success', function(previousSevenDays) {
         for (var prop in previousSevenDays) {
          var outputDiv = document.getElementById('box2');
          outputDiv.innerHTML = previousSevenDays[prop];   
         }  
            console.log(previousSevenDays);
    }); 
  previousSevenDays.execute();
  // Week on week change, where I am going wrong:
  var weekOnWeekChange = lastSevenDays - previousSevenDays; 
     weekOnWeekChange.on('success', function(weekOnWeekChange) {
         for (var prop in weekOnWeekChange) {
          var outputDiv = document.getElementById('box3');
          outputDiv.innerHTML = weekOnWeekChange[prop];   
         }  
            console.log(weekOnWeekChange);
    }); 
  weekOnWeekChange.execute();

  //profile id: 123456789 isn't real in this example. 

我是一个市场营销者,只是想学习更多,而不是一个程序员。所以我对Javascript不是很熟悉。因此,我非常感谢任何能为我指明正确方向的人的建议。

因此,请原谅我的任何重大错误,并提前感谢您的帮助。

我会先添加一些日志

....
'success', function(weekOnWeekChange) {
   console.log(weekOnWeekChange);

使用cmd+alt+j(在mac上)打开控制台。然后您将能够看到函数

返回的内容