:: Google APIでアクセス実績を取得し、crontabでcsvファイルを自動生成する方法 php

/ , , / WEB制作・開発

先日、業務効率化のためにGoogle APIでデータを取得してcsv保存し、cronで毎日バッチ処理をする作業を行った。GoogleのAPIまわりが少し分かりずらかったのと、phpを使ったcsv保存にもブラウザでアクセスした場合とコマンドラインからアクセスした場合とで違ったのでAPI連携からcsvで保存、cronで自動処理までの一連の流れをメモ。

 

やりたいことは以下の通り。

 

(1) 日別URL別のページビュー数、ページ別訪問数、閲覧開始数を取得したい
(2) phpでコマンドラインでファイルの実行をした際にcsvファイルを出力したい
(3) csvファイル出力の際、日付を指定したい
(4) 毎日6:30amに、バッチ処理を走らせて所定のフォルダにcsvファイルを格納したい

参考になるGoogleの公式サイト
※日本語マニュアルは最新でない場合があるので英語版を確認してください。
(自分も日本語版で見ていて内容が違って少しはまりましたのでご注意ください。)

 

PHPクイックスタート ウェブアプリ
PHPクイックスタート サービスアカウント
アカウント概要のlist
API リファレンス
ディメンションと指標のリファレンス

 

 

目次

1. Google Developers Consoleの設定
2. Google Analyticsにユーザー登録
3. phpでcsv出力
4. crontabの設定

 

Google Developers Consoleの設定

まずはAPIを使えるようにするため、Googleが提供しているGoogle Developers Consoleを使って設定をしていきます。

今回はGoogle Analyticsのデータ連携です。Analyticsで使っているGoogleアカウントでログインしてください。

160312_photo001https://console.developers.google.com

まず最初に、プロジェクトを作成してください。プロジェクト名は何でも構いません。

次にPermissionsにいき、service accountを作成します。

160312_photo002

Service accountsでCreates service accountを押します。

160312_photo003

Name欄は何でもいいので、とりあえずgoogle-api-testとしました。 Private KeyはP12ファイルとしCreateします。するとP.12ファイルが作成されるので保存しておきましょう。

160312_photo004

次に、API Managerへ行きAnalytics APIを許可します。

160312_photo006

続いてCredentials画面でOAuth client IDを作成します。

160312_photo007

OAuth consent screenを事前に登録してください。

今回はCentosにphpファイルを配置し、phpコマンドで実行するためApplication typeはWeb applicationとします。

制限事項は一応、MAMP用とVagrant用を両方登録しておきました。こちらは適宜変更してください。

http://localhost MAMP用
http://192.168.33.10 Vagrant用

http://localhost/oauth2callback MAMP用

※http://192.168.33.10/oauth2callbackはなぜか登録できなかったのでMAMP用だけ登録しました。

無事に作成できると以下のようになります。 160312_photo008   最後に、以下の3つをメモしておきます

●Client ID:API Manager –> Credentials –> から確認できます。

形式:***********-********************************.apps.googleusercontent.com

●Email address:Permissions –> Service accountsから確認できます。

形式:service-account@grooving-earth-****.iam.gserviceaccount.com

Google Developers Consoleの設定は以上です。

Google Analyticsにユーザー登録

 

次に、先ほど生成したメールアドレスのユーザーにGoogle Analyticsにアクセスできるように権限を与えます。

 

Google Analyticsを開いてアナリティクス設定に移動します。160312_photo009

 

先ほどメモしておいたメールアドレスを登録します。アカウントのアクセス許可は表示と分析とします。160312_photo010

 

次にビューのビュー画面よりビューIDを確認しておきます。 160312_photo011

 

以上で、Google Analyticsの設定は終了です。

 

 

phpでcsv出力

 

準備が整ったところでphpを書いていきましょう。実装にはGoogleが提供しているgoogle-api-php-clientを使います。ファイルはgitに公開されているので一式をダウンロードして所定のフォルダに入れましょう。

https://github.com/google/google-api-php-client

※2016/3/12現在、masterブランチとv1-masterブランチがありますが、v1-masterブランチをダウンロードしてください。

同じ階層に、Service accountsで保存したP12ファイルを保存します。
階層は以下の通りになります。

google-api-test
|google-api-php-client  <–  gitからダウンロードしたフォルダ
|********.p12  <–  P12ファイル
|googleanalytics.php  <–  ここにcsvを出力するプログラムを書き込みます。

 

では早速プログラムを書いていきましょう。

3行目で、autoload.phpを読み込みます。
6行目で、サービスアカウント名を入力します。ここにはClient IDが入ります。
8行目で、P.12ファイルを読み込みます。
10行目で、アナリティクスのビューIDを入力します。
51行目で、取得するディメンションと指標を指定しています。
59行目で、jsonに変換しています。
60行目で、jsonをデコードしています。
73 – 77行目で、タイトルを指定しています。
81 – 83行目で、$objの連想配列から値を取得しています。
85 – 95行目で、csvに保存しています。
86行目で、ファイル名を指定しています。

取得するディメンションは自由に変えることができます。取得できるディメンションと指標は公式サイトを確認してください。
ディメンションと指標のリファレンス

※Google APIで取得できるデータは、1回のリクエストあたり1万行です。

上記のphpフィアルをコマンドラインから実行するとcsvファイルが生成されます。

-> 2016-03-12.csv csv形式なのでカンマ(,)区切りです。

 

なお、以下のソースだとブラウザからアクセスした場合にcsvファイルが生成されます。今回は使いませんが参考までに。
※違うのは最後の3行です。

 

 

crontabの設定

どこでもいいのでフォルダを作成して配置します。今回はroot直下にgoogle-api-testフォルダを配置しました。google-api-testフォルダの中身はこんな感じです。

 

google-api-test
|google-api-php-client
|********.p12 |googleanalytics.php
google-analytics-api-to-kintone.sh <–phpファイルを実行してフォルダを移動するコマンドです。
Analytics-csv  <–バッチで作成したcsvファイルはここに格納します。

 

google-analytics-test.sh の中身

3行目で、phpファイルを実行しています。 4行目で、/root/google-api-test/配下にある拡張子がcsvのファイルを全てAnalytics-csvに移動します。   crontab の中身

 

以上で全て完成です。今回は業務効率化として最終的にcsvまで保存してバッチで実行させる処理としましたが、GoogleのAPIはリアルに表示できたりAnalyticsで定期的に作業している工程を自動化したりと、いろいろと応用が利きます。ぜひ試してみてください。

もし内容に誤りがありましたらコメント欄でお知らせください。

SNS SHARE

LEAVE A REPLY