Hello Analytics Reporting API v4, 서비스 계정용 PHP 빠른 시작

이 튜토리얼에서는 Analytics Reporting API v4에 액세스하는 데 필요한 단계를 안내합니다.

1. API 사용 설정

Analytics Reporting API v4를 사용하려면 먼저 설정 도구를 사용해야 합니다. 이 도구는 Google API 콘솔에서 프로젝트를 만들고, API를 사용 설정하고, 사용자 인증 정보를 만드는 방법을 안내합니다.

사용자 인증 정보 만들기

  1. 서비스 계정 페이지를 엽니다. 메시지가 표시되면 프로젝트를 선택합니다.
  2. 서비스 계정 만들기를 클릭한 다음 서비스 계정의 이름과 설명을 입력합니다. 기본 서비스 계정 ID를 사용하거나 다른 고유한 ID를 선택할 수도 있습니다. 완료하면 만들기를 클릭합니다.
  3. 이어지는 서비스 계정 권한(선택사항) 섹션은 선택하지 않아도 됩니다. 계속을 클릭합니다.
  4. 사용자에게 이 서비스 계정에 대한 액세스 권한 부여 화면에서 키 만들기 섹션이 나올 때까지 아래로 스크롤합니다. 키 만들기를 클릭합니다.
  5. 표시되는 측면 패널에서 키에 사용할 형식을 선택합니다. JSON을 사용하는 것이 좋습니다.
  6. 만들기를 클릭합니다. 새로운 공개 키/비공개 키 쌍이 생성되어 기기에 다운로드됩니다. 생성된 파일은 이 키의 유일한 사본으로 사용됩니다. 키를 안전하게 보관하는 방법을 자세히 알아보려면 서비스 계정 키 관리를 참조하세요.
  7. 비공개 키가 컴퓨터에 저장됨 대화상자에서 닫기를 클릭한 다음 완료를 클릭하여 서비스 계정 표로 돌아갑니다.

Google 애널리틱스 계정에 서비스 계정 추가

새로 만든 서비스 계정의 이메일 주소는 다음과 유사합니다.

quickstart@PROJECT-ID.iam.gserviceaccount.com

이 이메일 주소를 사용하여 API를 통해 액세스할 Google 애널리틱스 보기에 사용자를 추가합니다. 이 튜토리얼에서는 읽기 및 분석 권한만 있으면 됩니다.

2. 클라이언트 라이브러리 설치하기

Composer를 사용하여 PHP용 Google API 클라이언트 라이브러리를 가져올 수 있습니다.

composer require google/apiclient:^2.0

3. 샘플 설정

아래의 샘플 코드를 포함하는 HelloAnalytics.php라는 단일 파일을 만들어야 합니다.

  • 다음 소스 코드를 HelloAnalytics.php로 복사하거나 다운로드합니다.
  • 이전에 다운로드한 service-account-credentials.json를 샘플 코드와 동일한 디렉터리로 이동합니다.
  • VIEW_ID의 값을 바꿉니다. 계정 탐색기를 이용해 보기 ID를 찾을 수 있습니다.

HelloAnalytics.php

<?php

// 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__ . '/service-account-credentials.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 = "<REPLACE_WITH_VIEW_ID>";

  // 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");

  // Create the ReportRequest object.
  $request = new Google_Service_AnalyticsReporting_ReportRequest();
  $request->setViewId($VIEW_ID);
  $request->setDateRanges($dateRange);
  $request->setMetrics(array($sessions));

  $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");
      }

      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");
        }
      }
    }
  }
}

4. 샘플 실행

다음을 사용하여 샘플을 실행합니다.

php HelloAnalytics.php

이 단계를 완료하면 샘플에는 특정 보기에 대한 지난 7일간의 세션수가 출력됩니다.