■要件:
やりたいことは、リアルタイムに、今はやっている記事をtwitterで拡散してあげたい。
googleAnalyticsのカスタムアラートは1日後?で遅いんだよね。
Core Reporting APIも即時じゃない。
1から作るの面倒だから、なるべく楽したい
■処理の流れ:
Analytics Real Time Reporting APIの利用許可申請を行って、
このAPIを利用して、定期的に現在人気のある記事をリアルタイムで取得。
取得した内容をgmailに送ると、iftttが食べにきて、勝手につぶやいてくれる
■必要な技術:
googleAnalyticsのリアルタイムAPI
APIの利用申請は事前に済ませる必要があるので、ここを参照
ifttt(gmailに送って、それをiftttが捕まえてtweetする)
※oauth認証作るのが面倒くさいから、iftttにお願いする
■ifttt(これ、イフトって呼ぶの?アイフティティティって言ってた)の設定
こんな感じで、「buzz_entry:」ってサブジェクトのメールが届いたら、自動で
本文の内容をつぶやくようにする。
■googleアナリティクスAnalytics Real Time Reporting APIの利用申請
ここに行って、
申請を書く。
申請でよくわからなかったのは、
Developer Console Project Number
ってところ、これは、https://console.developers.google.comに行って、下記の番号を登録すりゃいい
許可してもらえる(30分くらいで許可下りた)
許可が下りたかどうかわからないから、こちらで定期的に試してみる
下記の通りデータが取れたか確認。
さて、コーディング
ちなみに、使える、ディメンションと、メトリック(指標)は下記の通り
https://developers.google.com/analytics/devguides/reporting/realtime/dimsmets/
ソースコードはこんな感じ
require_once 'google-api-php-client/src/Google/autoload.php';
define('CLIENT_ID', 'xxxxx');
define('SERVICE_ACCOUNT_NAME', 'xxxx');
define('KEY_FILE', 'xxxx');
define('PROFILE_ID', 'ga:xxxxx');
class gaBaseController
{
public $profile_id = null;
function __construct($profile_id)
{ /* {{{ */
$this->profile_id = $profile_id;
} /* }}} */
}
class ga_test extends gaBaseController
{
function __construct($argv = null)
{ /* {{{ */
parent::__construct(PROFILE_ID);
} /* }}} */
public function main()
{ /* {{{*/
$client = new Google_Client();
$client->setApplicationName("analytics api");
$client->setClientId(CLIENT_ID);
$client->setAssertionCredentials(new Google_Auth_AssertionCredentials(
SERVICE_ACCOUNT_NAME,
array('https://www.googleapis.com/auth/analytics'),
file_get_contents(KEY_FILE)
));
$service = new Google_Service_Analytics($client);
// リアルタイムデータを取得する
$results = $service->data_realtime->get(
PROFILE_ID,
'rt:activeUsers', // リアルタイムアクティブユーザー数を取得
//ソーシャルではやっているとか、そういう制限つけたかったら、オプションもっとつけないとね(rt:medium )とか
array('dimensions' => 'rt:PageTitle')
);
print_r($results->getRows());
この辺で、一定数のアクティブユーザーの敷居が超えていたら、メールを送る処理
メールのタイトルは、iftttのレシピと同じ、「buzz_entry:」
メールの本文は、○○って、記事が今見られてますよーー!!って感じかな
}
}
$obj = new ga_test();
$obj->main();
※このソースだと、同じ記事を何度もtweetすることになっちゃうから、その辺の
キャッシュは考えないとだめだね。
一応、このロジックでいける。
ちなみに、、、、
getRowsでデータ取得しているけど、使えるメソッドは、下記の通り、あんまりヘルプないなぁ
[0] => setColumnHeaders
[1] => getColumnHeaders
[2] => setId
[3] => getId
[4] => setKind
[5] => getKind
[6] => setProfileInfo
[7] => getProfileInfo
[8] => setQuery
[9] => getQuery
[10] => setRows
[11] => getRows
[12] => setSelfLink
[13] => getSelfLink
[14] => setTotalResults
[15] => getTotalResults
[16] => setTotalsForAllResults
[17] => getTotalsForAllResults
[18] => rewind
[19] => current
[20] => key
[21] => next
[22] => valid
[23] => count
[24] => offsetExists
[25] => offsetGet
[26] => offsetSet
[27] => offsetUnset
[28] => __construct
[29] => __get
[30] => toSimpleObject
[31] => assertIsArray
[32] => __isset
[33] => __unset
■注意事項
Analytics Real Time Reporting APIは、利用制限が存在している。
ここに
書いてあって、あふれるようなら、キャッシュしろって書いてある
これで、開発工数を少なくして、リアルタイムではやっている情報を拡散することできるね。
アナリティクスのリアルタイムAPIこういうところで使えるかもね
twitterアカウントです
■そのほかのアナリティクスねた
■たぶんこれが一番簡単!googleAnalyticsでスクロール率を計測する方法
■ビーコン(BLE)とgoogleAnalyticsで交通量の測定をやってみる
■google analyticsでtagmanagerのルックアップテーブルを使ってみる
■アナリティクスでカスタムディメンションとデータインポートとタグマネージャとAPIでデータ分析をしてみる
■php5.2でもgoogleanalyticsAPIを利用したい
■Google Analytics Individual Qualification(GAIQ)を取ってみた