しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

2014 年も終わりなので Google Analytics API を使ってアクセス数の多いページを取得してみた

ちょっと前に緑色のフリーコンテンツ氏が、以下のようなツイートをしていたのを思い出しました。

もう営業日終わっただろうし、無いんだったら作ればいいのよ!という感じ。Google Analytics API を使えば出来るんじゃないの?と思ったので、適当なキーワードで検索すると既に先人がちらほらと。

Google Analytics API v3をPHPから利用する方法 | karakaram-blog

ほぼそのまんまで使える!と思ったので、C# に落とし込みました。

var certificate = new X509Certificate2(Convert.FromBase64String(ServiceAccountCertificate), "notasecret", X509KeyStorageFlags.Exportable);

var credential = new ServiceAccountCredential(new ServiceAccountCredential.Initializer("SERVICE_ACCOUNT_ID")
{
    Scopes = new[] { AnalyticsService.Scope.Analytics, AnalyticsService.Scope.AnalyticsReadonly }
}.FromCertificate(certificate));

var service = new AnalyticsService(new BaseClientService.Initializer
{
    HttpClientInitializer = credential,
    ApplicationName = "sample",
});

var resource = service.Data.Ga.Get("VIEW_ID", "2014-01-01", "2014-12-31", "ga:pageviews");

resource.Dimensions = "ga:pageTitle,ga:pagePath";
resource.Sort = "-ga:pageviews";
resource.MaxResults = 10;

var data = resource.Execute();

foreach (var row in data.Rows)
{
    Console.WriteLine("{0}, {1}, {2}", row[0], row[1], row[2]);
}

めんどくさかったので日付とかはハードコーディングしてあります。Dimentions などの指定が PHP SDK とは異なり、メソッドの引数で行えないのがちょっと罠っぽかったです。

f:id:shiba-yan:20141228003854p:plain

実行してみたところ、ちゃんとアクセス数が多い順にデータが取れました。

後ははてなブログで使いやすいように、はてな記法で出力する形で整えてあげれば完成です。

おまけ

Google Analytics API を使うのがめんどくさいという人は、普通にブラウザから確認できるのでこっちでもいい感じがします。URL は取りにくいですけど。

f:id:shiba-yan:20141228001537p:plain

それでは皆さん、良いお年を。