sudo / laravel-analytics
一个用于获取Google Analytics数据的Laravel包。
Requires
- php: ^7.2
- google/analytics-data: ^0.9.4
- google/apiclient: ^2.0
- laravel/framework: ~5.8.0
- madewithlove/illuminate-psr-cache-bridge: ^1.0
- nesbot/carbon: ^1.21 | ^2.0
Requires (Dev)
- league/flysystem: >=1.0.8
- mockery/mockery: 1.0
- orchestra/testbench: ~3.8.0
This package is not auto-updated.
Last update: 2024-09-26 06:55:43 UTC
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 sudo/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 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
。
顶级国家
public function fetchTopCountries(Period $period, int $maxResults = 10): Collection
该函数返回一个包含键screenPageViews
和country
的数组的Collection
。
顶级操作系统
public function fetchTopOperatingSystems(Period $period, int $maxResults = 10): Collection
该函数返回一个包含键screenPageViews
和operatingSystem
的数组的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对象。
数组 $offset
:默认为0,您可以与$limit参数结合使用来实现分页。
布尔值 $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
变更日志
请查看变更日志,了解最近有哪些变化。
贡献
有关详细信息,请参阅贡献指南。
安全
如果您发现有关安全性的bug,请通过邮件security@spatie.be联系,而不是使用问题跟踪器。
致谢
特别感谢Caneco为标志✨
许可协议
MIT许可协议(MIT)。有关更多信息,请参阅许可文件。