gnahotelsolutions / laravel-analytics
一个用于获取 Google Analytics 数据的 Laravel 扩展包。
Requires
- php: ^7.3|^8.0|^8.1
- brick/math: ^0.9.3
- gnahotelsolutions/laravel-package-tools: ^1.0
- google/analytics-data: ^0.9.4
- laravel/framework: ^8.12
- nesbot/carbon: ^2.66
- symfony/cache: ^5.0
Requires (Dev)
- league/flysystem: ^1.1
- mockery/mockery: ^1.5
- orchestra/testbench: ^6.0
- pestphp/pest: ^1.0
- spatie/ray: ^1.37
README
从 Google Analytics 获取数据
使用此扩展包,您可以轻松地从 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));
大多数方法将返回一个包含结果的 \Illuminate\Support\Collection
对象。
支持我们
我们在创建一流的开放源代码包上投入了大量的资源。您可以通过购买我们的付费产品之一来支持我们。
我们非常感谢您从家乡给我们寄来明信片,说明您正在使用我们的哪些包。您可以在我们的联系页面上找到我们的地址。我们将在我们的虚拟明信片墙上发布所有收到的明信片。
安装
此扩展包可以通过 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('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 Analytics 通信的凭据
获取凭据
您首先需要获取一些凭据来使用 Google API。我假设您已经创建了一个 Google 账户并已登录。访问 Google API 站点 并选择或创建一个项目。
接下来,我们必须指定项目可以使用的 API。转到 API 图书馆并搜索“Google Analytics Data API”。
现在,您已经创建了一个可以访问 Analytics API 的项目,是时候下载包含这些凭据的文件了。点击侧边栏中的“凭据”。您需要创建一个“服务帐户密钥”。
在下一屏幕上,您可以给服务帐户起一个名字。您想叫什么都可以。在服务帐户 ID 中,您将看到一个电子邮件地址。我们将在本指南的稍后部分使用此电子邮件地址。
转到您创建的服务帐户的详细信息页面,并选择“密钥”,从“添加密钥”下拉菜单中选择“创建新密钥”。
选择“JSON”作为密钥类型,然后点击“创建”以下载 JSON 文件。
将 JSON 保存到您的 Laravel 项目中,位置在扩展包配置文件的 service_account_credentials_json
键指定的位置。由于 JSON 文件可能包含敏感信息,我不建议将其提交到您的 Git 仓库中。
授予 Analytics 属性的权限
我假设您已经在Analytics网站上创建了Analytics账户,并正在使用新的GA4属性。
首先,您需要知道您的属性ID。在Analytics中,转到“设置”>“属性设置”。在这里,您可以复制您的属性ID。将此值用于您的.env文件中的ANALYTICS_PROPERTY_ID
键。
现在,我们需要授权您创建的服务账户。转到属性管理部分的“属性访问管理”。在右上角点击加号以添加新用户。
在此屏幕上,您可以为上一步中下载的json文件中的client_email
键中的电子邮件地址授予访问权限。分析师角色就足够了。
使用方法
安装完成后,您可以轻松检索Analytics数据。几乎所有方法都将返回一个Illuminate\Support\Collection
实例。
以下是使用示例
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
是一个包含具有date
、visitors
和pageViews
键的数组的Collection
。
如果您想更精确地控制要获取数据的周期,可以向周期对象传递startDate
和endDate
。
$startDate = Carbon::now()->subYear(); $endDate = Carbon::now(); Period::create($startDate, $endDate);
提供的方法
访问者和页面浏览量
public function fetchVisitorsAndPageViews(Period $period): Collection
该函数返回一个包含具有activeUsers
、screenPageViews
和pageTitle
键的数组的Collection
。
按日期访问者和页面浏览量
public function fetchVisitorsAndPageViewsByDate(Period $period): Collection
该函数返回一个包含具有date
、activeUsers
、screenPageViews
和pageTitle
键的数组的Collection
。
总访问者和页面浏览量
public function fetchTotalVisitorsAndPageViews(Period $period): Collection
该函数返回一个包含具有date
、date
、visitors
和pageViews
键的数组的Collection
。
访问量最高的页面
public function fetchMostVisitedPages(Period $period, int $maxResults = 20): Collection
该函数返回一个包含具有fullPageUrl
、pageTitle
和screenPageViews
键的数组的Collection
。
顶级推荐者
public function fetchTopReferrers(Period $period, int $maxResults = 20): Collection
该函数返回一个包含具有screenPageViews
和pageReferrer
键的数组的Collection
。
用户类型
public function fetchUserTypes(Period $period): Collection
该函数返回一个包含具有activeUsers
和newVsReturning
键的Collection
,这些键可以是new
或returning
。
顶级浏览器
public function fetchTopBrowsers(Period $period, int $maxResults = 10): Collection
该函数返回一个包含具有screenPageViews
和browser
键的数组的Collection
。
所有其他Google Analytics查询
对于所有其他查询,您可以使用get
函数。
public function get(Period $period, array $metrics, array $dimensions = [], int $limit = 10, array $orderBy = [], FilterExpression $dimensionFilter = null): Collection
以下是一些关于您可以传递的参数的额外信息
Period $period
:一个表示查询的起始和结束日期的Spatie\Analytics\Period对象。
array $metrics
:要检索的度量数组。您可以在这里找到所有度量的列表。
array $dimensions
:要按其分组的结果的维度数组。您可以在这里找到所有维度的列表。
int $limit
:返回的最大结果数。
array $orderBy
:按其排序结果的OrderBy对象。
array $offset
:默认为0,您可以使用此参数与$limit参数结合使用来实现分页。
例如
$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', ]), ]), ]);
测试
使用以下命令运行测试:
vendor/bin/pest
变更日志
请参阅变更日志获取更多关于最近更改的信息。
贡献
请参阅贡献指南以获取详细信息。
安全
如果您发现有关安全性的错误,请发送电子邮件至security@spatie.be,而不是使用问题跟踪器。
鸣谢
特别感谢Caneco为我们的标志✨
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。