Last active
October 24, 2020 04:07
-
-
Save fulldecent/6728257 to your computer and use it in GitHub Desktop.
Google Analytics dashboard. Shows a lit of all your experiments with Bootstrap 3 and the current progress of those experiments.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Service account code from http://stackoverflow.com/questions/18258593/using-a-service-account-getaccesstoken-is-returning-null | |
// Analytics code from https://code.google.com/p/google-api-php-client/source/browse/trunk/examples/analytics/simple.php?r=474 | |
require_once 'google-api-php-client/src/Google_Client.php'; | |
require_once 'google-api-php-client/src/contrib/Google_AnalyticsService.php'; | |
// Set your client id, service account name (AKA "EMAIL ADDRESS"), and the path to your private key. | |
// For more information about obtaining these keys, visit: | |
// https://developers.google.com/console/help/#service_accounts | |
const CLIENT_ID = 'CLIENT ID'; | |
const SERVICE_ACCOUNT_NAME = 'SERVICE ACCOUNT NAME (IS AN "EMAIL ADDRESS")'; | |
const KEY_FILE = 'KEY FILE'; | |
const SCOPE = 'https://www.googleapis.com/auth/analytics.readonly'; | |
// OPEN GOOGLE ANALYTICS AND GRANT ACCESS TO YOUR PROFILE, THEN PASTE IN YOUR SERVICE_ACCOUNT_NAME | |
$key = file_get_contents(KEY_FILE); | |
$auth = new Google_AssertionCredentials( | |
SERVICE_ACCOUNT_NAME, | |
[SCOPE], | |
$key | |
); | |
$client = new \Google_Client(); | |
$client->setAuthConfig(KEY_FILE); | |
$client->setScopes([SCOPE]); | |
$service = new \Google_Service_Analytics($client); | |
?> | |
<!DOCTYPE html> | |
<html> | |
<head> | |
<title>Google Experiments Dashboard</title> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" media="screen"> | |
</head> | |
<body class="container"> | |
<h1>Your experiments</h1> | |
<table class="table"><tr><th><th>Experiment<th>Page<th>Started<th>Status | |
<?php | |
$progressClasses = array('progress-bar progress-bar-success','progress-bar progress-bar-info','progress-bar progress-bar-warning', 'progress-bar progress-bar-danger'); | |
$profiles = $service->management_profiles->listManagementProfiles("~all", "~all"); | |
foreach ($profiles['items'] as $profile) { | |
// var_dump("PROFILE",$profile); | |
$experiments = $service->management_experiments->listManagementExperiments($profile['accountId'], $profile['webPropertyId'], $profile['id']); | |
foreach ($experiments['items'] as $experiment) { | |
// var_dump("EXPERIMENT",$experiment); | |
// if ($experiment['status'] != 'RUNNING') continue; | |
echo "<tr>"; | |
if ($experiment['status'] == 'RUNNING') | |
echo '<td><a class="btn btn-xs btn-success"><i class="glyphicon glyphicon-ok"></i></a>'; | |
else | |
echo '<td><a class="btn btn-xs btn-danger"><i class="glyphicon glyphicon-remove"></i></a>'; | |
$expHref = "https://www.google.com/analytics/web/?pli=1#siteopt-experiment/siteopt-detail/a{$profile['accountId']}w{$experiment['internalWebPropertyId']}p{$experiment['profileId']}/%3F_r.drilldown%3Danalytics.gwoExperimentId%3A{$experiment['id']}/"; | |
echo "<td><a href='$expHref' target='_blank'>{$experiment['name']}</a>"; | |
echo "<td>{$experiment['variations'][0]['url']}"; | |
echo "<td>".date('Y-m-d',strtotime($experiment['startTime'])); | |
echo "<td>"; | |
echo '<div class="progress" style="width:400px">'; | |
foreach ($experiment['variations'] as $i => $variation) { | |
echo '<a href="'.$variation['url'].'" target="_blank"><div class="'.$progressClasses[$i].'" role="progressbar" style="width: '.(100*$variation['weight']).'%">'.$variation['name'].'</div></a>'; | |
// echo "$i -> {$variation['name']} {$variation['weight']}"; | |
} | |
echo '</div>'; | |
// echo "\nEXP\n"; | |
// var_dump($experiment['variations']); | |
} | |
} | |
/* | |
$segments = $service->management_segments->listManagementSegments(); | |
print "<h1>Segments</h1><pre>" . print_r($segments, true) . "</pre>"; | |
$goals = $service->management_goals->listManagementGoals("~all", "~all", "~all"); | |
print "<h1>Segments</h1><pre>" . print_r($goals, true) . "</pre>"; | |
*/ | |
?> |
Updated auth workflow
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Can you please help me on http://stackoverflow.com/questions/33754177/google-analytics-custom-plugin-getting-error-invalid-grant