おぼえがき

おぼえがき

googleAnalyticsリアルタイムAPIとiftttを使ってトレンドのtweetをやってみる

2015-07-29 | googleanalytics






■要件:
やりたいことは、リアルタイムに、今はやっている記事を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)を取ってみた

最新の画像もっと見る

コメントを投稿