使用此套件,您可以輕鬆地從 Google Analytics 檢索資料。
以下是所提供方法的一些範例:
use Spatie Analytics Facades Analytics ;
use Spatie Analytics Period ;
/ / fetch the most visited pages for today and the past week
Analytics:: fetchMostVisitedPages (Period:: days ( 7 ));
/ / fetch visitors and page views for the past week
Analytics:: fetchVisitorsAndPageViews (Period:: days ( 7 ));
大多數方法將傳回包含結果的IlluminateSupportCollection
物件。
我們投入了大量資源來創建一流的開源套件。您可以透過購買我們的一款付費產品來支持我們。
我們非常感謝您從家鄉寄給我們一張明信片,並註明您正在使用我們的哪種套餐。您可以在我們的聯絡頁面上找到我們的地址。我們在虛擬明信片牆上發布所有收到的明信片。
該軟體包可以透過 Composer 安裝。
composer require spatie/laravel-analytics
或者,您可以使用以下命令發布此套件的設定檔:
php artisan vendor:publish --tag= " analytics-config "
以下設定檔將發佈在config/analytics.php
中
return [
/ *
* The property id of which you want to display data .
* /
' property_id ' => env ( ' ANALYTICS_PROPERTY_ID ' ),
/ *
* Path to the client secret json file . Take a look at the README of this package
* to learn how to get this file . You can also pass the credentials as an array
* instead of a file path .
* /
' service_account_credentials_json ' => storage_path ( ' app/analytics/service-account-credentials.json ' ),
/ *
* The amount of minutes the Google API responses will be cached .
* If you set this to zero , the responses won 't be cached at all.
*/
' cache_lifetime_in_minutes ' => 60 * 24 ,
/ *
* Here you may configure the "store" that the underlying Google_Client will
* use to store it 's data. You may also add extra parameters that will
* be passed on setCacheConfig (see docs for google-api-php-client).
*
* Optional parameters: "lifetime", "prefix"
*/
' cache ' => [
' store ' => ' file ' ,
],
];
您需要做的第一件事是獲取一些憑證以使用 Google API。我假設您已經建立了 Google 帳戶並已登入。
接下來我們必須指定項目可能使用哪些 API。前往 API 庫並蒐索“Google Analytics Data API”。
選擇啟用以啟用 API。
現在您已經建立了一個可以存取 Analytics API 的項目,是時候下載包含這些憑證的檔案了。按一下側邊欄中的“憑證”。您需要建立一個「服務帳戶金鑰」。
在下一個畫面上,您可以為服務帳戶命名。您可以將其命名為任何您喜歡的名稱。在服務帳戶 ID 中,您將看到一個電子郵件地址。我們稍後將在本指南中使用此電子郵件地址。
前往您建立的服務帳戶的詳細資料畫面並選擇“金鑰”,從“新增金鑰”下拉清單中選擇“建立新金鑰”。
選擇“JSON”作為金鑰類型,然後按一下“建立”以下載 JSON 檔案。
將 json 儲存在 Laravel 專案中此套件的設定檔的service_account_credentials_json
鍵中指定的位置。因為 json 檔案包含潛在的敏感訊息,所以我不建議將其提交到您的 git 儲存庫。
我假設您已在 Google Analytics(分析)網站上建立了 Google Analytics(分析)帳戶並正在使用新的 GA4 媒體資源。
首先,您需要知道您的財產 ID。在 Analytics 中,前往設定 > 屬性設定。您可以在這裡複製您的房產 ID。將此值用作 .env 檔案中的ANALYTICS_PROPERTY_ID
鍵。
現在我們需要授予對您建立的服務帳戶的存取權限。轉到屬性管理部分中的“屬性存取管理”。點擊右上角的加號以新增使用者。
在此畫面上,您可以授予在上一個步驟中下載的 json 檔案中的client_email
鍵中找到的電子郵件地址的存取權。分析師角色就夠了。
安裝完成後,您可以輕鬆檢索 Analytics 資料。幾乎所有方法都會傳回IlluminateSupportCollection
實例。
以下是一些使用句點的範例
use Spatie Analytics Facades Analytics ;
/ / retrieve visitors and page view data for the current day and the last seven days
$ analyticsData = Analytics:: fetchVisitorsAndPageViews (Period:: days ( 7 ));
/ / retrieve visitors and page views since the 6 months ago
$ analyticsData = Analytics:: fetchVisitorsAndPageViews (Period:: months ( 6 ));
$analyticsData
是一個Collection
,其中每個項目都是一個包含鍵date
、 visitors
和pageViews
的陣列
如果您想要更好地控制要取得資料的時間段,可以將startDate
和endDate
傳遞給 period 物件。
$ startDate = Carbon:: now ()-> subYear ();
$ endDate = Carbon:: now ();
Period:: create ( $ startDate , $ endDate );
public function fetchVisitorsAndPageViews( Period $ period ): Collection
此函數傳回一個Collection
,其中每個項目都是一個包含鍵activeUsers
、 screenPageViews
和pageTitle
的陣列。
public function fetchVisitorsAndPageViewsByDate( Period $ period ): Collection
此函數傳回一個Collection
其中每個項目都是一個包含鍵date
、 activeUsers
、 screenPageViews
和pageTitle
的陣列。
public function fetchTotalVisitorsAndPageViews( Period $ period ): Collection
此函數傳回一個Collection
其中每個項目都是一個包含鍵date
、 date
、 visitors
和pageViews
的陣列。
public function fetchMostVisitedPages( Period $ period , int $ maxResults = 20 ): Collection
此函數傳回一個Collection
,其中每個項目都是一個包含鍵fullPageUrl
、 pageTitle
和screenPageViews
的陣列。
public function fetchTopReferrers( Period $ period , int $ maxResults = 20 ): Collection
此函數傳回一個Collection
,其中每個項目都是一個包含screenPageViews
和pageReferrer
鍵的陣列。
public function fetchUserTypes( Period $ period ): Collection
該函數傳回一個Collection
,其中每個項目都是一個數組,其中包含鍵activeUsers
和newVsReturning
,它們可以等於new
或returning
。
public function fetchTopBrowsers( Period $ period , int $ maxResults = 10 ): Collection
此函數傳回一個Collection
,其中每個項目都是一個包含screenPageViews
和browser
鍵的陣列。
public function fetchTopCountries( Period $ period , int $ maxResults = 10 ): Collection
此函數傳回一個Collection
,其中每個項目都是一個包含screenPageViews
和country
鍵的陣列。
public function fetchTopOperatingSystems( Period $ period , int $ maxResults = 10 ): Collection
此函數傳回一個Collection
,其中每個項目都是一個包含screenPageViews
和operatingSystem
鍵的陣列。
對於所有其他查詢,您可以使用get
函數。
public function get( Period $ period , array $ metrics , array $ dimensions = [], int $ limit = 10 , array $ orderBy = [], FilterExpression $ dimensionFilter = null , FilterExpression $ metricFilter = null ): Collection
以下是有關您可以傳遞的參數的一些額外資訊:
Period $period
:一個 SpatieAnalyticsPeriod 對象,用於指示查詢的開始和結束日期。
array $metrics
:要檢索的指標陣列。您可以在此處找到所有指標的清單。
array $dimensions
:用於對結果進行分組的維度數組。您可以在此處找到所有尺寸的清單。
int $limit
:傳回結果的最大數量。
array $orderBy
:用於對結果進行排序的 OrderBy 物件。
array $offset
:預設為 0,您可以將其與 $limit 參數結合使用來進行分頁。
bool $keepEmptyRows
:如果為 false 或未指定,則不會傳回所有指標等於 0 的每一行。如果為 true,則如果過濾器未單獨刪除這些行,則會傳回這些行。
例如:
$ orderBy = [
OrderBy:: dimension ( ' date ' , true ),
OrderBy:: metric ( ' pageViews ' , false ),
];
FilterExpression $dimensionFilter
:過濾結果以僅包含特定維度值。您可以在這裡找到更多詳細資訊。
例如:
use Google Analytics Data V1beta Filter ;
use Google Analytics Data V1beta FilterExpression ;
use Google Analytics Data V1beta Filter StringFilter ;
use Google Analytics Data V1beta Filter StringFilter MatchType ;
$ dimensionFilter = new FilterExpression ([
' filter ' => new Filter ([
' field_name ' => ' eventName ' ,
' string_filter ' => new StringFilter ([
' match_type ' => MatchType:: EXACT ,
' value ' => ' click ' ,
]),
]),
]);
FilterExpression $metricFilter
:聚合報表行後套用的篩選器,類似 SQLhaving-clause。此過濾器中不能使用尺寸。您可以在這裡找到更多詳細資訊。
例如:
use Google Analytics Data V1beta Filter ;
use Google Analytics Data V1beta FilterExpression ;
use Google Analytics Data V1beta Filter NumericFilter ;
use Google Analytics Data V1beta NumericValue ;
use Google Analytics Data V1beta Filter NumericFilter Operation ;
$ metricFilter = new FilterExpression ([
' filter ' => new Filter ([
' field_name ' => ' eventCount ' ,
' numeric_filter ' => new NumericFilter ([
' operation ' => Operation:: GREATER_THAN ,
' value ' => new NumericValue ([
' int64_value ' => 3 ,
]),
]),
]),
]);
## Testing
Run the tests with:
``` bash
vendor/bin/pest
請參閱變更日誌以了解最近變更的更多資訊。
詳細資訊請參閱貢獻。
如果您發現有關安全的錯誤,請發送郵件至 [email protected],而不是使用問題追蹤器。
特別感謝 Caneco 的標誌
麻省理工學院許可證 (MIT)。請參閱許可證文件以獲取更多資訊。