카테고리 없음

PHP에서 Google Analytics API 이용하기

유지남 2020. 1. 22. 11:37

들어가며

좋은 서비스를 만들기 위해 수개월 동안 개발을 끝내고 나면 서비스의 안정성 및 개선을 위해 사용자가 어떻게 우리 서비스를 이용하는지 행동 파악이 중요하다.

Google Analytics 사이트를 매번 접속해서 보고서를 확인하는 것은 매우 불편하거니와 원하고자 하는 정보를 정확하게 파악하기 어렵다. 그러니 Google Analytics API를 이용하여 통계 데이터를 쉽게 만들어 보자.

 

사전 준비

  1. Google Analytics 계정
  2. Analytics와 연동된 사이트
  3. Analytics ID
  4. PHP Laravel framework
  5. Credentials Key

 

Analytics ID

  1. https://analytics.google.com/analytics/web/ 접속
  2. 상단에 "전체 웹사이트 데이터"를 선택
  3. 애널리틱스 계정, 속성 및 앱, 속성 보기 중에 "속성 보기" 탭

"전체 웹사이트 데이터" 글자 밑에 숫자로만 표기되어 있는 부분이 이번 예제에 필요한 ID이다. ("UA-"로 시작하는 것이 아니다)

 

Credentials Key 만들기

Google IAM 콘솔로 접근하여 서비스 계정 만들고,

키를 만들려고 하는 서비스 계정을 찾아 해당 행에서 더보기 메뉴에 키 만들기 버튼을 누르면

아래와 같은 형태의 Private key JSON 파일이 다운로드된다.

{
	"type": "service_account",
	"project_id": "[PROJECT-ID]",
	"private_key_id": "[KEY-ID]",
	"private_key": "-----BEGIN PRIVATE KEY-----\n[PRIVATE-KEY]\n-----END PRIVATE KEY-----\n",
	"client_email": "[SERVICE-ACCOUNT-EMAIL]",
	"client_id": "[CLIENT-ID]",
	"auth_uri": "https://accounts.google.com/o/oauth2/auth",
	"token_uri": "https://accounts.google.com/o/oauth2/token",
	"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
	"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/[SERVICE-ACCOUNT-EMAIL]"
}

 

Google api client 설치

composer require google/apiclient:^2.0

 

사용자 인증

위에서 발급한 Credentials Key를 array()에 모두 넣어 주고, Scope에는 Google analytics api를 입력한다.

사용할 수 있는 Google API Scope 목록은 https://developers.google.com/identity/protocols/googlescopes 에서 확인 가능하다.

$client = new \Google_Client();
$credentials = array(<CREDENTIALS KEY>);
$client->setAuthConfig($credentials);
$client->addScope("https://www.googleapis.com/auth/analytics.readonly");
$client->fetchAccessTokenWithAssertion();

 

Dimensions and Metrics

Google analytics id는 위에서 확인한 ID로 대체해주면 된다.

Metrics는 , (콤마)로 연결하여 여러 개가 가능 하지만 Dimensions는 한 개만 설정 가능하다.

 

목록은 https://ga-dev-tools.appspot.com/dimensions-metrics-explorer/ 에서 확인 하자.

$analytics = new \Google_Service_Analytics($client);
$param = array(
	'dimensions' => '<Dimensions>'
);

$res = $analytics->data_ga->get(
	'ga:<Google analytics id>',
	'30daysAgo',
	'today',
	'<Metrics>',
	$param
);

if (count($res->getRows()) > 0) return $res->getRows();
return [];

$param 부분에 dimensions 이외 filters 속성을 이용하면 원하는 검색도 가능하다.

아래 링크를 확인하여 사용할 수 있는 속성도 확인해 보자.

Query Explorer — Google Analytics Demos & Tools

Overview Sometimes you just need to explore. This tool lets you play with the Core Reporting API by building queries to get data from your Google Analytics views (profiles). You can use these queries in any of the client libraries to build your own tools.

ga-dev-tools.appspot.com

 

Query 예시

$param = array(
	"dimensions": "ga:eventAction",
    "filters": "ga:eventCategory=~^news"
);

$res = $analytics->data_ga->get(
	'ga:<Google analytics id>',
	'30daysAgo',
	'today',
	'ga:totalEvents',
	$param
);

 

웹사이트에서 이런저런 Event를 수동으로 적재한 데이터가 있어 관련 내용을 조회하니 아래와 같은 결과를 얻었다.

[
  [
    [
      "click_navigation",
      "1291"
    ],
    [
      "click_toolbar",
      "100"
    ],
    [
      "page_view",
      "2873"
    ]
  ],
  [
    [
      "click_navigation",
      "2291"
    ],
    [
      "click_toolbar",
      "463"
    ],
    [
      "page_view",
      "4172"
    ]
  ]
]

 

Chart 연동

API 호출하여 얻은 결과물을 이제 Chart가 원하는 형태로 포맷만 변환하면 사용할 수 있다.

Chart 라이브러리는 Google charts, EChart, Chart.js 등이 있고, 모두 무료이면서 사용이 쉽다.

Library마다 맥락은 비슷 하지만  형태가 모두 다르니, API Response data와 사용할 Chart의 형태로 변환해 주는

Adaptor를 만들어 쉽게 관리하도록 하자. (이런 플러그인도 있으면 좋을 듯... 누가 좀...)

 

마무리

개발보다는 API를 사용하기 위한 환경을 검색하고 구성하는데 시간이 많이 소요되었다.

 

본 예제에서는 PHP를 사용하였지만 Python, Java, Node JS 라이브러리도 있고, Javascript로도 처리할 수도 있다.

API KEY와 같은 중요한 값의 노출이나 Auth인증, n개의 차트 데이터 등을 모두 비동기로 처리하면 속도의 문제, 유지보수, Code의 복잡성 때문에 가급적 Serverside에서 처리하는 것이 좋다.

 

참고 내용

Dimensions & Metrics Explorer — Google Analytics Demos & Tools

Dimensions & Metrics Explorer The Dimensions & Metrics Explorer lists and describes all of the dimensions and metrics available through the Core Reporting API. The Dimensions & Metrics Explorer has the following features: Explore all of the dimensions and

ga-dev-tools.appspot.com

Hello Analytics API: PHP quickstart for web applications

This tutorial walks through the steps required to access a Google Analytics account, query the Analytics APIs, handle the API responses, and output the results. The Core Reporting API v3.0, Management API v3.0, and OAuth2.0 are used in this tutorial. Note:

developers.google.com