spatie / laravel-analytics
一个用于获取 Google Analytics 数据的 Laravel 扩展包。
Requires
- php: ^8.1
- google/analytics-data: ^0.9.4
- laravel/framework: ^10.0|^11.0
- nesbot/carbon: ^2.66|^3.1.0
- spatie/laravel-package-tools: ^1.13.7
- symfony/cache: ^6.0|^7.0
Requires (Dev)
- league/flysystem: ^3.0
- mockery/mockery: ^1.5
- orchestra/testbench: ^8.0|^9.0
- pestphp/pest: ^2.0
- spatie/ray: ^1.37
- dev-main
- 5.4.0
- 5.3.0
- 5.2.1
- 5.2.0
- 5.1.0
- 5.0.3
- 5.0.2
- 5.0.1
- 5.0.0
- 4.1.1
- 4.1.0
- 4.0.1
- 4.0.0
- 3.11.0
- 3.10.2
- 3.10.1
- 3.10.0
- 3.9.0
- 3.8.1
- 3.8.0
- 3.7.0
- 3.6.x-dev
- 3.6.3
- 3.6.2
- 3.6.1
- 3.6.0
- 3.5.0
- 3.4.1
- 3.4.0
- 3.3.0
- 3.2.0
- 3.1.0
- v3.0.x-dev
- 3.0.1
- 3.0.0
- v2.x-dev
- 2.4.0
- 2.3.1
- 2.3.0
- 2.2.2
- 2.2.0
- 2.1.0
- 2.0.0
- 1.4.1
- 1.4.0
- 1.3.1
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 0.0.1
- dev-analytics-api-v4
This package is auto-updated.
Last update: 2024-09-22 09:33:54 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 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 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 属性权限
我假设您已经在分析网站上创建了分析账户,并正在使用新的GA4属性。
首先,您需要知道您的属性ID。在分析中,转到“设置”>“属性设置”。在这里,您可以复制您的属性ID。将此值用于您的.env文件中的ANALYTICS_PROPERTY_ID
密钥。
现在我们需要给予您创建的服务账户访问权限。转到属性管理部分的“属性访问管理”。在右上角点击加号添加新用户。
在此屏幕上,您可以为上一步骤中下载的json文件中的client_email
密钥中找到的电子邮件地址授予访问权限。分析师角色就足够了。
用法
安装完成后,您可以轻松检索分析数据。几乎所有方法都会返回一个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, FilterExpression $metricFilter = null): Collection
以下是关于您可以传递的参数的一些额外信息
Period $period
:一个Spatie\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', ]), ]), ]);
FilterExpression $metricFilter
:在聚合报告的行之后应用的筛选,类似于SQL的HAVING子句。在此筛选中不能使用维度。更多信息请参考这里。
例如
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许可(MIT)。有关更多信息,请参阅许可文件。