2015-11-13 42 views
3

任何人都可以给我建议就以生成报告(例如Omniture的REST API调用,我需要通过操作系统等产生的十大浏览器的收入及前十名浏览器的月度报告Omniture的报告REST API调用

+0

感谢您的回复。它真的帮了我很多。但我还有一个问题,那就是如何才能通过操作系统生成十大浏览器的报告? –

回答

4

首先,使用Report.Queue方法来创建报告请求

这里是上个月一个例子:

{ 
    "reportDescription":{ 
     "reportSuiteID":"rsidhere", 
     "date":"2015-10", 
     "metrics":[ 
      { 
       "id":"revenue" 
      } 
     ], 
     "sortBy":"revenue", 
     "elements":[ 
      { 
       "id":"browser", 
       "top":"10", 
       "startingWith":"1" 
      } 
     ] 
    } 
} 

这应该给你配个响应评估报告请求ID,例如:

{ 
    "reportID":123456789 
} 

然后,使用Report.GetQueue检查报告的状态。

唯一要发送到此方法的是一个空的[]数组。报告队列对整个公司都是全球性的。它会返回一个看起来像这样(例如)对象的数组:

[ 
    { 
     "reportID":"123456789", 
     "type":"ranked", 
     "queueTime":"2015-11-14 03:24:23", 
     "status":"waiting", 
     "priority":"0", 
     "estimate":"0", 
     "user":"user" 
    } 
    // , {..} 
] 

由于超过1个对象可以在阵列中(取决于如果您在队列中的任何其他报告),你将有循环浏览并查找匹配的reportID

status属性将显示“正在等待”或“正在运行”。它永远不会显示“完整”或任何东西。如果您在数组中找不到reportID,那意味着报告已完成并准备检索。

报告准备就绪后,使用Report.Get方法检索报告。

您使用从原来的Report.Queue相同返回值来得到报告:

{ 
    "reportID":123456789 
} 

注:如果您尝试使用Report.Get当报告还没有准备好要检索的文件说,你会收到一条错误消息,指出报告尚未准备就绪。所以在面值时,这听起来像是一种跳过检查Report.GetQueue的合理方法。然而,在实践中,我发现取决于我请求的报告类型,返回的数据量等等(我不知道确切的公式),这是不正确的。有时它会返回部分报告!

返回的报告会是这个样子(例如):

  • data[n].name显示了浏览器
  • data[n].counts[0]显示收入

响应

{ 
    "report":{ 
     "type":"ranked", 
     "elements":[ 
      { 
       "id":"browser", 
       "name":"Browser" 
      } 
     ], 
     "reportSuite":{ 
      "id":"rsidhere", 
      "name":"some rsid" 
     }, 
     "period":"October 2015", 
     "metrics":[ 
      { 
       "id":"revenue", 
       "name":"Revenue", 
       "type":"currency", 
       "decimals":2, 
       "latency":2696, 
       "current":false 
      } 
     ], 
     "data":[ 
      { 
       "name":"Microsoft Internet Explorer 11", 
       "url":"", 
       "counts":[ 
        "474127.13" 
       ] 
      }, 
      { 
       "name":"Google Chrome 45.0", 
       "url":"", 
       "counts":[ 
        "409498.61" 
       ] 
      }, 
      { 
       "name":"Google Chrome 46.0", 
       "url":"", 
       "counts":[ 
        "355380.86" 
       ] 
      }, 
      { 
       "name":"Safari 9.0", 
       "url":"", 
       "counts":[ 
        "275003.13" 
       ] 
      }, 
      { 
       "name":"Mozilla Firefox 41.0", 
       "url":"", 
       "counts":[ 
        "166427.91" 
       ] 
      }, 
      { 
       "name":"Safari 8.0", 
       "url":"", 
       "counts":[ 
        "125681.54" 
       ] 
      }, 
      { 
       "name":"Safari 0.8.2", 
       "url":"", 
       "counts":[ 
        "103866.64" 
       ] 
      }, 
      { 
       "name":"::unspecified::", 
       "url":"", 
       "counts":[ 
        "87761.87" 
       ] 
      }, 
      { 
       "name":"Safari 8.0.8", 
       "url":"", 
       "counts":[ 
        "79675.79" 
       ] 
      }, 
      { 
       "name":"Safari 9.0.1", 
       "url":"", 
       "counts":[ 
        "76977.82" 
       ] 
      } 
     ], 
     "totals":[ 
      "2823943.75" 
     ], 
     "version":"1.4.15.11" 
    }, 
    "waitSeconds":"0.943", 
    "runSeconds":"8.710" 
} 

注意:您可以使用Adobe API Explorer来尝试API方法并查看响应并帮助构建脚本。

+0

有关使用java执行此API调用的任何建议,在Java中以JSON格式发送report.queue? –

+0

@Abdullah我不是Java专家,但一个快速的谷歌搜索显示,有大量的Java库提供JSON请求。我的意思是基本上就是这样。 –