p1ho / google-analytics-api
Google PHP API 客户端的抽象,以便简单、优化地请求 Google 报告 API v4
Requires
- google/apiclient: ^2.2
Requires (Dev)
- php-coveralls/php-coveralls: ^2.1
- phpunit/phpcov: ^5.0
- phpunit/phpunit: ^7
This package is auto-updated.
Last update: 2021-07-17 20:43:26 UTC
README
目录
简介
Google 拥有一个 PHP API 库,允许从 PHP 执行环境中发送请求到 Google API,包括 报告 API v4,该 API 允许访问 Google Analytics 数据。然而,尽管该库功能强大,但使用起来可能不太直观,因为用户需要从库中创建对象(Google 的 PHP 教程),这需要在文档中查找很多信息。
作为一个必须广泛使用该库的人,我希望有一个更直观的东西。具体来说,如果我已经熟悉 Google Analytics 和可用的 维度和度量,我应该能够立即发出请求并获取我的数据;因此,这个包就产生了。
特性
-
验证:如果您在 API 请求中输入了错误,Google 将返回一个 400 错误请求。在这种情况下,您没有获取到数据,但根据我的经验,这仍然会消耗您的 每日配额。此包使用来自 元数据 API 的缓存结果进行离线验证。(注意:一些维度和度量不能同时查询,目前此验证器未解决该问题)
-
优化请求:Google API 迫使用户分解请求
这意味着可能很难聚合为 batchGet() 调用所需的请求。如果做得不正确,这可能导致空间浪费(例如,在子请求中具有低于 10 的度量计数)。此包优化了构建
batchGet()请求的打包过程,以确保单个请求中不浪费空间。 -
直观的报告:就像这个包帮助您聚合请求一样,它还重新组织了 Google 返回的碎片化报告,使其结构最小化和直观。有关详细信息,请参阅 报告结构。
要求
-
创建 服务帐户 并将下载的
json文件存储在安全的地方。这是调用 Google API 所必需的。 -
将创建的服务帐户邮箱添加到您的Google Analytics视图中。您可以通过访问您的分析主页 → 管理员 → 用户管理来实现。
-
注意:如果您觉得以上内容有些混乱,有一个非常详尽的教程介绍了旧版Google界面。
安装
此软件包可通过Composer获取,并通过输入以下命令进行安装:
$ composer require p1ho/google-analytics-api
使用方法
<?php require_once __DIR__ . '/vendor/autoload.php'; use P1ho\GoogleAnalyticsAPI\Client; $googleAnalytics = new Client('path/to/your/credentials/json'); // this is the view id on your Google Analytics page that represents the website. $viewId = '12345678'; // dates can be anything that can be parsed by strtotime() $startDate = 'yesterday'; $endDate = 'today'; /* For complete listing of dimensions and metrics, see https://developers.google.com/analytics/devguides/reporting/core/dimsmets */ // no longer than 7 $dimensions = [ 'ga:city', 'ga:cityId' ]; // no longer than 50 $metrics = [ 'ga:users', 'ga:sessions' ]; // queries and get organized data $report = $googleAnalytics->getData($viewId, $startDate, $endDate, $dimensions, $metrics);
如果需要,您还可以添加一个过滤器表达式
<?php // your code from before $filtersExp = "your-filter-expression-here"; $report = $googleAnalytics ->getData($viewId, $startDate, $endDate, $dimensions, $metrics, $filtersExp);
注意:过滤器表达式是我仍然需要ga:前缀的原因,如果我移除了它,可能会使编写过滤器表达式变得混乱。我也可以让getData()方法接收可选参数array $dimensionFilters和array $metricFilters,但即使这样也可能导致混淆。如果这对任何人有用,请提交一个问题并告诉我您的偏好以及原因。
报告结构
{ // how much of daily quota was spent "requestCost": 1, // The request that was sent to Google API "request": { "viewId": "12345678", "startDate": "yyyy-mm-dd", "endDate": "yyyy-mm-dd", "dimensions": [ "dimension", "dimension" ], "metrics": [ "metric", "metric" ], "filtersExp": "specified-filters-expression" }, // The returned report "report": { // the summed metric values in the date range you specified "totals": { "metric": "total-value", "metric": "total-value" }, // each row contains the metric values with a unique dimension combination // If all metric values for a row are 0, the row will not display // Any metric within a row with a value of 0 will not display "rows": [ { "dimensions": { "dimension": "value", "dimension": "value" }, "metrics": { "metric": "value", "metric": "value" } }, { "dimensions": { "dimension": "value", "dimension": "value" }, "metrics": { "metric": "value", "metric": "value" } } ] } }
注意:为了最小化内存使用,不会显示空行和0指标值。由于用户有用于请求的指标列表,因此可以推断出0。
开发
-
使用
$ composer test运行所有测试(在Windows上使用$ composer test-win)。要启用覆盖率分析,需要一个代码覆盖率驱动程序。我在Windows上开发时使用了Xdebug。之后,运行$ composer phpcov-merge(在Windows上使用$ composer phpcov-merge-win),按照php-coveralls文档中的说明将build/cov/coverage.cov与build/logs/clover.xml合并。 -
运行
$ composer style-fix-download将最新的php-cs-fixer文件下载到项目目录。之后,您可以通过运行$ composer style-fix来自动修复所有代码的风格。 -
尚未开发缓存机制,预计用户将根据其使用情况来处理。
贡献者
![]() |
|---|
| p1ho |
