p1ho/google-analytics-api

该包已被废弃且不再维护。没有建议的替代包。

Google PHP API 客户端的抽象,以便简单、优化地请求 Google 报告 API v4

1.0.2 2019-04-17 14:48 UTC

This package is auto-updated.

Last update: 2021-07-17 20:43:26 UTC


README

Build Status Coverage Status

目录

简介

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 $dimensionFiltersarray $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.covbuild/logs/clover.xml合并。

  • 运行$ composer style-fix-download将最新的php-cs-fixer文件下载到项目目录。之后,您可以通过运行$ composer style-fix来自动修复所有代码的风格。

  • 尚未开发缓存机制,预计用户将根据其使用情况来处理。

贡献者

p1ho