アクセス解析のまとめってどうしてますか?Google アナリティクス + Google スプレッドシート

powered by hm solution

お問い合わせ:0120-290-727
受付時間:10:00~18:00(土日祝は除く)

お問い合わせ

アクセス解析のまとめってどうしてますか?Google アナリティクス + Google スプレッドシート

Spreadsheet
秋ですね。
もう寒いぐらいです。
お腹のサイズが気になり、腹筋をはじめてみました。。。
いつまでつづくことやら。。。

みさんはアクセス解析のまとめを作るのにどうされてますか?
ナイスミドルは、今までアクセス解析のデータをまとめるのに、チマチマちまちまとAnalyticsのデータを一生懸命コピペしていたんですよ。

ちまちま チマチマ
(#゚Д゚)y-~~イライラ

ちまちま チマチマ ちまちま チマチマ
ヽ(`Д´#)ノ ムキー!! やってられっか!!

エクスポートすればいんじゃね?バカじゃね?と思ったあなたそれも正しい!!
でもね、集計内容によって結局最後にまとめて、必要なデータを足したり引いたりとか選別してとやってたら結構手間。。。
サイトによって集計内容違うし、、、

それでナイスミドル考えた!
同じGoogleさんのサービスなんだからアナリティクスのデータをスプレッドシートで自動で取得できね?
で調べてみました。

調べてみたら、チュートリアルあったヽ(´ー`)ノバンザーイ
Automated Access to Google Analytics Data in Google Spreadsheets
でも英語。。。。・゚・(ノД`)・゚・。

さてと、、、一瞬英語にひるんだけどやってみよかな。。。

実際にやってみて、アナリティクス API を利用する手続きで蹴躓きました。
API key を入力する箇所がわからん。。。ヽ(´Д`;)ノアゥ…
そんなもんで、API key を入力せずにできんもんかと手順を変えてやってみたら出来た!!

すること

  • Google スプレッドシートを準備
  • Google Appsスクリプトを作成
  • Google アナリティクス APIを有効にする
  • サンプルコードを入力・実行

以上な感じ。

Google スプレッドシートを準備

Spreadsheet

今回はお試しなので、適当につくって〜

Google Appsスクリプトを作成

Spreadsheet

スプレッドシートができたら、Appsスクリプトを作成。
メニューの ツール- >スクリプトエディタ…をクリック。

Spreadsheet

ポップアップがでるので、空のプロジェクトをクリック。

Spreadsheet

できたら、とりあえず保存しておきましょか。
プロジェクト名はかっこよく「無題のプロジェクト」!

Google アナリティクス APIを有効にする

Spreadsheet

メニューの リソース- >Google APIを使用…をクリック。

Spreadsheet

ポップアップがでるので、Google Analytics API を ON にします。
それから Google APIs Console をクリックして、Google apisの画面を表示させます。

Google API Console

Google apis の画面で Services の Analytics API を ON にします。

Spreadsheet

プロジェクトの画面に戻って OK をクリックで準備終了。

サンプルコードを入力・実行

あとは、チュートリアルのサンプルコードを貼り付けて実行。
サンプルは、トップ250のGoogleモバイル検索キーワードをGoogle AnalyticsのAPIへ問い合わせて、Googleスプレッドシートに結果を出力するらしい。。。

ではでは、空のプロジェクトへコードを追加します。

Google AnalyticsのAPIと連携

function runDemo() {
  try {

    var firstProfile = getFirstProfile();
    var results = getReportDataForProfile(firstProfile);
    outputToSpreadsheet(results);

  } catch(error) {
    Browser.msgBox(error.message);
  }
}

このコードはエラーがあった場合にメッセージを出してくれるらしいです。

許可ユーザーの最初のビュー(プロファイル)を取得

function getFirstProfile() {
  var accounts = Analytics.Management.Accounts.list();
  if (accounts.getItems()) {
    var firstAccountId = accounts.getItems()[0].getId();

    var webProperties = Analytics.Management.Webproperties.list(firstAccountId);
    if (webProperties.getItems()) {

      var firstWebPropertyId = webProperties.getItems()[0].getId();
      var profiles = Analytics.Management.Profiles.list(firstAccountId, firstWebPropertyId);

      if (profiles.getItems()) {
        var firstProfile = profiles.getItems()[0];
        return firstProfile;

      } else {
        throw new Error('No views (profiles) found.');
      }
    } else {
      throw new Error('No webproperties found.');
    }
  } else {
    throw new Error('No accounts found.');
  }
}

許可されたアナリティクスのアカウントのビューを取得するコードらしいです。

データ用コアレポーティングAPIを問い合せます

function getReportDataForProfile(firstProfile) {

  var profileId = firstProfile.getId();
  var tableId = 'ga:' + profileId;
  var startDate = getLastNdays(14);   // 2 weeks (a fortnight) ago.
  var endDate = getLastNdays(0);      // Today.

  var optArgs = {
    'dimensions': 'ga:keyword',              // Comma separated list of dimensions.
    'sort': '-ga:visits,ga:keyword',         // Sort by visits descending, then keyword.
    'segment': 'dynamic::ga:isMobile==Yes',  // Process only mobile traffic.
    'filters': 'ga:source==google',          // Display only google traffic.
    'start-index': '1',
    'max-results': '250'                     // Display the first 250 results.
  };

  // Make a request to the API.
  var results = Analytics.Data.Ga.get(
      tableId,                  // Table id (format ga:xxxxxx).
      startDate,                // Start-date (format yyyy-MM-dd).
      endDate,                  // End-date (format yyyy-MM-dd).
      'ga:visits,ga:pageviews', // Comma seperated list of metrics.
      optArgs);

  if (results.getRows()) {
    return results;

  } else {
    throw new Error('No views (profiles) found');
  }
}

function getLastNdays(nDaysAgo) {
  var today = new Date();
  var before = new Date();
  before.setDate(today.getDate() - nDaysAgo);
  return Utilities.formatDate(before, 'GMT', 'yyyy-MM-dd');
}

APIを使ってレポートのデータを取得するコードらしいです。

スプレッドシートにデータを挿入

function outputToSpreadsheet(results) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet();

  // Print the headers.
  var headerNames = [];
  for (var i = 0, header; header = results.getColumnHeaders()[i]; ++i) {
    headerNames.push(header.getName());
  }
  sheet.getRange(1, 1, 1, headerNames.length)
      .setValues([headerNames]);

  // Print the rows of data.
  sheet.getRange(2, 1, results.getRows().length, headerNames.length)
      .setValues(results.getRows());
}

APIから取得したデータをスプレッドシートへ出力するコードらしいです。
全部「らしい」なのは、ツッコまないで。。。(´;ω;`)
ヾ(*`Д´*)ノ”理屈はわからんでも、蛇口をひねれば水はでるんじゃ!アクセル踏めば車は走るんじゃ〜いい。。。
以上のコードをコピペして保存しときましょう。

スクリプトの実行

コピペしたら実行です。

apps

虫マークの右側で実行関数を指定するので今回は「runDemo」を選択してやります。
三角マークをクリックして実行します。

apps

すると認証を求められますので続行をクリックします。

apps

それから承認確認されますので承認をクリックしてください。

Spreadsheet

スプレッドシートにもどってこんな感じに表示されてたら成功でっす。

うまくいったかな?

チュートリアルにはスクリプトを自動化することも書いてありましたが、、、
細かい設定は次回にでもやってみよ〜今日はつかれた。。

弊社のスーパーSEO担当えいやん曰く
(´・ω・`) いまごろですか?

もまいらもつかってみればぁ〜
|Д´)ノ~~ アディオス アミーゴ!

powered by hm solution
お問い合わせ
お問い合わせ
gmt
© hm solution, Ltd.