SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ASP.NET MVCからGoogle Analytics APIを使用する

.NETからGoogle Analytics APIを呼び出し、データを取得する

ASP.NET MVCからGoogle Analytics APIを使用する(後編)

  • X ポスト
  • このエントリーをはてなブックマークに追加

HomeControllerの修正

 最後に、HomeControllerのAboutメソッドにメイン処理を記述します。

Google Analytics APIを呼び出すメイン処理(HomeController.cs)
using GaMvcSample.Infra;
using Google.Apis.Analytics.v3;
using Google.Apis.Analytics.v3.Data;
using Google.Apis.Auth.OAuth2.Mvc;
using Google.Apis.Services;
using System.Threading;
using System.Threading.Tasks;
using System.Web.Mvc;

namespace GaMvcSample.Controllers
{
    public class HomeController : Controller
    {
        // (1)Aboutメソッドを変更
        public async Task<ActionResult> About(CancellationToken cancellationToken)
        {
            // MVC用のOAuth接続用クラス
            var authMvcApp = new AuthorizationCodeMvcApp(this, new MyFlowMetadata());
            // 非同期で認証を確認
            var result = await authMvcApp.AuthorizeAsync(cancellationToken);

            // 認可状況を確認
            if (result.Credential == null)
            {
                // 未認証のときは、Googleのログイン画面にリダイレクト
                return new RedirectResult(result.RedirectUri);
            }
            else
            {
                // (2)認可されていれば、Analyticsのサービスを取得
                var service = new AnalyticsService(new BaseClientService.Initializer
                {
                    // 認可情報を設定
                    HttpClientInitializer = result.Credential,
                    // アプリケーション名
                    ApplicationName = "GaMvcSample"
                });

                // (3)GAのサービスから、統計データを取得する基本設定(GAのビューID、開始日、終了日、メトリクス名)
                DataResource.GaResource.GetRequest r =
                    service.Data.Ga.Get("ga:79626416", "2013-11-30", "2013-12-02", "ga:pageviews");

                // (4)パラメータを設定して実行
                // 取得するディメンジョンとしてページタイトルを指定
                r.Dimensions = "ga:pageTitle"; 
                // ソート順を指定
                r.Sort = "-ga:pageviews";
                // 取得する件数を指定
                r.MaxResults = 10;

                // (5)データ取得を実行
                GaData d = r.Execute();

                // 結果をViewBagに設定
                ViewBag.Headers = d.ColumnHeaders;
                ViewBag.Rows = d.Rows;
                return View();
            }
        }
    }
}

 (1)のAboutメソッドは、Taskクラスを戻り値とする非同期アクションで、MVC用のOAuth接続用クラスのAuthorizationCodeMvcAppクラス(Google.Apis.Auth.OAuth2.Mvc名前空間)のAuthorizeAsyncメソッドを呼び出しています。このメソッドでは、Googleに認証状態を確認し、必要に応じてGoogleのログイン画面を表示します。

 (2)の部分では、Google Analyticsのサービスからデータを取得するロジックを記述しています。ここでは認証情報を元に、AnalyticsServiceクラス(Google.Apis.Analytics.v3名前空間)を取得しています。Google APIのサービスを取得する時には、BaseClientServiceクラスのInitializerを使用します。なお、ApplicationNameは日本語だとエラーとなるため注意してください。

 (3)の部分では、AnalyticsServiceのデータリソースを取得するために「Data.Ga.Get("ga:ビューID", "統計取得開始日", "統計開始終了日", "ga:メトリクス名")」という記述をしています。分析データを取得したい対象をビューID(従来のプロファイルID)で指定します。このIDは、Google Analyticsの管理画面のアナリティクス設定から確認できます。

Google Analyticsの画面で、ビューIDを確認
Google Analyticsの画面で、ビューIDを確認

 集計開始日、集計終了日の他、メトリクスに測定/集計する指標を設定します。ここではページビューを表す「ga:pageviews」を指定しています。カンマ区切りで「ga:visits,ga:visitors」のように複数指定することも可能です。

 続いて、(4)の部分では、取得に関するパラメータを設定してします。Dimensionsプロパティには数字をグルーピングする属性を設定します。Google Analyticsの管理画面でプライマリディメンジョンやセカンダリディメンジョンとして表示されている項目です。例えば、ページURLを表す"ga:pagePath"などを設定できますが、ここではページタイトルを表す"ga:pageTitle"を設定しています。Sortプロパティでは、"-ga:pageviews"というようにページビューを降順で指定しています。マイナスをつけることで降順となります。

 なお、これらの設定内容は、Analyticsのリファレンスページから確認できます。さらに、Google Analytics Query Explorerというツールを使用すると、GUIから簡単にリクエストのテストができます。

Google Analytics Query ExplorerでAPIをテスト
Google Analytics Query ExplorerでAPIをテスト

 (5)の部分では、設定したリクエストをExecuteメソッドで実行しています。実行した結果は、GaDataクラス(Google.Apis.Analytics.v3.Data名前空間)に格納されます。

 なお、Google Analytics APIのリファレンスドキュメントソースコードも公開されているので、クラス概要やメンバーの情報を知りたい時には参考にすると良いでしょう。

ビューAbout.cshtmlの変更

 APIから取得したデータを表示するために、Views\HomeのAbout.cshtmlを変更しています。ここでは、APIから取得したデータを画面に表示しています。

APIから取得したデータを表示(About.cshtml)
@{
    ViewBag.Title = "GoogleAnalyticsのデータ取得表示";
}
<h2>@ViewBag.Title</h2>

<table border="1">
    <thead>
        <tr>
            @foreach (var item in @ViewBag.Headers)
            {
                <td>@item.Name (@item.DataType / @item.ColumnType) </td>
            }
        </tr>
    </thead>
    <tbody>
        @foreach (var item in @ViewBag.Rows)
        {
            <tr>
                <td>@item[0]</td>
                <td>@item[1]</td>
            </tr>
        }
    </tbody>
</table>

 以上で、コーディングは完了です。

次のページ
実行して動作を確認

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
ASP.NET MVCからGoogle Analytics APIを使用する連載記事一覧
この記事の著者

WINGSプロジェクト 青木 淳夫(アオキ アツオ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7595 2014/02/13 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング