Я использую Google API V4 https://developers.google.com/analytics/devguides/reporting/core/v4/quickstart/service-php
У меня проблема с функцией setAlias. Когда выбрано несколько метрик, все возвращаемые заголовки совпадают.
Код:
<?php
$metrices = {FORM ARRY WITH MULTIPLE METRICES}
$nmetrices = array();
if(is_array($metrices) && count($metrices) > 0){
$i=0;
foreach($metrices as $metric){
$nmetrices[$i] = new Google_Service_AnalyticsReporting_Metric();
$nmetrices[$i]->setExpression($metric);
$nmetrices[$i]->setAlias($metric);
$i+=1;
}
}?>
Пример:
Я выбрал «ga: users» и «ga: процентNewSessions», но возвращаемые результаты имеют заголовок: «ga: users» для обеих метрик.
ga:medium: (none)
ga:date: 20150810
Metric type: INTEGER
**ga:users: 764
ga:users: 97.38219895287958**
ga:medium: (none)
ga:date: 20150811
Metric type: INTEGER
**ga:users: 2495
ga:users: 85.50284629981024**
Я только начал на Analytics API v4 и столкнулся с этой проблемой. Предоставленный код PHP не допускает использование нескольких метрик для функции printResults () в этом примере, однако данные из Google содержат правильный псевдоним.
Объект метрики от Google — это единый корень, однако объект заголовка метрики — это отдельная запись для запрошенного типа метрики.
Вот обновленная функция printResults (), которая будет обслуживать несколько метрик.
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( $metricHeaders ); $j++) {
$entry = $metricHeaders[$j];
$values = $metrics[$rowIndex];
$value = $values->getValues()[$j];
print($entry->getName() . ": " . $value . "\n");
}
}
}
}
Других решений пока нет …