2015-11-13 46 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請求。我的意思是基本上就是這樣。 –