Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
/vendor/
composer.lock
.idea
18 changes: 18 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,24 @@ without Flex, add to /app/AppKernel.php :

# Versions

## 1.3

Adding gatherAllData to getDataDateRangeMetricsDimensions method

$analyticsService = $this->get('google_analytics_api.api');

$data = $analyticsService->getDataDateRangeMetricsDimensions(
'myanalyticsviewid', // viewid
$beginDate,
$endDate,
$metrics,
$dimensions,
$sorting,
$filterMetric,
$filterDimension,
false //default (false) will gather only the 1000 firt rows, change to true to get all the rows
);

## 1.2

Adding filterMetric and filterDimension to getDataDateRangeMetricsDimensions method which is a simple wrapper to Google Api Client ex :
Expand Down
35 changes: 27 additions & 8 deletions Service/GoogleAnalyticsService.php
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ public function getClient() {
* @param array $sorting ( = [ ['fields']=>['sessions','bounceRate',..] , 'order'=>'descending' ] )
* @param array $filterMetric ( = [ ['metric_name']=>['sessions'] , 'operator'=>'LESS_THAN' , 'comparison_value'=>'100' ] )
* @param array $filterDimension ( = [ ['dimension_name']=>['sourceMedium'] , 'operator'=>'EXACT' , 'expressions'=>['my_campaign'] ] )
* @param boolean $gatherAllData
* @return mixed
*
* @link https://developers.google.com/analytics/devguides/reporting/core/dimsmets
Expand All @@ -97,7 +98,7 @@ public function getClient() {
* @link https://github.com/google/google-api-php-client
*
*/
public function getDataDateRangeMetricsDimensions($viewId,$dateStart,$dateEnd,$metrics='sessions',$dimensions=null,$sorting=null,$filterMetric=null,$filterDimension=null) {
public function getDataDateRangeMetricsDimensions($viewId,$dateStart,$dateEnd,$metrics='sessions',$dimensions=null,$sorting=null,$filterMetric=null,$filterDimension=null,$gatherAllData=false) {

// Create the DateRange object
$dateRange = new Google_Service_AnalyticsReporting_DateRange();
Expand Down Expand Up @@ -245,10 +246,30 @@ public function getDataDateRangeMetricsDimensions($viewId,$dateStart,$dateEnd,$m
$body = new Google_Service_AnalyticsReporting_GetReportsRequest();
$body->setReportRequests([$request]);

$reports = $this->analytics->reports->batchGet($body);

$data = [];
if ($gatherAllData === true) {
do {
$reports = $this->analytics->reports->batchGet($body);
$data = $this->gatherData($metrics, $dimensions, $reports, $data);
$request->setPageToken($reports[0]->getNextPageToken());
} while ($reports[0]->getNextPageToken() != '');
} else {
$reports = $this->analytics->reports->batchGet($body);
$data = $this->gatherData($metrics, $dimensions, $reports, $data);
}

return $data;

}

/**
* @param $metrics
* @param $dimensions
* @param $reports
* @param $data
* @return array
*/
private function gatherData($metrics, $dimensions, $reports, $data) {
foreach ($reports->getReports()[0]->getData()->getRows() as $row) {

// arrays
Expand All @@ -259,7 +280,7 @@ public function getDataDateRangeMetricsDimensions($viewId,$dateStart,$dateEnd,$m

if (isset($dimensionsArray)) {

$i=0;
$i = 0;

foreach ($dimensionsArray as $k => $v) {
$dimensionsKeyValue[$dimensions[$i]] = $v;
Expand All @@ -282,14 +303,12 @@ public function getDataDateRangeMetricsDimensions($viewId,$dateStart,$dateEnd,$m
}

$data[] = [
'metrics' => $metricsKeyValue,
'dimensions' => $dimensionsKeyValue
'metrics' => $metricsKeyValue,
'dimensions' => $dimensionsKeyValue
];

}

return $data;

}

/**
Expand Down
5 changes: 4 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "mediafigaro/google-analytics-api-symfony",
"name": "waoufi/google-analytics-api-symfony",
"type": "symfony-bundle",
"description": "Google Analytics API v4 Symfony",
"keywords": ["symfony","google","analytics","api","v4"],
Expand All @@ -8,6 +8,9 @@
"authors": [
{
"name": "Kendrick"
},
{
"name": "waoufi"
}
],
"require": {
Expand Down