2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Google Analytics API v2をPHPで使う

Last updated at Posted at 2018-05-16

Google Analytics APIをPHPで使おうとして、苦労した

Google Analytcs APIを使う必要があった、Amazon AWSのEC2からPHPで使おうと思いたって、調べた。

で、見つけたのがこことか、
https://syncer.jp/google-analytics-api-tutorial
こちら。
https://www.spiceworks.co.jp/blog/?p=10825

こちらを使うために、いろいろ苦労したので、メモを残しておく。

環境の準備

PHPのバージョンアップ

Amazon Linuxのインスタンスはすでにあったが、PHPを使おうと決めたので、まずはComposerのインストールをしなければならない。

Amazon LinuxのデフォルトのPHPのバージョンは要件に合わないので、最初5.4.0をYum経由でインストールした。
しかし、進めていたら5.5.0以上が必要とのことだったので、再度yumで5.5.0をインストールした。

httpdのバージョンアップ

Amazon AWSのデフォルトのhttpdのバージョンは2.2.34のようで、Composerで必要な2.4.xにバージョンアっプした。

インスタンスのアップグレード

上記準備をして、composerをインストールしようとしたところ、メモリ不足!
SWAPを増やそうにもディスクもフル、ということで、EC2のインスタンスをアップグレード、ディスク容量も増やした。

APIの利用準備

環境は整ったので、APIの利用準備はリンク先の情報にしたがって進めた。

APIの利用

最終的にAPIを利用してみようと、書いてあることそのままを実行した。しかしPHPのエラーで動かない。

PHP Fatal error: Class 'Google_Auth_AssertionCredentials' not found in /var/www/html/api/index.php on line 35

調べてみると、Google Analytics API for PHPはv2になっており、ソースをかなり修正しなければいけないことがわかった。要修正点の詳細はこちら。

diffはこちら

*** index.php.orig    2018-05-15 09:24:57.610308228 +0000
--- index.php.v2      2018-05-15 09:52:56.098575392 +0000
***************
*** 19,49 ****
  define('CSV_DIR', __DIR__.'/csv');

  // google-api-php-clientを呼び出します。
! require_once __DIR__.'/google-api-php-client-master/src/Google/autoload.php';
  // 念のためタイムゾーンの設定をします。
  date_default_timezone_set('Asia/Tokyo');

  $ymd = sprintf("%s01", $target_yyyymm);

- $json = file_get_contents(JSON_PATH);
- $json = json_decode($json, true);
-
- $client_email = $json['client_email'];
- $private_key  = $json['private_key'];
-
  $scopes = array(Google_Service_Analytics::ANALYTICS);
- $credentials = new Google_Auth_AssertionCredentials(
-     $client_email,
-     $scopes,
-     $private_key
- );

  $client = new Google_Client();
  $client->setApplicationName("Google Analytics PHP API");
- $client->setAssertionCredentials($credentials);
- if ($client->getAuth()->isAccessTokenExpired()) {
-     $client->getAuth()->refreshTokenWithAssertion();
- }
  $analytics = new Google_Service_Analytics($client);

  $date1 = date('Y-m-01', strtotime($ymd));
--- 19,36 ----
  define('CSV_DIR', __DIR__.'/csv');

  // google-api-php-clientを呼び出します。
! require_once __DIR__.'/google-api-php-client-master/vendor/autoload.php';
  // 念のためタイムゾーンの設定をします。
  date_default_timezone_set('Asia/Tokyo');

  $ymd = sprintf("%s01", $target_yyyymm);

  $scopes = array(Google_Service_Analytics::ANALYTICS);


  $client = new Google_Client();
+ $client->setAuthConfig(JSON_PATH);
+ $client->setScopes($scopes);
  $client->setApplicationName("Google Analytics PHP API");
  $analytics = new Google_Service_Analytics($client);

  $date1 = date('Y-m-01', strtotime($ymd));

感想

  • ここには書いていないが、gitとか、いろいろなツールを使わないと目的が達成できず、なかなか素人さんには難しい
  • APIのバージョンアップって、旧バージョンの使い方はいきなり切っちゃうのがGoogle流なのだろうか?
  • 当然ではあるが、サンプルコードはエラーが起こった際のメッセージが不親切なので、なかなかなぜ動かないのか分からないだろうなぁ。
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?