如何利用PHP取得Google Analytics Reporting API資料

文章推薦指數: 80 %
投票人數:10人

到Google Developer Console申請一個帳號,並建立一個專案。

STEP 2. 啟用API,Analytics API與Google Analytics Reporting API. STEP 3. Anita'sSite Home 在進入ReportingAPI前,先來搞清楚他到底是甚麼東西? 文長可略..... 在我研究如何取出我想要的GAdata時,我先找到的頁面是這個 裡面介紹了如何設定GA,還有不同用途的API等,後來當我搞清楚我要用的是CoreReportingAPI後,當然是開始研究它要怎麼用,目前官方第一推薦是 ReportingAPIv4,所以我就非常努力看文件,看了半天,我還是看不懂到底該如何用它,加上google系統與功能龐大又多元,點來點去常常是迷路收場...後來我又想去網路上搜尋網友的介紹與範例,看能不能有所突破,不過找著找著覺得,奇怪,怎麼有個東西跟他很像,但是卻不一樣哩?那東西就是 ReportingAPIv3!!! 其實它就是ReportingAPI的上一個版本,目前網路上大部分文章都是v3的版本,那v3跟v4的差別在哪呢? 1.據官方說法,v4比v3多了更多功能,至於多了哪些,其實我也不是很清楚噗.....,不過有興趣還是可以去它們的Overview看一下 2.HTTP的方法與回應的內容結構也改了很多,v3的版本可直接利用HTTPGet,就可以取得資料,v4則需要利用POST,Content-Type帶application/json才能取得資料,如果你想從v3升級成v4,可以參考此官方文件。

看到這裡,還在用v3的朋友是否會擔心, 哪天舊版API會不會被遺棄?目前還不用太擔心,google還是有在維護v3版本,只不過,之後有任何的新功能,都只會在v4版本開發。

所以廢話這麼多,今天要說的當然是ReportingAPIv4的版本,改天有空時,再來補一下v3版本。

呼...終於要進入主題了..... 在開始動手前,首先,我們必須要先處google理權限的問題。

當你寫googleAPI時,一定都會遇到這個問題,在你向APIget資料時,我們常常會看到跟下圖類似的狀況。

這就是代表你沒有access的權限去取得API資料,此時你就需要透過OAuth2.0去取得權限。

要如何取得 access權限呢? Google官方文件提供很多語言與方法,包含Java、Python等,文件敘述非常詳盡,還附有SampleCode,簡直太方便了。

但我今天只用PHP來做介紹。

官網上,提供了ServiceApplications與WebServerApplications兩種方式, 這篇介紹的是利用ServiceApplications的方式存取得資料。

STEP1申請 GoogleDeveloperConsole 到GoogleDeveloperConsole申請一個帳號,並建立一個專案。

STEP2 啟用API,AnalyticsAPI與GoogleAnalyticsReportingAPI STEP3 建立服務帳號憑證 至憑證頁面,建立一個服務帳號金鑰 選取服務帳號,沒有服務帳號就建一個,金鑰類型選擇JSON 建立完成後,它會直接幫你下載JSON憑據的檔案,請存在你的專案路徑下,待會認證時會到它。

如果一時失手,沒存到。

你可以回到憑證頁面,點選管理帳戶 點選查看用戶,就可以重新下載憑證了。

STEP4 新增服務E-Mail帳號權限 點選管理帳戶,複製服務帳號ID 至GA管理員頁面,點選使用者管理,將剛剛複製的服務帳號ID,貼在框框的欄位裡,並賦予權限。

STEP5 安裝GoogleAPIsClientPHPLibrary 利用Composer安裝GoogleAPIsClientPHPLibrary。

建立或是打開一個專案資料夾(專案需要在伺服器連線路徑下),在這個路徑下開terminal並輸入。

composerrequiregoogle/apiclient:^2.0 STEP6 建立測試資料夾與檔案 1.建立一個HelloAnalytics.php檔案,將以下程式碼貼進檔案裡。

2.將service-account-credentials.json換成剛剛下載的JSON金鑰檔案。

3.置換成你的VIEW_ID,若你不知道你的VIEW_ID可以去AccountExplorer取得。

php//LoadtheGoogleAPIPHPClientLibrary.require_once__DIR__.'/vendor/autoload.php';$analytics=initializeAnalytics();$response=getReport($analytics);printResults($response);/***InitializesanAnalyticsReportingAPIV4serviceobject.**@returnAnauthorizedAnalyticsReportingAPIV4serviceobject.*/functioninitializeAnalytics(){//Usethedevelopersconsoleanddownloadyourserviceaccount//credentialsinJSONformat.Placetheminthisdirectoryor//changethekeyfilelocationifnecessary.$KEY_FILE_LOCATION=__DIR__.'/service-account-credentials.json';//Createandconfigureanewclientobject.$client=newGoogle_Client();$client->setApplicationName("HelloAnalyticsReporting");$client->setAuthConfig($KEY_FILE_LOCATION);$client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);$analytics=newGoogle_Service_AnalyticsReporting($client);return$analytics;}/***QueriestheAnalyticsReportingAPIV4.**@paramserviceAnauthorizedAnalyticsReportingAPIV4serviceobject.*@returnTheAnalyticsReportingAPIV4response.*/functiongetReport($analytics){//ReplacewithyourviewID,forexampleXXXX.$VIEW_ID="";//CreatetheDateRangeobject.$dateRange=newGoogle_Service_AnalyticsReporting_DateRange();$dateRange->setStartDate("7daysAgo");$dateRange->setEndDate("today");//CreatetheMetricsobject.$sessions=newGoogle_Service_AnalyticsReporting_Metric();$sessions->setExpression("ga:sessions");$sessions->setAlias("sessions");//CreatetheReportRequestobject.$request=newGoogle_Service_AnalyticsReporting_ReportRequest();$request->setViewId($VIEW_ID);$request->setDateRanges($dateRange);$request->setMetrics(array($sessions));$body=newGoogle_Service_AnalyticsReporting_GetReportsRequest();$body->setReportRequests(array($request));return$analytics->reports->batchGet($body);}/***ParsesandprintstheAnalyticsReportingAPIV4response.**@paramAnAnalyticsReportingAPIV4response.*/functionprintResults($reports){for($reportIndex=0;$reportIndexgetColumnHeader();$dimensionHeaders=$header->getDimensions();$metricHeaders=$header->getMetricHeader()->getMetricHeaderEntries();$rows=$report->getData()->getRows();for($rowIndex=0;$rowIndexgetDimensions();$metrics=$row->getMetrics();for($i=0;$igetValues();for($k=0;$kgetName().":".$values[$k]."\n");}}}}}STEP6 測試它吧!!! 打開輸入專案在伺服器下的路徑 EX: localhost:8080/myProject/HelloAnalytics.php 成功的話便會在畫面上顯示回傳結果。

參考資料 http://todomato.blogspot.tw/2016/01/google-google-analytics-api-1-step-by.html http://white5168.blogspot.tw/2016/09/google-oauth-20.html#.WSfPatI2uHt https://developers.google.com/analytics/devguides/reporting/core/v4/ https://developers.google.com/analytics/devguides/reporting/core/dimsmets#cats=page_tracking GoogleAnalytics,GoogleAnalyticsApi ©2022Anita'sSite. ThemeinspiredbyFabthemes|PoweredbyPostach.io AnitaChou 跑步....爬山....打藍球....最近+打羽球... 咖啡是我精神糧食....寫code就靠它了.... LatestPosts AWSEC2coturn安裝 AlexaskillkitsconnecttoAWSEC2withnodejs NodejsserversideHttppost範例 Qt檔案與資料夾處理 QVector,QList,QStringList,QSet,QMapcontainers介紹 TagCloud #alexa #aws-ec2 #google-analytics #google-analytics-api #microsoft-visual-studio #nodejs #qt #qt5 #webrtc



請為這篇文章評分?