使用此包,您可以轻松地从 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 帐户并已登录。前往 Google API 网站并选择或创建一个项目。
接下来我们必须指定项目可能使用哪些 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)。请参阅许可证文件以获取更多信息。