Google Analytics API : PHP
구글 애널리틱스가 아닌 외부에서 데이터에 접근하기 위해 PHP로 구글 애널리틱스 API 사용법을 정리해보겠습니다.
1.사이트를 구글 애널리틱스 콘솔에 등록
2.구글 개발자 콘솔에서 새로운 프로젝트 생성
3.프로젝트 관리자에서 서비스 계정 생성 -> 키파일 다운로드
4.구글 애널리틱스 콘솔에 3번에서 생성된 계정을 사용자에 추가
5.API 호출하는 PHP 코드 작성
1.새로운 프로젝트 생성
[계속] 다음에 [사용자 인증 정보로 이동] 다음에 나오는 인증 정보 추가 화면은 그냥 넘어갑니다.
2.서비스 계정 생성 및 키파일 다운로드
API를 통해 데이터를 송수신해줄 서비스 계정을 생성합니다.
또 보안을 위해 키파일로 사용할 파일도 다운로드 합니다.(JSON)
서비스 계정 세부정보는 이름만 입력하고 다음으로 진행합니다.
이 서비스 계정에 대한 엑세스 권한 부여도 다음으로 진행합니다.
다음화면에서 [키만들기]를 선택하고 JSON 유형으로 다운로드 받고 완료합니다.
완료화면에서 나타나는 서비스 계정 목록중 [이메일]을 따로 복사해 둡니다.
3.애널리틱스 콘솔에 사용자 추가
애널리틱스 콘솔 [관리] 화면에서 [보기 사용자 관리]를 선택합니다.
[사용자 추가]를 선택하고 이메일에 2번 항목에서 복사했던 이메일을 추가합니다.
4.PHP 코드 작성
PHP 코드를 작성하기 위해 몇가지 준비를 해아합니다.
Google API Library for PHP : 구글 애널리틱스 PHP용 API 라이브러리
VIEW_ID : 추적하려는 애널리틱스 콘솔 ID
키파일 : 보안을 위해 필요한 키파일
가져오려는 데이터 항목
API 다운로드 : https://github.com/googleapis/google-api-php-client
VIEW ID 확인 : https://ga-dev-tools.appspot.com/account-explorer/
데이터 항목/조건 목록 : https://ga-dev-tools.appspot.com/dimensions-metrics-explorer/
Source
<?php
// Load the Google API PHP Client Library.
require_once __DIR__ . '/vendor/autoload.php';
$analytics = initializeAnalytics();
$response = getReport($analytics);
printResults($response);
// 애널리틱스 호출
function initializeAnalytics() {
$KEY_FILE_LOCATION = __DIR__.'<키파일 이름>';
$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) {
$VIEW_ID = "<VIEW ID>";
// Create the DateRange object.
$dateRange = new Google_Service_AnalyticsReporting_DateRange();
$dateRange->setStartDate("today");
$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");
$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 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");
// 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 );
}
// 출력
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] . "<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] . "<br>");
}
}
}
}
}
?>
API와 키파일, VIEW ID를 모두 입력하고 호출하면 출력되는걸 확인할 수 있습니다.
Metric과 Demension 목록은 위의 데이터 항목/조건 목록 링크에서 더 볼 수 있습니다.