Mendapatkan google Analytics report dengan PHP menggunakan Google API 2.0

alfa6661
- December 30, 2015
0 (0 votes)
Rate :
Cara Mendapatkan google Analytics report dengan menggunakan PHP

Artikel ini merupakan kelanjutan dari artikel Mendapatkan google Analytics report dengan PHP menggunakan Google API yang saat dibuat masih menggunakan Google API versi 1. Sudah banyak yang berubah dengan versi 2, lebih lengkapnya bisa dilihat https://github.com/google/google-api-php-client/blob/master/UPGRADING.md.

PHP Client Library

Dalam tutorial ini kita akan menggunakan versi terbaru dari Google Client library untuk PHP yang dapat didownload di Github. Google API client untuk php ini secara teratur diperbaharui setiap kali terjadi perubahan. Pastikan menggunakan branch master atau release v2.0.0.

Google Developers Console

Masih sama dengan artikel sebelumnya, kita tetap memerlukan project yang dibuat di google developers console. Google Developers Console saat ini sudah menggunakan tampilan yang baru, jadi mungkin langkah-langkahnya akan sedikit berbeda dengan artikel sebelumnya.

Service Account

Pada Google API versi 2 ini kita masih tetap menggunakan Service Account untuk mengakses data Google Analytics. Untuk membuat Service Account masuk ke menu Permissions kemudian pilih Service Account.

Lalu pilih Create Service Account.

Berbeda dengan sebelumnya, kali ini kita akan menggunakan key type JSON sesuai dengan yang di rekomendasikan oleh Google. Lalu klik button Create. Pada saat Membuat Service Account, browser akan otomatis mendownload key json yang diberikan oleh google. Key ini nantinya akan digunakan untuk proses authentikasi.

Sama seperti artikel sebelumnya, Untuk menggunakan Layanan Service Account Google untuk Analytics API, kita memerlukan 3 hal berikut :

  1. Email Address
  2. JSON Key
  3. ID Google Analytics untuk tampilan

Akan tetapi ada yang berbeda dengan sebelumnya, Email address tidak akan digunakan di kode yang akan kita buat nanti. Email address ini harus kita simpan di halaman pengguna Google Analytics. Masuk ke halaman Google Analytics, kemudian pilih menu Admin. Pada menu admin terdapat 3 kolom, pilih menu setelan tampilan pada kolom ketiga. Kemudian pilih menu pengelolaan pengguna dan tambahkan email address yang telah kita buat sebelumnya.


Masih pada halaman Admin. Untuk mendapatkan ID Google Analytics kita bisa melihatnya pada menu Setelan Tampilan.


Let's Code

Pertama-tama copy file JSON key yang sebelumnya ke root project anda.

include_once __DIR__ . '/vendor/autoload.php';
putenv('GOOGLE_APPLICATION_CREDENTIALS=FILE_JSON_KEY.json');
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->setApplicationName("Lab-Informatika");
$client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);
$service = new Google_Service_Analytics($client);
$params = array('dimensions' => 'ga:date');
$data = $service->data_ga->get("ga:GOOGLE_ANALYTICS_ID", date('Y-m-d', strtotime('today - 20 days')), date("Y-m-d"), "ga:sessions,ga:pageviews", $params);

Todo

  1. Ganti FILE_JSON_KEY.json sesuai dengan nama file json anda.
  2. Ganti GOOGLE_ANALYTICS_ID sesuai dengan id google analytics anda

Selanjutnya kita tinggak mengolah variable $data untuk ditampilkan dalam bentuk HTML. contohnya :

<table border="1">
	<tr>	 
	<?php foreach($data->getColumnHeaders() as $header) : ?>
		<th><?php echo $header['name'] ?></th>
	<?php endforeach ?>
	</tr>	 	
	<?php foreach ($data->getRows() as $row) : ?>
	<tr>
		<td><?php echo $row[0] ?></td>
		<td><?php echo $row[1] ?></td>
		<td><?php echo $row[2] ?></td>
	</tr> 
	<?php endforeach ?>
	<tr>
		<td colspan="3">
			Rows Returned <?php echo $data->getTotalResults() ?>
		</td>
	</tr>	 
</table>

Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter

– Eric S. Raymond

Have a better explanation?

If you have comments about this post. Please write your comments below

  • crohole - posted 1 year ago

    error yg tadi saya pikir krn saya pake proxy, tp saa coba pake modem, errornya beda


    Fatal error: Uncaught exception 'GuzzleHttp\Exception\RequestException' with message 'cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)' in C:\xampp\htdocs\ganalytic\google-analytics\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php:187 Stack trace: #0 C:\xampp\htdocs\ganalytic\google-analytics\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(150): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array) #1 C:\xampp\htdocs\ganalytic\google-analytics\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(103): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory)) #2 C:\xampp\htdocs\ganalytic\google-analytics\vendor\guzzlehttp\guzzle\src\Handler\CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(Guz in C:\xampp\htdocs\ganalytic\google-analytics\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php on line 187


    kalo kaya gtu kira2 kenapa ya?

  • crohole - posted 1 year ago
    kalau error seperti ini kenapa ya :

    Fatal error: Uncaught exception 'GuzzleHttp\Exception\ConnectException' with message 'cURL error 7: Failed to connect to www.googleapis.com port 443: Timed out (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)' in C:\xampp\htdocs\ganalytic\google-api-php-client-2.0.0-RC4\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php:186 Stack trace: #0 C:\xampp\htdocs\ganalytic\google-api-php-client-2.0.0-RC4\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(150): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array) #1 C:\xampp\htdocs\ganalytic\google-api-php-client-2.0.0-RC4\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(103): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory)) #2 C:\xampp\htdocs\ganalytic\google-api-php-client-2.0.0-RC4\vendor\guzzlehttp\guzzle\src\Handler\CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHand in C:\xampp\htdocs\ganalytic\google-api-php-client-2.0.0-RC4\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php on line 186


    Tolong bantuannya. thanks

  • crohole - posted 1 year ago

    kalau errornya seperti ini kenapa ya :


    Fatal error: Uncaught exception 'GuzzleHttp\Exception\ConnectException' with message 'cURL error 7: Failed to connect to www.googleapis.com port 443: Timed out (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)' in C:\xampp\htdocs\ganalytic\google-api-php-client-2.0.0-RC4\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php:186 Stack trace: #0 C:\xampp\htdocs\ganalytic\google-api-php-client-2.0.0-RC4\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(150): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array) #1 C:\xampp\htdocs\ganalytic\google-api-php-client-2.0.0-RC4\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(103): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory)) #2 C:\xampp\htdocs\ganalytic\google-api-php-client-2.0.0-RC4\vendor\guzzlehttp\guzzle\src\Handler\CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHand in C:\xampp\htdocs\ganalytic\google-api-php-client-2.0.0-RC4\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php on line 186

  • hariri_riski - posted 1 year ago

    Asslamamualaikum

    Saya bingung dua Json di copi ke root, root itu dimana ?

    terus  file ini namanya apa dan di buat dimana?

    1. include_once __DIR__ . '/vendor/autoload.php';
    2. putenv('GOOGLE_APPLICATION_CREDENTIALS=FILE_JSON_KEY.json');
    3. $client = new Google_Client();
    4. $client->useApplicationDefaultCredentials();
    5. $client->setApplicationName("Lab-Informatika");
    6. $client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);
    7. $service = new Google_Service_Analytics($client);
    8. $params = array('dimensions' => 'ga:date');
    9. $data = $service->data_ga->get("ga:GOOGLE_ANALYTICS_ID", date('Y-m-d', strtotime('today - 20 days')), date("Y-m-d"), "ga:sessions,ga:pageviews", $params);
    dan ini sama juga namanya apa, dan di mana di buatnya

    1. <table border="1">
    2. <tr>
    3. <?php foreach($data->getColumnHeaders() as $header) : ?>
    4. <th><?php echo $header['name'] ?></th>
    5. <?php endforeach ?>
    6. </tr>
    7. <?php foreach ($data->getRows() as $row) : ?>
    8. <tr>
    9. <td><?php echo $row[0] ?></td>
    10. <td><?php echo $row[1] ?></td>
    11. <td><?php echo $row[2] ?></td>
    12. </tr>
    13. <?php endforeach ?>
    14. <tr>
    15. <td colspan="3">
    16. Rows Returned <?php echo $data->getTotalResults() ?>
    17. </td>
    18. </tr>
    19. </table>


    Karena saya sudah coba dengan clientnya (google-api-php-client-2.0.0-RC1)

    dan error nya 

    Fatal error: Uncaught exception 'GuzzleHttp\Ring\Exception\RingException' with message 'cURL error 60: SSL certificate problem: unable to get local issuer certificate' in C:\xampp1\htdocs\google-api-php-client-2.0.0-RC1\vendor\guzzlehttp\ringphp\src\Client\CurlFactory.php:127 Stack trace: #0 C:\xampp1\htdocs\google-api-php-client-2.0.0-RC1\vendor\guzzlehttp\ringphp\src\Client\CurlFactory.php(91): GuzzleHttp\Ring\Client\CurlFactory::createErrorResponse(Array, Array, Array) #1 C:\xampp1\htdocs\google-api-php-client-2.0.0-RC1\vendor\guzzlehttp\ringphp\src\Client\CurlHandler.php(96): GuzzleHttp\Ring\Client\CurlFactory::createResponse(Array, Array, Array, Array, Resource id #93) #2 C:\xampp1\htdocs\google-api-php-client-2.0.0-RC1\vendor\guzzlehttp\ringphp\src\Client\CurlHandler.php(68): GuzzleHttp\Ring\Client\CurlHandler->_invokeAsArray(Array) #3 C:\xampp1\htdocs\google-api-php-client-2.0.0-RC1\vendor\guzzlehttp\ringphp\src\Client\Middleware.php(54): GuzzleHttp\Ring\Client\CurlHandler->__invoke(Array) #4 C:\xampp1\htdocs\googl in C:\xampp1\htdocs\google-api-php-client-2.0.0-RC1\vendor\guzzlehttp\guzzle\src\Exception\RequestException.php on line 51

    tolong bantuannya

    • alfa6661 - posted 1 year ago

      root project anda = tempat anda membuat projectnya.

      Untuk nama file dan dibuat dimana ya itu terserah, yang jelas lokasi file harus berada didalam direktori yang bisa di akses web server (htdocs / www biasanya).

      Ini saya buatkan contohnya, tinggal di sesuaikan aja json key sama google analytics id nya.

      Google Analytics API sample.

      • hariri_riski - posted 1 year ago

        Mohon Maaf sudah merepotkan sebelumnya
        sudah saya coba masih error seperti ini, apa di PC saya ada yang salah dengan Configur php atau apache

        Fatal error: Uncaught exception 'GuzzleHttp\Exception\RequestException' with message 'cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)' in C:\xampp1\htdocs\google-analytics\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php:187 Stack trace: #0 C:\xampp1\htdocs\google-analytics\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(150): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array) #1 C:\xampp1\htdocs\google-analytics\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(103): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory)) #2 C:\xampp1\htdocs\google-analytics\vendor\guzzlehttp\guzzle\src\Handler\CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory)) #3 C:\ in C:\xampp1\htdocs\google-analytics\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php on line 187


        Terimakasih, sekiranya mau membatu TA saya