메뉴 건너뛰기

infra

[GA] Google Analytics API

lispro062017.07.08 23:20조회 수 1816댓글 0

    • 글자 크기

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


이 데이터를 구글 스프레드 시트나 원하는 페이지에서 불러와 사용하기 위한 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 

lispro06 (비회원)
    • 글자 크기
[mysql] root 패스워드를 분실한 경우(응급조치) (by 박영식) [PHP] XML parser의 이용 (by 박영식)

댓글 달기

lispro06
2017.07.08 조회 1816
박영식
2009.08.01 조회 5660
lispro06
2017.08.13 조회 2346
suritam9
2024.03.10 조회 231
lispro06
2017.10.01 조회 801
suritam9
2024.03.11 조회 443
suritam9
2024.03.12 조회 213
첨부 (0)
위로