:: 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 リファレンス ディメンションと指標のリファレンス    

   

 

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

最後に、以下の2つをメモしておきます

  • 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

RELATED POSTS

LEAVE A REPLY