Language
한국어

[GA] Google Analytics API

2017.07.08 14:20

lispro06 조회 수:1243

구글에서 웹사이트 방문 분석을 할 수 있는 기능을 제공하는데, 관리사이트에 들어가서 봐야하는 별도 페이지 사용 이슈가 있다.


이 데이터를 구글 스프레드 시트나 원하는 페이지에서 불러와 사용하기 위한 api 가 Google Analytics API 다.


PHP 5.4 이상이 필요하다고하여 5.3에서 업데이트 하는데에도 Ubuntu 12.04 에서 지원이 되지 않아 상당한 시간이 걸렸다.


https://developers.google.com/analytics/devguides/reporting/core/v4/quickstart/service-php


1. centos 6.9에서 PHP 5.6으로 업그레이드 한 뒤, 구글 개발자 콘솔에서 https://console.developers.google.com/start/api?id=analyticsreporting.googleapis.com&credential=client_key 아날리틱스 관련 프로젝트를 생성하여 API를 사용할 수 있게 해야한다.(키 파일을 받아 서버에 올린다.)


2. 이제 서비스 계정으로 들어가 데이터를 송수신해 줄 계정을 만들고 https://console.developers.google.com/permissions/serviceaccounts 아날리틱스 관리자 페이지에 등록 및 읽기 및 분석 권한을 부여한다.(웹사이트 분석 스크립트도 해당 사이트에 적용해야 데이터가 수집되므로 기존 등록된 스크립트와 별개로 추가 적용한다.)


3. PHP 소스파일을 Composer를 이용해 설치할 수 있는데, 이를 사용하려면 Composer를 설치해야 한다.


4. composer require google/apiclient:^2.0 여기까지 하면 50% 정도 한 것이다.


5. 다행이 구글에서 visual 하게 view를 잘 제공해 줘서 analytics 관련한 https://ga-dev-tools.appspot.com/account-explorer/ 계정을 확인 가능하다. 이 계정의 숫자로 된 view id를 실제 사용할 소스에 넣는다.


6. 예제 코드를 실행해 본다.(아래 코드는 예제에 1가지 metric과 dimension만 제공하기 때문에 Dimensions & Metrics Explorer를 통해 몇가지를 더 추가해서 사용했다. 데이터가 좀 더 쌓여야 더 필요한 항목 추가가 가능할 것 같다.


<?php

error_reporting(E_ALL);


ini_set("display_errors", 1);

// Load the Google API PHP Client Library.

require_once __DIR__ . '/vendor/autoload.php';


$analytics = initializeAnalytics();

$response = getReport($analytics);

printResults($response);



/**

 * Initializes an Analytics Reporting API V4 service object.

 *

 * @return An authorized Analytics Reporting API V4 service object.

 */

function initializeAnalytics()

{


  // Use the developers console and download your service account

  // credentials in JSON format. Place them in this directory or

  // change the key file location if necessary.

  $KEY_FILE_LOCATION = __DIR__ . '/key.json';//키 파일은 개발자 콘솔 부분에서 다운로드 받는다.


  // Create and configure a new client object.

  $client = new Google_Client();

  $client->setApplicationName("Hello Analytics Reporting");

  $client->setAuthConfig($KEY_FILE_LOCATION);

  $client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);

  $analytics = new Google_Service_AnalyticsReporting($client);


  return $analytics;

}



/**

 * Queries the Analytics Reporting API V4.

 *

 * @param service An authorized Analytics Reporting API V4 service object.

 * @return The Analytics Reporting API V4 response.

 */

function getReport($analytics) {


  // Replace with your view ID, for example XXXX.

  $VIEW_ID = "9자리 숫자로 되어있었다";


  // Create the DateRange object.

  $dateRange = new Google_Service_AnalyticsReporting_DateRange();

  $dateRange->setStartDate("7daysAgo");

  $dateRange->setEndDate("today");


  // Create the Metrics object.

  $sessions = new Google_Service_AnalyticsReporting_Metric();

  $sessions->setExpression("ga:sessions");

  $sessions->setAlias("sessions");


  $users = new Google_Service_AnalyticsReporting_Metric();

  $users->setExpression("ga:users");

  $users->setAlias("users");


  //Create the Dimensions object.

  $browser = new Google_Service_AnalyticsReporting_Dimension();

  $browser->setName("ga:browser");


  $frf = new Google_Service_AnalyticsReporting_Dimension();

  $frf->setName("ga:fullReferrer");


  $userType = new Google_Service_AnalyticsReporting_Dimension();

  $userType->setName("ga:userType");


  $pageviews = new Google_Service_AnalyticsReporting_Metric();

  $pageviews->setExpression("ga:pageviews");

  $pageviews->setAlias("pageviews");


  $ssd = new Google_Service_AnalyticsReporting_Metric();

  $ssd->setExpression("ga:sessionDuration");

  $ssd->setAlias("session_duration");


  // Create the ReportRequest object.

  $request = new Google_Service_AnalyticsReporting_ReportRequest();

  $request->setViewId($VIEW_ID);

  $request->setDateRanges($dateRange);

  $request->setDimensions(array($browser, $frf, $userType));

  $request->setMetrics(array($sessions, $pageviews, $users, $ssd));


  $body = new Google_Service_AnalyticsReporting_GetReportsRequest();

  $body->setReportRequests( array( $request) );

  return $analytics->reports->batchGet( $body );

}



/**

 * Parses and prints the Analytics Reporting API V4 response.

 *

 * @param An Analytics Reporting API V4 response.

 */

function printResults($reports) {

  for ( $reportIndex = 0; $reportIndex < count( $reports ); $reportIndex++ ) {

    $report = $reports[ $reportIndex ];

    $header = $report->getColumnHeader();

    $dimensionHeaders = $header->getDimensions();

    $metricHeaders = $header->getMetricHeader()->getMetricHeaderEntries();

    $rows = $report->getData()->getRows();


    for ( $rowIndex = 0; $rowIndex < count($rows); $rowIndex++) {

      $row = $rows[ $rowIndex ];

      $dimensions = $row->getDimensions();

      $metrics = $row->getMetrics();

      for ($i = 0; $i < count($dimensionHeaders) && $i < count($dimensions); $i++) {

        print($dimensionHeaders[$i] . ": " . $dimensions[$i] . "\n<br />");

      }


      for ($j = 0; $j < count($metrics); $j++) {

        $values = $metrics[$j]->getValues();

        for ($k = 0; $k < count($values); $k++) {

          $entry = $metricHeaders[$k];

          print($entry->getName() . ": " . $values[$k] . "\n<br />");

        }

      }

    }

  }

}

?>



ga:browser: Chrome 
ga:fullReferrer: (direct) 
ga:userType: New Visitor 
sessions: 3 
pageviews: 5 
users: 3 
session_duration: 106.0