nguyendachuy / laravel-analytics
一个用于获取Google Analytics数据的Laravel包。已编辑以支持较低版本的PHP
Requires
- php: >=7.0
- google/analytics-data: ^0.9.4
This package is auto-updated.
Last update: 2024-08-30 01:20:55 UTC
README
从Google Analytics获取数据
使用此包可以轻松地从Google Analytics获取数据。
以下是一些提供的方法示例
use NguyenHuy\Analytics\Facades\Analytics; use NguyenHuy\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 nguyendachuy/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键中的电子邮件地址授权。分析师角色就足够了。
用法
安装完成后,您可以轻松地检索分析数据。几乎所有方法都会返回一个 Illuminate\Support\Collection 实例。
以下是一些使用时期的示例
use NguyenHuy\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。
$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 的数组。
所有其他 Google Analytics 查询
对于所有其他查询,您可以使用 get 函数。
public function get(Period $period, array $metrics, array $dimensions = [], int $limit = 10, array $orderBy = [], FilterExpression $dimensionFilter = null): Collection
以下是关于您可以传递的参数的一些额外信息
Period $period:一个 NguyenHuy\Analytics\Period 对象,用于指示查询的开始和结束日期。
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', ]), ]), ]);
测试
使用以下命令运行测试
vendor/bin/pest
变更日志
请参阅 CHANGELOG 以获取有关最近更改的更多信息。
贡献
请参阅 CONTRIBUTING 以获取详细信息。
致谢
许可协议
MIT 许可协议 (MIT)。请参阅 许可文件 以获取更多信息。
