Introduction
Google provide powerful programmatic method to get report from Google analytics in your custom dashboard.
You can see real time activity by integrating Google Analytics API.
You can pass custom date ranges to see the report in your dashboard.
I am going to integrate Google Analytics API to get summary and api will return following things in summary parameter by following this code.
- ga:sessions
- ga:users
- ga:pageviews
- ga:bounceRate
- ga:hits
- ga:avgSessionDuration
- active_users
Before going to integrate Google Analytics API, you must have project in the Google API Console if don't have project then click on Create a project link to create project.
It will take few minutes to active after that you can create service account by clicking this link Create service account.
You must enable your google app.
Here you will get service account email which will be used to configure with Google Analytics API.
You will need also view id which you will get in your analytics dashboard > admin > view settingsomewhere it is known as table id.
Step2: Update composer to install package for Google ClientAdd this line in your composer file and update composer command in your terminal.
"google/apiclient" : "^1.1",Step3: Add Routes
- Route::get('google-analytics-summary',array('as'=>'google-analytics-summary','uses'=>'HomeController@getAnalyticsSummary'));
Now Create a HomeController.php and paste this code.
- <?php
- namespace App\Http\Controllers;
- use Illuminate\Http\Request;
- use App\Http\Controllers\Controller;
- class HomeController extends Controller
- {
- public function getAnalyticsSummary(Request $request){
- $from_date = date("Y-m-d", strtotime($request->get('from_date',"7 days ago")));
- $to_date = date("Y-m-d",strtotime($request->get('to_date',$request->get('from_date','today')))) ;
- $gAData = $this->gASummary($from_date,$to_date) ;
- return $gAData;
- }
- //to get the summary of google analytics.
- private function gASummary($date_from,$date_to) {
- $service_account_email = 'your service account email';
- // Create and configure a new client object.
- $client = new \Google_Client();
- $client->setApplicationName("{application name}");
- $analytics = new \Google_Service_Analytics($client);
- $cred = new \Google_Auth_AssertionCredentials(
- $service_account_email,
- array(\Google_Service_Analytics::ANALYTICS_READONLY),
- "{your private_key}"
- );
- $client->setAssertionCredentials($cred);
- if($client->getAuth()->isAccessTokenExpired()) {
- $client->getAuth()->refreshTokenWithAssertion($cred);
- }
- $optParams = [
- 'dimensions' => 'ga:date',
- 'sort'=>'-ga:date'
- ] ;
- $results = $analytics->data_ga->get(
- 'ga:{View ID}',
- $date_from,
- $date_to,
- 'ga:sessions,ga:users,ga:pageviews,ga:bounceRate,ga:hits,ga:avgSessionDuration',
- $optParams
- );
- $rows = $results->getRows();
- $rows_re_align = [] ;
- foreach($rows as $key=>$row) {
- foreach($row as $k=>$d) {
- $rows_re_align[$k][$key] = $d ;
- }
- }
- $optParams = array(
- 'dimensions' => 'rt:medium'
- );
- try {
- $results1 = $analytics->data_realtime->get(
- 'ga:{View ID}',
- 'rt:activeUsers',
- $optParams);
- // Success.
- } catch (apiServiceException $e) {
- // Handle API service exceptions.
- $error = $e->getMessage();
- }
- $active_users = $results1->totalsForAllResults ;
- return [
- 'data'=> $rows_re_align ,
- 'summary'=>$results->getTotalsForAllResults(),
- 'active_users'=>$active_users['rt:activeUsers']
- ] ;
- }
- }
If you are getting error “User does not have any Google Analytics Account” then add service account user in analytics by clicking admin option on analytics dashboard and go to User Management.(Within account,property or view).
If you are getting error “Google Analytics API has not been used in project {project id} before or it is disabled” then follow given url in error message and enable api.
There are several package to integrate Google Analytics API too.
You can use spatie/laravel-analytics
package but this package are using same google api client version.