Created
December 15, 2019 12:41
-
-
Save itchief/e8f495a59a5872dc03ec4759ce1180fb to your computer and use it in GitHub Desktop.
How to get pageviews of resource from Google Analytics Reporting API v4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Загрузим PHP клиентскую библиотеку для Google API. | |
require_once __DIR__ . '/vendor/autoload.php'; | |
$analytics = initializeAnalytics(); | |
$response = getReport($analytics); | |
printResults($response); | |
/** | |
* Инициализация сервисного объекта Analytics Reporting API V4. | |
* | |
* @return авторизованный сервисный объект Analytics Reporting API V4. | |
*/ | |
function initializeAnalytics() | |
{ | |
// здесь нужно указать имя JSON-файла, содержащего сгенерированный ключ | |
$KEY_FILE_LOCATION = __DIR__ . '/service-account-credentials.json'; | |
// Создание и конфигурирование нового клиентского объекта. | |
$client = new Google_Client(); | |
$client->setApplicationName("Views page"); | |
$client->setAuthConfig($KEY_FILE_LOCATION); | |
$client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']); | |
$analytics = new Google_Service_AnalyticsReporting($client); | |
return $analytics; | |
} | |
/** | |
* запрос через Analytics Reporting API V4. | |
* | |
* @param авторизованный сервисный объект Analytics Reporting API V4. | |
* @return ответ Analytics Reporting API V4. | |
*/ | |
function getReport($analytics) { | |
// здесь нужно указать значение своего VIEW_ID | |
$VIEW_ID = "<REPLACE_WITH_VIEW_ID>"; | |
// диапазон дат | |
$dateRange = new Google_Service_AnalyticsReporting_DateRange(); | |
$dateRange->setStartDate("2014-01-01"); // старт проекта | |
$dateRange->setEndDate("today"); | |
// задание метрики, равное ga:pageviews | |
$pageviews = new Google_Service_AnalyticsReporting_Metric(); | |
$pageviews->setExpression("ga:pageviews"); | |
$pageviews->setAlias("pageviews"); | |
// создание фильтра по параметру ga:pagePath | |
$dimensionFilter = new Google_Service_AnalyticsReporting_DimensionFilter(); | |
$dimensionFilter->setDimensionName('ga:pagePath'); | |
$dimensionFilter->setOperator('EXACT'); | |
$dimensionFilter->setExpressions('/html-and-css/css-selector'); | |
// создание группы фильтров по параметру | |
$dimensionFilterClause = new Google_Service_AnalyticsReporting_DimensionFilterClause(); | |
$dimensionFilterClause->setFilters($dimensionFilter); | |
// создадим объект ReportRequest (запрос) | |
$request = new Google_Service_AnalyticsReporting_ReportRequest(); | |
// добавим к запросу идентификатор viewId | |
$request->setViewId($VIEW_ID); | |
// добавим к запросу диапазон дат | |
$request->setDateRanges($dateRange); | |
// добавим к запросу показатели | |
$request->setMetrics(array($pageviews)); | |
// добавим к запросу фильтров | |
$request->setDimensionFilterClauses([$dimensionFilterClause]); | |
// создадим объект GetReportsRequest | |
$body = new Google_Service_AnalyticsReporting_GetReportsRequest(); | |
$body->setReportRequests( array( $request) ); | |
return $analytics->reports->batchGet( $body ); | |
} | |
/** | |
* Парсинг и печать Analytics Reporting API V4 ответа. | |
* | |
* @param ответ Analytics Reporting API V4. | |
*/ | |
function printResults($reports) { | |
for ( $reportIndex = 0; $reportIndex < count( $reports ); $reportIndex++ ) { | |
$report = $reports[ $reportIndex ]; | |
$header = $report->getColumnHeader(); | |
$dimensionHeaders = $header->getDimensions(); | |
$metricHeaders = $header->getMetricHeader()->getMetricHeaderEntries(); | |
$rows = $report->getData()->getRows(); | |
for ( $rowIndex = 0; $rowIndex < count($rows); $rowIndex++) { | |
$row = $rows[ $rowIndex ]; | |
$dimensions = $row->getDimensions(); | |
$metrics = $row->getMetrics(); | |
for ($i = 0; $i < count($dimensionHeaders) && $i < count($dimensions); $i++) { | |
print($dimensionHeaders[$i] . ": " . $dimensions[$i] . "\n"); | |
} | |
for ($j = 0; $j < count($metrics); $j++) { | |
$values = $metrics[$j]->getValues(); | |
for ($k = 0; $k < count($values); $k++) { | |
$entry = $metricHeaders[$k]; | |
print($entry->getName() . ": " . $values[$k] . "\n"); | |
} | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment