Instantly share code, notes, and snippets.

Embed
What would you like to do?
<?php
function getService()
{
// Creates and returns the Analytics service object.
// Load the Google API PHP Client Library.
require_once 'google-api-php-client/src/Google/autoload.php';
// Create and configure a new client object.
$client = new \Google_Client();
putenv('GOOGLE_APPLICATION_CREDENTIALS=file.json');
$client->useApplicationDefaultCredentials();
$client->addScope('https://www.googleapis.com/auth/analytics.readonly');
return new \Google_Service_Analytics($client);
}
function getFirstprofileId(&$analytics) {
// Get the user's first view (profile) ID.
// Get the list of accounts for the authorized user.
$accounts = $analytics->management_accounts->listManagementAccounts();
if (count($accounts->getItems()) > 0) {
$items = $accounts->getItems();
$firstAccountId = $items[0]->getId();
// Get the list of properties for the authorized user.
$properties = $analytics->management_webproperties
->listManagementWebproperties($firstAccountId);
if (count($properties->getItems()) > 0) {
$items = $properties->getItems();
$firstPropertyId = $items[0]->getId();
// Get the list of views (profiles) for the authorized user.
$profiles = $analytics->management_profiles
->listManagementProfiles($firstAccountId, $firstPropertyId);
if (count($profiles->getItems()) > 0) {
$items = $profiles->getItems();
// Return the first view (profile) ID.
return $items[0]->getId();
} else {
throw new Exception('No views (profiles) found for this user.');
}
} else {
throw new Exception('No properties found for this user.');
}
} else {
throw new Exception('No accounts found for this user.');
}
}
function getResults(&$analytics, $profileId) {
// Calls the Core Reporting API and queries for the number of sessions
// for the last seven days.
return $analytics->data_ga->get(
'ga:' . $profileId,
'7daysAgo',
'today',
'ga:sessions');
}
function printResults(&$results) {
// Parses the response from the Core Reporting API and prints
// the profile name and total sessions.
if (count($results->getRows()) > 0) {
// Get the profile name.
$profileName = $results->getProfileInfo()->getProfileName();
// Get the entry for the first entry in the first row.
$rows = $results->getRows();
$sessions = $rows[0][0];
// Print the results.
print "First view (profile) found: $profileName\n";
print "Total sessions: $sessions\n";
} else {
print "No results found.\n";
}
}
$analytics = getService();
$profile = getFirstProfileId($analytics);
$results = getResults($analytics, $profile);
printResults($results);
@kkatsavaros

This comment has been minimized.

Show comment
Hide comment
@kkatsavaros

kkatsavaros Oct 3, 2016

Hello
php HelloAnalytics.php
is the same with
localhost/HelloAnalutics.php
?

kkatsavaros commented Oct 3, 2016

Hello
php HelloAnalytics.php
is the same with
localhost/HelloAnalutics.php
?

@thomsnicol

This comment has been minimized.

Show comment
Hide comment
@thomsnicol

thomsnicol Oct 14, 2016

Hi, i'm trying to run this script but its giving a error
Fatal error: Call to undefined method Google_Client::useApplicationDefaultCredentials() in /home/user/public_html/HelloAnalytics.php on line 11 please help.

thomsnicol commented Oct 14, 2016

Hi, i'm trying to run this script but its giving a error
Fatal error: Call to undefined method Google_Client::useApplicationDefaultCredentials() in /home/user/public_html/HelloAnalytics.php on line 11 please help.

@nickopris

This comment has been minimized.

Show comment
Hide comment
@nickopris

nickopris Nov 26, 2016

Hi, thanks for this. I found the link to it via your blog. Is there a way to automate this step: "Use this email address to add a user to the Google analytics account you want to access via the API" ? I'm allowing people to connect their accounts on my website and give me permission to access Analytics.

nickopris commented Nov 26, 2016

Hi, thanks for this. I found the link to it via your blog. Is there a way to automate this step: "Use this email address to add a user to the Google analytics account you want to access via the API" ? I'm allowing people to connect their accounts on my website and give me permission to access Analytics.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment