環境
php: 7.1
Google アナリティクスのAPIをPHPから利用する場合、環境の準備は大変ですが 取得するだけのプログラムであればGoogleのライブラリを利用すれば簡単に利用する事が出来ます。
(当手順ではプログラムの修正は1行のみ)
目次
google api console にアクセス
Google Cloud Platform では、Google と同じインフラストラクチャでアプリケーション、ウェブサイト、サービスを構築、導入、拡大することができます。
APIの有効化
右メニューの「ライブラリ」から「Google Analytics Reporting API」を有効にします。認証の有効化
※プロジェクトの作成を要求された場合は別途プロジェクトを作成する必要があります。右メニューの「認証情報」の「認証情報作成」の「サービスアカウントキー」よりサービスいアカウントキーを作成します。 各項目には以下の設定を行ってください。
サービスアカウント | 新しいサービスアカウント |
---|---|
サービスアカウント名 | 任意の名前 |
役割 | project → 閲覧者 |
キーのタイプ | JSON |
Google Analytics Reporting APIを利用する際に必要になります。
当手順ではダウンロードしたjsonを「my.json」にリネームして利用します。
google アナリティクスの設定
API用メールアドレスの取得
jsonファイルを適当なテキストエディタで開き「client_email」に設定されているメールアドレスを控えてください。APIユーザーの設定
google アナリティクスに接続して右下の管理アイコンをクリックしてAPIで取得したいビューを選択します。ビューの「ユーザー管理」先に取得した「client_email」を設定してください。
ビューIDの取得
次にビューの「ビュー設定」を開いて表示されているる「ビューID」を控えてください。ライブラリの準備
https://github.com/google/google-api-php-client/releases上記からライブラリをダウンロードして下さい。
当手順作成時の最新版は「2.2.1」になります。
※ composerを利用する場合は下記(ステップ2)が参考になります。
https://developers.google.com/analytics/devguides/reporting/core/v3/quickstart/web-php?hl=ja
プログラム作成
ライブラリの配置
実装したいディレクトリ配下に取得したキー、ライブラリを以下のように配置して下さい。
./
┣ my.json
┗ /google-api-php-client-2.2.1
┣ my.json
┗ /google-api-php-client-2.2.1
プログラム作成
同ディレクトに「index.php」として以下のプログラムを実装します。4行目の「_VIEW_ID」の値を先に取得した「ビューID」の値に変更するだけで動作します。
ソースのダウンロード(index.zip)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
<?PHP require_once __DIR__ . '/google-api-php-client-2.2.1/vendor/autoload.php'; // ライブラリの設定 define("_KEY_FILE_LOCATION",__DIR__ . '/my.json'); // 認証キーファイルの設定 define("_VIEW_ID","00000000"); // ビューIDの設定 // 認証 $analytics = initializeAnalytics(); // レポート取得 $response = getReport($analytics); echo "<pre>"; print_r( procResults($response) ); echo "</pre>"; exit(); ?> <?PHP //****************************************************************************** // // 認証 // //****************************************************************************** function initializeAnalytics() { $client = new Google_Client(); $client->setAuthConfig(_KEY_FILE_LOCATION); $client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']); $analytics = new Google_Service_AnalyticsReporting($client); return $analytics; } //****************************************************************************** // // レポート取得 // //****************************************************************************** function getReport($analytics) { // 対象期間 $dateRange = new Google_Service_AnalyticsReporting_DateRange(); $dateRange->setStartDate("2daysAgo"); // 開始日 $dateRange->setEndDate("today"); // 終了日 // セッション $sessions = new Google_Service_AnalyticsReporting_Metric(); $sessions->setExpression("ga:sessions"); $sessions->setAlias("sessions"); // ページビュー $pageviews = new Google_Service_AnalyticsReporting_Metric(); $pageviews->setExpression("ga:pageviews"); $pageviews->setAlias("pageviews"); // 日別 $date = new Google_Service_AnalyticsReporting_Dimension(); $date->setName("ga:date"); // リクエストの作成 $request = new Google_Service_AnalyticsReporting_ReportRequest(); $request->setViewId(_VIEW_ID); // ビューID $request->setDateRanges($dateRange); // 対象期間 $request->setMetrics(array($sessions,$pageviews)); // セッション及びページビュー $request->setDimensions(array($date)); // 日別 // レポートの取得 $body = new Google_Service_AnalyticsReporting_GetReportsRequest(); $body->setReportRequests( array( $request) ); return $analytics->reports->batchGet( $body ); } //****************************************************************************** // // データ加工 // //****************************************************************************** function procResults($reports) { $ret = array(); 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++) { $work = array(); $row = $rows[ $rowIndex ]; $dimensions = $row->getDimensions(); $metrics = $row->getMetrics(); for ($i = 0; $i < count($dimensionHeaders) && $i < count($dimensions); $i++) { $work[$dimensionHeaders[$i]] = $dimensions[$i]; } $metrics = $metrics[0]->getValues(); for ($j = 0; $j < count( $metricHeaders ) && $j < count( $metrics ); $j++) { $entry = $metricHeaders[$j]; $values = $metrics; $work[$entry->getName()] = $values[$j]; } $ret[] = $work; } } return $ret; } ?> |