[料理佳餚] C# 用Google Analytics Reporting API 來抓取特定 ...

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

Google Analytics(簡稱GA)是Google 推出的流量分析服務,既免費又強大,做商業網站的我們多少要會一點,通常我們查看流量分析的數據大都是. GoogleAnalytics(簡稱GA)是Google推出的流量分析服務,既免費又強大,做商業網站的我們多少要會一點,通常我們查看流量分析的數據大都是到GA的網站,如果我們反過來把GA當成是資料來源,那麼我們怎麼從GA來取得流量的數據? 我們就從「抓取特定URL的PageView」的這樣一個簡單的範例來切入,來看看我們要怎麼使用GoogleAnalyticsReportingAPI取得我們放在GA的流量數據。

建立專案 先前往https://console.developers.google.com建立專案(或是用既有的專案也可以) 啟用API和服務 將這個專案要使用到的GoogleAPI新增進來,瀏覽到「資訊主頁」,點擊「啟用API和服務」。

在上方搜尋框輸入「analytics」,找到「GoogleAnalyticsReportingAPI」,點擊進去之後把它啟用。

建立服務帳戶金鑰 接著建立認證用的憑證,我選擇用服務帳戶來跟Google做認證,瀏覽到「憑證」,點擊「建立憑證」->「服務帳戶金鑰」。

點選「新增服務帳戶」,輸入「服務帳戶名稱」,角色可以不用選,「金鑰類型」選擇JSON,「服務帳戶ID」先抄下來,稍後會用到,沒有抄到沒關係,在待會兒下載的JSON檔案裡面也有。

點擊「建立」會下載一個JSON檔案,請妥善保存,遺失了就要重新產生金鑰。

新增GA使用者 前往GA的網站,瀏覽到「管理」畫面,然後我們可以看到有三個區塊可以做使用者管理,我們要將剛剛抄下來的服務帳戶ID新增到其中一個去,這三個區塊代表著三種不同的存取範圍,要新增到哪一個區塊去,就看我們自己的需求。

依據最少權限原則,我選擇存取範圍最小的資料檢視區塊,進入畫面之後點擊右上角的新增按鈕,選擇「新增使用者」。

在「電子郵件地址」輸入剛剛抄下來的服務帳戶ID,勾選「權限」之後,點擊右上角的新增按鈕。

撰寫程式 終於要來寫程式了,先到NuGet安裝Google.Apis.AnalyticsReporting.v4,然後將剛剛下載的JSON檔案複製到專案中,把「複製到輸出目錄」的屬性設成「有更新時才複製」。

建立憑證物件 呼叫GoogleCredential.FromFile()方法,建立憑證物件。

vargoogleCredential=GoogleCredential.FromFile("xxx.json").CreateScoped(AnalyticsReportingService.Scope.Analytics); 建立AnalyticsReportingService物件 其中ApplicationName是用來方便我們識別用的,隨意輸入即可。

varanalyticsReporting=newAnalyticsReportingService( newBaseClientService.Initializer { HttpClientInitializer=googleCredential, ApplicationName="GALab" }); 建立Dimension物件 Dimension相當於我們從GA網站上看到的「維度」,我這邊指定我的維度為 ga:pagePath。

vardimension=newDimension{Name="ga:pagePath"}; 過濾維度(選擇性) 如果想要對維度做過濾,需要建立DimensionFilterClause及DimensionFilter,DimensionFilter的Expressions預設是用正則表達式去比對。

vardimension=newDimension{Name="ga:pagePath"}; vardimensionFilter=newDimensionFilter { DimensionName="ga:pagePath", Expressions=newList{"^/supershowwei/2016/01/26/145353$"} }; vardimensionFilterClause=newDimensionFilterClause{Filters=newList{dimensionFilter}}; 建立Metric物件 Metric相當於我們從GA網站上看到的「指標」,我這邊指定我的指標為 ga:pageviews。

varmetric=newMetric{Expression="ga:pageviews"}; 額外說明一下,Metric的Expression是可以做四則運算的,比如說我指定ga:pageviews/ga:sessions就可以回傳ga:pageviews除以ga:sessions的結果,另外,維度與指標相關的代碼可以在Dimensions&MetricsExplorer查得到。

建立DateRange物件 顧名思義,就是指定數據的時間區間。

varjanuary=newDateRange{StartDate="2019-01-01",EndDate="2019-01-31"}; 指定ViewId ViewId在GA網站的管理介面中找得到,我們從資料檢視區塊選定我們想要資料檢視,點擊「資料檢視設定」。

畫面展開之後,就可以看到「資料檢視ID」,它就是ViewId,把它複製下來。

最後把上述的Dimension、DimensionFilterClause、DimensionFilter、Metric、DateRange、ViewId兜成一個ReportRequest,丟給AnalyticsReportingService.Reports.BatchGet()方法之後,呼叫Execute(),就可以得到我們要的結果了。

varreportRequest=newReportRequest { ViewId="...", Metrics=newList{metric}, Dimensions=newList{dimension}, DimensionFilterClauses=newList{dimensionFilterClause}, DateRanges=newList{january} }; varreportGetRequest=newGetReportsRequest{ReportRequests=newList{reportRequest}}; varresponse=analyticsReporting.Reports.BatchGet(reportGetRequest).Execute(); 完整的原始碼如下: privateGetReportsResponseGetReports() { vargoogleCredential=GoogleCredential.FromFile("xxx.json").CreateScoped(AnalyticsReportingService.Scope.Analytics); varanalyticsReporting=newAnalyticsReportingService( newBaseClientService.Initializer { HttpClientInitializer=googleCredential, ApplicationName="GALab" }); vardimension=newDimension{Name="ga:pagePath"}; vardimensionFilter=newDimensionFilter { DimensionName="ga:pagePath", Expressions=newList{"^/supershowwei/2016/01/26/145353$"} }; vardimensionFilterClause=newDimensionFilterClause{Filters=newList{dimensionFilter}}; varmetric=newMetric{Expression="ga:pageviews"}; varjanuary=newDateRange{StartDate="2019-01-01",EndDate="2019-01-31"}; varreportRequest=newReportRequest { ViewId="...", Metrics=newList{metric}, Dimensions=newList{dimension}, DimensionFilterClauses=newList{dimensionFilterClause}, DateRanges=newList{january} }; varreportGetRequest=newGetReportsRequest{ReportRequests=newList{reportRequest}}; returnanalyticsReporting.Reports.BatchGet(reportGetRequest).Execute(); } 參考資料 GoogleAnalyticsReportingAPIv4-Samples GoogleAnalyticsReportingV4withC# 相關資源C#指南ASP.NET教學ASP.NETMVC指引AzureSQLDatabase教學SQLServer教學Xamarin.Forms教學 C#GoogleAnalyticsReportingAPI 回首頁 軟體廚房DeveloperTechnologies(2016-2022) ScottHanselmanRuddyLee(李智樺)Huan-Lin學習筆記In91mrkt的程式學習筆記黑暗執行緒.NETWalker(董大偉)TheWillWillWeb(保哥)gipi的學習筆記Ant'sATFieldArtechCashWuGeek 本頁段落 建立專案 啟用API和服務 建立服務帳戶金鑰 新增GA使用者 撰寫程式 參考資料



請為這篇文章評分?