Как составлять запросы в google analytics Api?

 

В предыдущей статье о Google Analytics Api мы детально рассмотрели подключение и вывод данных . В этой статье будет подробное описание как составлять запросы для получения данных через google analytics api и выводить их на экран в виде таблицы. За пример возьмем простой отчет по дням недели.

Для создания отчета, необходимо доработать файл test.php который мы создали в предыдущей статье .

Изначально мы должны определить, какие показатели нам нужны для создания отчета:

  1. ga:users – пользователи;
  2. ga:newUsers – новые пользователи;
  3. ga:bounces —  показатель отказов;
  4. ga:transactions –  транзакции;
  5. ga:transactionRevenue –  доход;
  6. ga:dayOfWeekName — имя (на английском языке) дни недели;

Полный перечень вывода возможных показателей Вы можете просмотреть по этой ссылке

Для визуализации таблицы, в файл test.php подключили css библиотеку bootstrap. Вы можете сами стилизовать таблицу с данными по своим предпочтениям.

Так же для вывода отчета, нужно переделать функции getReport и printResults, которые мы использовали в предыдущем примере.

Начнем с функции getReport,  она отвечает за формирование и отправку запроса в Google Analitycs по заданным показателям и возвращает результат (массив с данными,  с помощью которых мы будем формировать отчет).

В данной функции, нужно создать 5 объектов созданных на основе класса Google_Service_AnalyticsReporting_Metric() , называть объекты будем в зависимости от выводимого параметра,  к примеру ga:users назовем users, а также нам нужно будет вызвать 2 метода setExpression() и setAlias() и отправить в них название параметра который мы хотим получить, к примеру ga:users.

Далее нам нужно создать объект на основе класса Google_Service_AnalyticsReporting_DateRange()  и в этом объекте нам нужно будет обратиться к 2 методам. Первый метод setStartDate(),  в который мы будем отправлять дату с какого периода нам нужно выводить данные.

Второй метод setEndDate()  в этот метод мы будем отправлять конечную дату, то есть до какого периода нам нужно вывести данные.

Так же нам нужно создать объект на основе класса Google_Service_AnalyticsReporting_Dimension(), обратиться к методу setName() и передать в него название показателя в нашем примере это ga:dayOfWeekName.

После перечисленных выше действий, нужно собрать все сформированные выше данные,  отправить в google analytics и получить ответ от сервера google analytics с интересующими нас данными. Для этого нужно создать 2 объекта на основе классов Google_Service_AnalyticsReporting_ReportRequest() и Google_Service_AnalyticsReporting_GetReportsRequest(). Полученный результат от сервера мы вернем используя оператор возврата return.


<? function getReport($analytics) {
// Replace with your view ID, for example XXXX. 
$VIEW_ID = "Сюда нужно вписать id вашего представления"; 
// Create the DateRange object. 
$dateRange = new Google_Service_AnalyticsReporting_DateRange(); 
$dateRange->setStartDate("2018-03-02");
$dateRange->setEndDate("2018-05-23");

// Create the Metrics object.

$users = new Google_Service_AnalyticsReporting_Metric();

$users->setExpression("ga:users");

$users->setAlias("ga:users");


$newUsers = new Google_Service_AnalyticsReporting_Metric();

$newUsers->setExpression('ga:newUsers');

$newUsers->setAlias("ga:newUsers");


$bounces = new Google_Service_AnalyticsReporting_Metric();

$bounces->setExpression('ga:bounces');

$bounces->setAlias("ga:bounces");


$transactions = new Google_Service_AnalyticsReporting_Metric();

$transactions->setExpression('ga:transactions');

$transactions->setAlias("ga:transactions");


$transactionRevenue = new Google_Service_AnalyticsReporting_Metric();

$transactionRevenue->setExpression('ga:transactionRevenue');

$transactionRevenue->setAlias("ga:transactionRevenue");


$dayOfWeekName = new Google_Service_AnalyticsReporting_Dimension();

$dayOfWeekName->setName("ga:dayOfWeekName");


// Create the ReportRequest object.

$request = new Google_Service_AnalyticsReporting_ReportRequest();

$request->setViewId($VIEW_ID);

$request->setDateRanges($dateRange);

$request->setDimensions(array($dayOfWeekName));

$request->setMetrics(array($users,$newUsers,$bounces,$transactions,$transactionRevenue));


$body = new Google_Service_AnalyticsReporting_GetReportsRequest();

$body->setReportRequests( array( $request) );

return $analytics->reports->batchGet( $body );

} ?>

Для вывода и группировки данных в табличном формате мы переделаем функцию  printResults.

Данная функция перебирает возвращенный массив с данными, которые мы сформировали в функции  getReport. Перебор массива осуществляется с помощью  цикла for. Полученные данные заключаем в теги <tr> и <td>.

<? 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++) { $values = $metrics[$i]->getValues();

$entry = $metricHeaders[$i]; ?>
<tr>
<td><?=$dimensions[$i];?></td>
<td><?=$values[0];?></td>
<td><?=$values[1];?></td>
<td><?=$values[2];?></td>
<td><?=$values[3];?></td>
<td><?=$values[4];?></td>
</tr>
<?

}

}

}
} 
 ?>

После того как переделаны функции getReport и printResults можно осуществить вывод данных на экран. Для этого нужно вызвать функции getReport и printResults.

<? $response = getReport($analytics); ?>


<div class="container">


<div class="row">


<div class="col-xs-12">



<table class="table table-bordered " style="margin-top:100px;">


<thead >


<tr class="info">


<th>Название дня недели</th>



<th>Пользователи</th>



<th>Новые пользователи</th>



<th>Показатель отказов</th>



<th>Транзакции</th>



<th>Доход</th>


</tr>


</thead>



<tbody class="table-hover">

<?printResults($response);?>

</tbody>


</table>


</div>


</div>


</div>

После этого можно просмотреть полученный результат, в браузере. Для этого нужно прописать в адресной строке браузера путь к файлу test.php. После открытия страницы на экране можно будет увидеть таблицу с данными за период который был нами выбран в функции getReport.

Для того чтобы Ваша таблица выглядела по стилям также, Вам необходимо подключить библиотеку bootstrap.

 

Подпишитесь на обновление блога