Skip to content

Instantly share code, notes, and snippets.

@zinntikumugai
Created October 30, 2016 06:58
Show Gist options
  • Save zinntikumugai/c7115f0f520be50db6d93a9aee256ad4 to your computer and use it in GitHub Desktop.
Save zinntikumugai/c7115f0f520be50db6d93a9aee256ad4 to your computer and use it in GitHub Desktop.
<?php
function getService() {
// Creates and returns the Analytics service object.
// Load the Google API PHP Client Library.
// https://github.com/google/google-api-php-client/tree/v1-master
require 'google-api-php-client/src/Google/autoload.php';
// Use the developers console and replace the values with your
// service account email, and relative location of your key file.
$service_account_email = '*********@********************************.iam.gserviceaccount.com';
$key_file_location = __DIR__ .'/**********KEY_FILE_NAME****************************.p12';
// Create and configure a new client object.
$client = new Google_Client();
$client->setApplicationName("SiteView");
$analytics = new Google_Service_Analytics($client);
// Read the generated client_secrets.p12 key.
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials(
$service_account_email,
array(Google_Service_Analytics::ANALYTICS_READONLY),
$key
);
$client->setAssertionCredentials($cred);
if($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($cred);
}
return $analytics;
}
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, $metrics) {
// Calls the Core Reporting API and queries for the number of sessions
// for the last seven days.
return $analytics->data_ga->get(
'ga:' . $profileId,
'2016-09-01',
'today',
'ga:' .$metrics);
}
function printResults(&$results) {
$out = "";
// 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";
$data = $sessions;
} else {
//print "No results found.\n";
$data = 0;
}
return $data;
}
$analytics = getService();
$profile = getFirstProfileId($analytics);
///////////////////////////////////////////////////////
//データ取得リスト
$getdata = array(
'pageviews',
'users',
);
///////////////////////////////////////////////////////
//更新
$results = getResults($analytics, $profile, $getdata[0]);
$outdata = printResults($results);
file_put_contents(__DIR__ .'/ac', $outdata);
$results = getResults($analytics, $profile, $getdata[1]);
$outdata = printResults($results);
file_put_contents(__DIR__ .'/uc', $outdata);
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment