首頁 > 後端開發 > php教程 > 使用php的Google Analytics(分析)API V3:獲取數據

使用php的Google Analytics(分析)API V3:獲取數據

William Shakespeare
發布: 2025-02-19 12:06:13
原創
910 人瀏覽過

使用php的Google Analytics(分析)API V3:獲取數據

在系列的第一部分中,我們介紹了Google Analytics(包括基本用法)。在這一部分中,我們將繼續創建我們的演示,並了解如何通過更多功能擴展它。

>

鑰匙要點

    >使用PHP利用Google Analytics(Analytics)API V3來有效獲取和管理用戶帳戶數據,包括屬性和視圖。
  • >實現管理API以檢索基於ga_service.php。
  • >利用元數據API使用Google_curlio和Google_httprequest訪問和緩存分析元數據,用ETAG屬性優化數據檢索。
  • >通過將分類,過濾和分割選項合併到API查詢中,增強數據自定義和相關性來擴展功能。 >
  • 處理PHP中的身份驗證,錯誤響應和JSON數據解析,以確保與Google Analytics(分析)API的安全有效交互。
  • > Google Analytics(分析)API
管理API

>正如我們在第一部分中討論的那樣,管理API負責獲取用戶帳戶,屬性,視圖……對於我們的第一個示例,我們將檢索可為身份驗證的用戶可用的帳戶列表。

>在Ga_service ::帳戶中,我們使用授權客戶端創建一個新的Google_analyticsService,然後查詢API中的帳戶列表。

在這種情況下,結果是一個數組,但是API也利用對象,我們只需要在GA_Service :: Init函數中指定它。在以下示例中,我將使用數組結果。
<span>// app/src/GA_Service.php
</span><span>public function accounts(){
</span>	<span>if( !$this->isLoggedIn() ){
</span>		<span>//login
</span>	<span>}
</span>	
	<span>$service = new Google_AnalyticsService($this->client);
</span>	<span>$man_accounts = $service->management_accounts->listManagementAccounts();
</span>	<span>$accounts = [];
</span>
	<span>foreach ($man_accounts['items'] as $account) {
</span>		<span>$accounts[] = [ 'id' => $account['id'], 'name' => $account['name'] ];
</span>	<span>}
</span>
	<span>return $accounts;
</span><span>}//accounts
</span>
<span>// app/controllers/HomeController.php
</span><span>public function accounts(){
</span>	<span>$accounts = $this->ga->accounts();
</span>
	<span>return $accounts;
</span><span>}//accounts
</span>
<span>// app/routes.php
</span><span>Route<span>::</span>get('/accounts', 'HomeController@accounts');</span>
登入後複製
登入後複製
登入後複製
>

listManagementAccounts函數返回一個包含的數組:>

請注意,當您將數組作為響應返回時,Laravel會自動編碼結果作為JSON響應並將其發送到瀏覽器。
<span>$this->client->setUseObjects(true);</span>
登入後複製
登入後複製
登入後複製
>該結果包含有關總結果和一些分頁信息的信息。項目列包含帶有其ID,權限等的帳戶列表,但是我們通過項目循環以從帳戶中提取ID和名稱。

如果您想具有結果分頁,可以始終將更多選項傳遞給ListManagementAccount:
<span>{
</span>    kind<span>: "analytics#accounts",
</span>    <span>username: "me@mail.com",
</span>    <span>totalResults: 3,
</span>    <span>startIndex: 1,
</span>    <span>itemsPerPage: 1000,
</span>    <span>items: [
</span>        <span>{
</span>            id<span>: "4449308",
</span>            <span>kind: "analytics#account",
</span>            <span>selfLink: "https://www.googleapis.com/analytics/v3/management/accounts/4449308",
</span>            <span>name: "me@mail.com",
</span>            <span>permissions: {
</span>                effective<span>: [
</span>                    <span>"COLLABORATE",
</span>                    <span>"EDIT",
</span>                    <span>"MANAGE_USERS",
</span>                    <span>"READ_AND_ANALYZE"
</span>                <span>]
</span>            <span>},
</span>            <span>created: "2013-10-01T11:04:28.478Z",
</span>            <span>updated: "2013-10-01T11:04:28.478Z",
</span>            <span>childLink: {
</span>                type<span>: "analytics#webproperties",
</span>                <span>href: "https://www.googleapis.com/analytics/v3/management/accounts/4449308/webproperties"
</span>            <span>}
</span>        <span>}
</span>    <span>]
</span><span>}</span>
登入後複製
登入後複製
登入後複製

>假設我們將向用戶展示其帳戶列表,當他們選擇一個帳戶列表時,我們加載了與之關聯的屬性列表。

> ga_service :: properties接受帳戶ID,並返回該帳戶的屬性列表。我們基本上具有相同的過程,例如檢索帳戶。

>
<span>$service->management_accounts->listManagementAccounts( [ 'max-results' => $max_results, 'start-index' => $start_index ] );</span>
登入後複製
登入後複製

每個屬性都有一個視圖子集。默認情況下,Google添加了一個為每個新屬性的查看稱為所有網站數據。

>

使用屬性列表中的ID和第一部分獲取的帳戶ID,我們將查詢Google Analytics Api中的Aprantics API列表的給定帳戶屬性的可用視圖列表。

<span>// app/src/GA_Service.php
</span><span>public function accounts(){
</span>	<span>if( !$this->isLoggedIn() ){
</span>		<span>//login
</span>	<span>}
</span>	
	<span>$service = new Google_AnalyticsService($this->client);
</span>	<span>$man_accounts = $service->management_accounts->listManagementAccounts();
</span>	<span>$accounts = [];
</span>
	<span>foreach ($man_accounts['items'] as $account) {
</span>		<span>$accounts[] = [ 'id' => $account['id'], 'name' => $account['name'] ];
</span>	<span>}
</span>
	<span>return $accounts;
</span><span>}//accounts
</span>
<span>// app/controllers/HomeController.php
</span><span>public function accounts(){
</span>	<span>$accounts = $this->ga->accounts();
</span>
	<span>return $accounts;
</span><span>}//accounts
</span>
<span>// app/routes.php
</span><span>Route<span>::</span>get('/accounts', 'HomeController@accounts');</span>
登入後複製
登入後複製
登入後複製
在瀏覽器中,擊中/views/{councel_id}/{property_id}路由時,我們應該得到類似的東西:

<span>$this->client->setUseObjects(true);</span>
登入後複製
登入後複製
登入後複製
>元數據API

要查詢Google Analytics(分析)的一些統計信息,我們需要提供一組維度和指標。

    >指標:指標是您屬性中用戶活動的單個測量值,例如會話和瀏覽量。
  • >維度:尺寸分解了某些常見標準(例如國家或瀏覽器)的指標。
  • 要獲取可用元數據的列表,您只需使用curl來查詢以下url https://www.googleapis.com/analytics/v3/metadata/ga/columns。 >

    google Analytics(分析)為我們提供了一個可用於緩存響應的ETAG屬性,因此我們不必在每個請求上查詢API。

    google_curlio:一個包裹著一些捲曲的課程,用於處理緩存,身份驗證等 - 通過使用此類,我們確保使用etagattribute進行響應。
    <span>{
    </span>    kind<span>: "analytics#accounts",
    </span>    <span>username: "me@mail.com",
    </span>    <span>totalResults: 3,
    </span>    <span>startIndex: 1,
    </span>    <span>itemsPerPage: 1000,
    </span>    <span>items: [
    </span>        <span>{
    </span>            id<span>: "4449308",
    </span>            <span>kind: "analytics#account",
    </span>            <span>selfLink: "https://www.googleapis.com/analytics/v3/management/accounts/4449308",
    </span>            <span>name: "me@mail.com",
    </span>            <span>permissions: {
    </span>                effective<span>: [
    </span>                    <span>"COLLABORATE",
    </span>                    <span>"EDIT",
    </span>                    <span>"MANAGE_USERS",
    </span>                    <span>"READ_AND_ANALYZE"
    </span>                <span>]
    </span>            <span>},
    </span>            <span>created: "2013-10-01T11:04:28.478Z",
    </span>            <span>updated: "2013-10-01T11:04:28.478Z",
    </span>            <span>childLink: {
    </span>                type<span>: "analytics#webproperties",
    </span>                <span>href: "https://www.googleapis.com/analytics/v3/management/accounts/4449308/webproperties"
    </span>            <span>}
    </span>        <span>}
    </span>    <span>]
    </span><span>}</span>
    登入後複製
    登入後複製
    登入後複製
    >
      google_httprequest:是代表單個http請求的類
    • Makerequest方法返回Google_httprequest實例,我們可以使用GetResponsebody獲取我們的元數據響應。
    • >
    • 現在,在訪問瀏覽器中的 /元數據路由時,您應該獲得一系列尺寸,而另一個則用於指標,並且每個尺寸都包含一個分組元素的列表。

    為了加快流程,我們將使用Bootsnipp。如果用戶登錄,我們將顯示主頁。

    >
    <span>$service->management_accounts->listManagementAccounts( [ 'max-results' => $max_results, 'start-index' => $start_index ] );</span>
    登入後複製
    登入後複製

    <span>// app/src/GA_Service.php
    </span><span>public function properties( $account_id ){
    </span>	<span>if( !$this->isLoggedIn() ){
    </span>		<span>//login
    </span>	<span>}
    </span>
    	<span>try {
    </span>		<span>$service = new Google_AnalyticsService($this->client);
    </span>		<span>$man_properties = $service->management_webproperties->listManagementWebproperties($account_id);
    </span>		<span>$properties = [];
    </span>
    		<span>foreach ($man_properties['items'] as $property) {
    </span>			<span>$properties[] = [ 'id' => $property['id'], 'name' => $property['name'] ];
    </span>		<span>}//foreach
    </span>
    		<span>return json_encode($properties);
    </span>	<span>} catch (Google_ServiceException $e) {
    </span>		<span>return Response<span>::</span>json([
    </span>			<span>'status'	=> 0,
    </span>			<span>'code'		=> 3,
    </span>			<span>'message'	=> $e->getMessage()
    </span>		<span>]);
    </span>	<span>}//catch
    </span>
    <span>}//properties
    </span>
    <span>// app/controllers/HomeController.php
    </span><span>public function properties( $account_id ){
    </span>	<span>$properties = $this->ga->properties( $account_id );
    </span>
    	<span>return $properties;
    </span><span>}//properties
    </span>	
    	
    <span>// app/routes.php
    </span><span>Route<span>::</span>get( '/properties/{account_id}', [ 'uses' => 'HomeController@properties' ] )->where('account_id', '\d+');</span>
    登入後複製
    我們需要更新我們的homecontroller@index以顯示主頁視圖。

    從屏幕截圖中可以看到

    >,當用戶選擇一個帳戶時,我們異步更改屬性和視圖。為了實現這一目標,我編寫了一些簡單的JS,您可以在最終的存儲庫中檢查一下。 使用php的Google Analytics(分析)API V3:獲取數據>

    >報告API

    通過提供所選視圖,指標和維度,我們可以獲得有關用戶和交互的詳細統計信息。用戶提交後的結果類似於:

    >
    [
        {
            id: "UA-52317977-1",
            name: "Prop1"
        },
        {
            id: "UA-52317977-2",
            name: "Prop1"
        }
    ]
    登入後複製

    我們的ga_service ::報告接受四個參數:視圖ID,開始日期和結束日期以及一系列指標。

    google無法返回您的所有舊數據 - 而是我們提供了一個開始日期和結束日期。在我的示例中,我詢問了上個月的結果。

    第三個參數是我們從用戶選擇中已經擁有的指標列表。

    >

    第四個可選參數是選項的數組。
    - 最大值:結果的最大數量。 (我們使用10加速響應)。
    - 尺寸:逗號分開的值列表。 (GA:Country,GA:City)
    - 過濾器:逗號分開的規則列表要應用於結果。 在此示例中,我們將美國排除在尺寸列表之外,僅顯示大於100的頁面瀏覽量。
    > - 段:要應用於數據的高級段ID。
    - 排序:訂單結果通過維度或指標。可以結合多個維度和指標。 (ga:country,-ga:pageViews = ga:ga:country上升和ga:pageviews降落。
    - 開始索引:可用於分頁。

    <span>// app/src/GA_Service.php
    </span><span>public function accounts(){
    </span>	<span>if( !$this->isLoggedIn() ){
    </span>		<span>//login
    </span>	<span>}
    </span>	
    	<span>$service = new Google_AnalyticsService($this->client);
    </span>	<span>$man_accounts = $service->management_accounts->listManagementAccounts();
    </span>	<span>$accounts = [];
    </span>
    	<span>foreach ($man_accounts['items'] as $account) {
    </span>		<span>$accounts[] = [ 'id' => $account['id'], 'name' => $account['name'] ];
    </span>	<span>}
    </span>
    	<span>return $accounts;
    </span><span>}//accounts
    </span>
    <span>// app/controllers/HomeController.php
    </span><span>public function accounts(){
    </span>	<span>$accounts = $this->ga->accounts();
    </span>
    	<span>return $accounts;
    </span><span>}//accounts
    </span>
    <span>// app/routes.php
    </span><span>Route<span>::</span>get('/accounts', 'HomeController@accounts');</span>
    登入後複製
    登入後複製
    登入後複製
    >調用GET GOGEE_ANALYTICSSERVICE :: GET方法後,我們使用結果項目,列標題和總結果的列表將結果作為表輸出。 >

    使用php的Google Analytics(分析)API V3:獲取數據

    擴展演示

    現在,讓我們看看如何通過過濾器,分類和段擴展演示。

    >

    >過濾

    >過濾器是從返回結果中排除某些數據的一種方法。他們採用以下形式:

    <span>$this->client->setUseObjects(true);</span>
    登入後複製
    登入後複製
    登入後複製
      ga:列:維度或公制ID(例如:GA:country)
    • >運算符:操作員取決於度量或尺寸列ID的選擇,請檢查docs以獲取運算符列表。
    • 值:該值可以是數字,字符串或正則條件。
    • >
    >您可以組合多個過濾器:您可以將逗號(,)用作操作員或semi-colon(;)作為一個和運算符。

    默認情況下,Google Analytics(分析)將您的所有數據組在一個稱為所有會話的組中。但是,您始終可以從內置段中選擇或根據您的需求創建一個新的。您可以按推薦,設備類型,年齡,性別等進行分組數據。

    >

    >您可以通過在可用段列表中添加新的選擇元素來擴展演示,並如前所述將ID傳遞給GET方法。

    >您可以訪問 /片段頁面以查看具有其ID的可用段的列表,您當然可以將其作為一個選項,如我們之前所看到的。
    <span>{
    </span>    kind<span>: "analytics#accounts",
    </span>    <span>username: "me@mail.com",
    </span>    <span>totalResults: 3,
    </span>    <span>startIndex: 1,
    </span>    <span>itemsPerPage: 1000,
    </span>    <span>items: [
    </span>        <span>{
    </span>            id<span>: "4449308",
    </span>            <span>kind: "analytics#account",
    </span>            <span>selfLink: "https://www.googleapis.com/analytics/v3/management/accounts/4449308",
    </span>            <span>name: "me@mail.com",
    </span>            <span>permissions: {
    </span>                effective<span>: [
    </span>                    <span>"COLLABORATE",
    </span>                    <span>"EDIT",
    </span>                    <span>"MANAGE_USERS",
    </span>                    <span>"READ_AND_ANALYZE"
    </span>                <span>]
    </span>            <span>},
    </span>            <span>created: "2013-10-01T11:04:28.478Z",
    </span>            <span>updated: "2013-10-01T11:04:28.478Z",
    </span>            <span>childLink: {
    </span>                type<span>: "analytics#webproperties",
    </span>                <span>href: "https://www.googleapis.com/analytics/v3/management/accounts/4449308/webproperties"
    </span>            <span>}
    </span>        <span>}
    </span>    <span>]
    </span><span>}</span>
    登入後複製
    登入後複製
    登入後複製
    總結

    Google Analytics(分析)API非常靈活,並提供了許多功能,但是該文檔尚未完成,並且沒有提供良好的使用示例。通過挖掘源代碼並測試可能性和限制,您可以獲得更多。

    在本系列中,我們專注於Google Analytics(分析)的基本用法,但是您可以通過Google Analytics(分析儀表板)的選項擴展演示。

    >

    您可以檢查本教程的源代碼的最終存儲庫。

    >問題?評論?讓我知道!

    經常詢問有關使用Google Analytics API V3與php

    使用Google Analytics(常見問題解答)

    >如何開始使用PHP?

    的Google Analytics(分析)API V3開始使用PHP的Google Analytics API V3,您首先需要在Google Developers Console中創建一個項目。創建項目後,啟用Google Analytics(分析)API。然後,為API創建憑證。您將收到客戶ID和客戶端的秘密,您將使用它來通過Google來驗證您的應用程序。之後,您可以使用PHP開始向API提出請求。您需要擁有一個Google帳戶並訪問要檢索的Google Analytics(分析數據)。您還需要在服務器上安裝PHP,並且對PHP編程的基本了解。

    >如何使用PHP使用Google對我的應用程序進行身份驗證我的應用程序?創建API憑據時,您需要使用您收到的客戶ID和客戶端秘密。您可以使用這些憑據來獲取訪問令牌,然後您可以使用該憑據來驗證您的API請求。

    如何使用php?

    從Google檢索Google Analytics(分析)從Google檢索數據。使用PHP分析,您需要向Google Analytics(Analytics)API提出GET請求。您可以指定要在請求參數中應用的指標,尺寸和過濾器。 API將以JSON格式返回請求的數據,然後您可以在應用程序中解析並使用。

    >

    >在使用Google Analytics(分析Analytics API V3)使用PHP?

    時,我該如何處理錯誤。 Google Analytics(分析)API V3具有PHP,出於各種原因可能發生錯誤,例如無效的請求參數或身份驗證問題。您可以通過檢查API返回的HTTP狀態代碼和錯誤消息來處理這些錯誤。這將為您提供有關出了什麼問題以及如何解決的信息。

    >我可以使用php的Google Analytics API V3跟踪實時數據嗎?

    是的,您可以使用Google Analytics(分析)帶有PHP的API V3跟踪實時數據。 API提供了一個實時報告API,您可以使用該API檢索實時數據,例如網站上的活動用戶數量。

    >

    >在使用php的Google Analytics API V3時如何過濾數據?

    >您可以通過在API請求中指定過濾器參數時使用Google Analytics API V3過濾數據。這些參數允許您限制API返回的數據以滿足特定條件。

    我可以使用帶有PHP的Google Analytics API V3從多個Google Analytics Carescect檢索數據嗎?可以將Google Analytics(分析)API V3與PHP一起從多個Google Analytics(分析)帳戶中檢索數據。您只需要分別對每個帳戶進行身份驗證,並為每個帳戶單獨提出API請求。

    >在使用php的Google Analytics API V3使用PHP?

    使用Google Analytics(分析分析)API API V3與PHP使用PHP時,我如何分頁結果。在您的API請求中。這些參數允許您指定要檢索的結果範圍。通過在API請求中指定排序參數,V3帶有PHP。這些參數允許您根據特定的指標或尺寸訂購API返回的數據。

    >

以上是使用php的Google Analytics(分析)API V3:獲取數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板