ラベル Google Analytics の投稿を表示しています。 すべての投稿を表示
ラベル Google Analytics の投稿を表示しています。 すべての投稿を表示

2014-10-29

[ GAS ]GoogleスプレッドシートでGAリアルタイムの数値を取得できたっ!!

いつものように暇つぶしがてら、Googleスプレッドシートとスクリプトエディタを開いてGoogleAnalyticsで作ってるレポートを楽にしようとコードを書いていたらヒントで"Realtime : RealtimeCollection"と出てきた!

さらに続けると…

わくわくしながら"ids"にTableIDとしてアナリティクスのview IDを入れて、"metrics"に"rt:activeUsers"といれて、getRows()したのをログ出力させるsampleを作って…
実際はXXXXXXXXXにはちゃんとした値を入れてあります

sample関数を実行してみると…

なんか数字がでたっ!!!
急いでGAを開いてリアルタイム確認すると…

1違うけどこんなの誤差の範囲内だろ?

という事で、Googleスプレッドシートとそのスクリプトでリアルタイムレポートの数字が取れるようになった!

phpとか書いてサーバで動かさないと駄目だから技術に作ってもらわなきゃ…。いつになるかわかんねぇし…。って諦めていたことがこれでお手軽に実装できる\(^o^)/とうれしくなった瞬間でした。

ちなみに、リアルタイム用のメトリックスは"ga:"ではなく"rt:"で始まるもののようなので、そこは注意が必要なようでした。

メトリックス達とかディメンジョン達については以下を参照。
Dimensions & Metrics Reference(リアルタイムレポート用)
なおベータ版であると思われるので仕様が変わったり人によっては使えなかったりするのかもしれないですという事を一応記述しておきます…

2013-12-20

[ GAS ]シェアレポートをスクリプトで取得してメール送信させてみる

毎月初めに(勝手に)公開している仕事先のサイトの訪問数による色んなシェア(※参照※)、カスタムレポート作ってそこから数値をペタペタコピペしてたけど、暇つぶしがてらGoogle Analyticsにアクセスして集計してブログに投稿するためのhtmlにしたテキストをメール送信するGoogle Apps Scriptを書いて、毎月3日の適当な時間帯のトリガーで設定することにしてみた。

ソースコードをさらしてみる
コンストラクタは”レポートのタイトル”、”レポートの開始日”、”レポートの終了日”を引数にとる、GAからデータを取得させる関数、メール送信用に文字列を作らせる関数を持ったMonthlyShareというクラス(らしきもの)を準備。Main.gsのmain関数で必要なレポート分だけインスタンスを作って本文を作成させてメールする。
って感じ。
Google Analyticsからデータを取得するAnalytics.Data.Ga.get(ids, start-date, end-date, metrics, optionalArgs)の”ids”にあたるtable idだかprofile IDだかとメール送信先のメールアドレスは「プロジェクトのプロパティ」のユーザープロパティに入れておいた。

UserProperties.getProperty( 'プロパティ名' )
※Google Apps Scriptの準備の仕方とかは調べたほうが詳しく書かれているのがいっぱいあるので、特に記述しない…。

/*****
 * MonthlyShare Class
 * @settings { 'month_first', 'month_last', 'report_title', 'report_max' }
*****/
var MonthlyShare = function( settings ) {
  var a;

  // month_first( 1st of last month )
  a = new Date( this.today.getYear(), this.today.getMonth() - 1, 1 )
  , this.month_first = settings.month_first || Utilities.formatDate( a, 'JST', 'yyyy-MM-dd' )
  ;
  
  // month_last( last day of last manths )
  a = new Date( this.today.getYear(), this.today.getMonth(), 0 )
  , this.month_last = settings.month_last || Utilities.formatDate( a, 'JST', 'yyyy-MM-dd' )
  ;

  // report_title
  this.report_title = settings.report_title || this.report_title;

  // report_max
  this.report_max = settings.report_max || this.report_max;
};

MonthlyShare.prototype = {
  ga_profile_ids: UserProperties.getProperty( 'ga_profile_ids' )
  , today: new Date()
  , month_first: ''
  , month_last: ''
  , report_title: 'Monthly Share Report'
  , report_max: 5
  , report_gadata: {}
  , report_mailtext: ''
  , ga_metrix: ''
  , ga_options: {}

  , gaData: function( met, opt ) {
    this.ga_metrix = met
    , this.ga_options = opt;

    /**
    Analytics.Data.Ga.get(ids, start-date, end-date, metrics, optionalArgs)
    **/
    return this.report_gadata = Analytics.Data.Ga.get( this.ga_profile_ids, this.month_first, this.month_last, met, opt );
  }

  , dimensionMix: function( d ) {
    var a = new Array();

    for( var i = 0, m = d.length, b = 0, s = ''; i < m; i++, s = '' ){
      c = d[ i ].length - 1;

      for( var j = 0; j < c; j++ ){
        if( !!s )
          s += '+';
        s += d[ i ][ j ];
      }
      a.push( [ s, d[ i ][ c ] ] );
    }

    return a;
  }

  , analysisShare: function( d ) {
    var a = new Array()
    , ttl_val = this.report_gadata.getTotalsForAllResults()[ 'ga:visits' ]
    ;

    for( var i = 0, m = d.length, b = 0; i < m; i++ ){
      b = Utilities.formatString( '%.2f', Math.round( d[ i ][ 1 ] / ttl_val * 10000 ) / 100 ) + '%';
      a.push( [ d[ i ][ 0 ], b ] );
    }
    return a;
  }

  , createMailText: function() {
    var a = '', rows, b;

    rows = this.report_gadata.getRows();
    if( rows.lenght <= 0 )
      return '';

    b = rows.slice( 0, this.report_max - 1 );
    if( rows[ 0 ].length > 2 ){
      b = this.dimensionMix( rows )
    }else{
      b = rows;
    }

    b = this.analysisShare( b );

    a += '
' + this.report_title + '
'; for( var i = 0; i < this.report_max; i++ ){ a += '
' + b[ i ][ 0 ] + '
' + b[ i ][ 1 ] + '
'; } a += '
'; return this.mailText( a ); } , mailText: function( s ) { if( !!s ) this.report_mailtext = s return this.report_mailtext; } };
function main() {
  
  var mail_text = ''
  , options = {}
  , month_first
  , month_last
  ;

/*
  // for Test
  var today = new Date();
  month_first = Utilities.formatDate( new Date( today.getYear(), today.getMonth() - 1, 1 ), 'JST', 'yyyy-MM-dd' );
  month_last = Utilities.formatDate( new Date( today.getYear(), today.getMonth(), 0 ), 'JST', 'yyyy-MM-dd' );
  ;
*/
  
  // ----------------
  var ms0 = new MonthlyShare( {
    'month_first': month_first
    , 'month_last': month_last
    , 'report_title': '全デバイス・OSシェア'
  } );
  options = {
    'dimensions': 'ga:operatingSystem'
    , 'sort': '-ga:visits'
  };
  ms0.gaData( 'ga:visits', options );
  mail_text += ms0.createMailText();


  // ----------------
  var ms1 = new MonthlyShare( {
    'month_first': month_first
    , 'month_last': month_last
    , 'report_title': '全デバイス・ブラウザシェア'
  } );
  options = {
    'dimensions': 'ga:browser'
    , 'sort': '-ga:visits'
  };
  ms1.gaData( 'ga:visits', options );
  mail_text += ms1.createMailText();


  // ----------------
  var ms2 = new MonthlyShare( {
    'month_first': month_first
    , 'month_last': month_last
    , 'report_title': '全デバイス・ブラウザ+バージョンシェア'
  } );
  options = {
    'dimensions': 'ga:browser,ga:browserVersion'
    , 'sort': '-ga:visits'
  };
  ms2.gaData( 'ga:visits', options );
  mail_text += ms2.createMailText();
  

  // ----------------
  var ms3 = new MonthlyShare( {
    'month_first': month_first
    , 'month_last': month_last
    , 'report_title': '全デバイス・OS+ブラウザシェア'
  } );
  options = {
    'dimensions': 'ga:operatingSystem,ga:browser'
    , 'sort': '-ga:visits'
  };
  ms3.gaData( 'ga:visits', options );
  mail_text += ms3.createMailText();

  
  // ----------------
  var ms4 = new MonthlyShare( {
    'month_first': month_first
    , 'month_last': month_last
    , 'report_title': 'PC系縛り・ブラウザ+バージョンシェア'
  } );
  options = {
    'dimensions': 'ga:browser,ga:browserVersion'
    , 'sort': '-ga:visits'
    , 'filters': 'ga:deviceCategory==desktop'
  };
  ms4.gaData( 'ga:visits', options );
  mail_text += ms4.createMailText();

  
  // ----------------
  var ms5 = new MonthlyShare( {
    'month_first': month_first
    , 'month_last': month_last
    , 'report_title': 'スマホ系縛り・OS+バージョンシェア'
  } );
  options = {
    'dimensions': 'ga:operatingSystem,ga:operatingSystemVersion'
    , 'sort': '-ga:visits'
    , 'filters': 'ga:deviceCategory==mobile,ga:deviceCategory==tablet'
  };
  ms5.gaData( 'ga:visits', options );
  mail_text += ms5.createMailText();


  // ----------------
  var report_month = Utilities.formatDate( new Date( ms5.month_first.replace( /\-/g, '/' ) ), 'JST', 'yyyy/MMM' );
  MailApp.sendEmail( {
    'to': UserProperties.getProperty( 'mail_to' )
    , 'subject': '[ ' + report_month + ' ]Automatically Monthly Report'
    , 'body': mail_text
  } )
//  Logger.log( mail_text );

};

一番よく見た公式サイトのリファレンスとか
Analytics Service
Dimensions & Metrics Reference
Properties Services
Utilities Service
Mail Service

何か間違えていたら指摘していただけると…


そして、誰かの何かの参考になれば…

2013-11-26

[ GA ]疑問:Universal Analyticsにアップグレードしたプロパティで… ※2013/11/28更新

先週Universal Analyticsへアップグレードし、トラッキングコードも書き直したプロパティだけど、以前のトラッキングコードとUniversal Analyticsのコードを併用したら(共存させたら)数値はどうなるんだろ?と思ったのでやってみた
ま、どうせダブルカウントされるんでしょ?と思いつつ…

ソース書き換えたコードのスクリーンショット。ってゆうか、コメントアウトしてただけだから復活させただけ。

トップページにアクセスして4回リロードしたから5PVが正しいはずだけど後日確認してみる。

ちなみに、これで"5"となれば以前のトラッキングコードをそのまま有効にしていても問題ない訳で。
という事は、以前のトラッキングコードのonclick="_gaq.push()"とかやっていたりしたトラッキングのを急いで変更する必要はなくUniversal Analyticsへ移行できるのではないかと。。。

ま、もし駄目でも、以前のトラッキングコードの_gaq.push(['_trackPageView'])の部分だけコメントアウトすればいいんだなと思ってみた次第で…
そしたら、やっぱり「Universal Analytics使いたいけど、onclickの変更するの大変だし…」というのも気にする事無くアップグレードできる訳で。。。

ちなみに、Universal Analyticsへアップグレードしてみた時のメモはこちら→[ GA ]Universal Analyticsにアップグレードしてみる

※2013/11/27更新
数値を確認してみた。

"9"!?まさかの奇数!?ってゆうか何回リロードしたっけ???
本日もう一度トップページにアクセスして、4回リロードをしておいたので、また後日。。。

*GAのリアルタイムで見ればいいという話もありますが、そこはちゃんと…。

※2013/11/28更新
数値を確認してみた。

今度こそ想像通り10!やっぱりダブルカウントされるという事で。

せっかくだから、以前のトラッキングコードの_gaq.push(['_trackPageView'])の部分をコメントアウトしてしまえば。という事にしておけばギリギリまで色々と便利なのかなと…

2013-11-15

[ GA ]Universal Analyticsにアップグレードしてみる ※2013-11-21完結

以前の投稿の追記で書いてたけど、Google AnalyticsからUniversal Analyticsへとデータを失うことなくアップグレードできるようになったみたいなので、大昔に作ったBloggerでのブログで試してみたメモ

※参考にしたサイト※
Universal Analytics アップグレード センター - アップグレード ガイド

Google Analyticsでの数字

最近のアクセスを記録させるために11/8と11/12にアクセスしておいた

ステップ 1: プロパティの移行

”アナリティクス設定”でアップグレードしたいプロパティの下に”Universal Analytics アップグレード”と表示されてるのでクリック

クリックすると”Universal Analytics アップグレード”の画面が現れるので一応読んでから”続行”をクリック

「ほんとにいいの~?」が表示されるので一応読んで、迷わず”続行”をクリック

”Universal Analytics アップグレード”の画面に戻り”プロパティの移行処理中です”が表示されたので、書いてある通り24~48時間待つ事にする

”プロパティの移行処理中です”の下に地味に”タイムアウト設定を表示”とあったからクリックしてみた。今のところ気にしないのでデフォルトのまま

ステップ 2: トラッキング コードの更新(任意)

まだ表示されないので後日作業予定&記事更新。。。
2013/11/18更新
アナリティクス設定画面の該当のプロパティで”移行が完了しました”と表示された!

”トラッキング コードを取得”ボタンが押せるようになった

Universal Analyticsのトラッキング コードが表示されたので、既存のコードをこれに書き換えれば完了!のはず


コードを書き換える前に…。

データ確認

後日確認&更新予定。。。
2013/11/18更新
PV数を確認したらデータがそのままになっていた!けど、11/15にアクセスしたと思われるのが記録されていない…?
なので、トラッキングコードを書き換える前にもう一度アクセスしてみて、後日数字が出るか確認する
2013/11/19更新
11/18にアクセスした分が記録されてた! のでコードを書き換える

ところで、移行処理中はアクセス数とかのデータはどうなるんだろ。。。
ま、記事下記ながらアクセスしてるし、そのうちわかるか…

2013/11/18更新
2013/11/15にアクセスしたと思ったけど、数字が出てなかったので11/18にアクセスしてみた

(あらためて) ステップ 2: トラッキング コードの更新(任意)

Analytics管理画面で表示されているUniversal Analyticsのトラッキング コードをコピー

大昔につくったBloggerのテンプレート編集画面で

該当部分のコードを書き換えて保存

アクセスしてコードが置き換わっているのを確認

(あらためて) データ確認

後日確認&更新予定。。。 2013/11/21更新
11/19にアクセスした分が記録されており、当然ながら11/8と11/12にアクセスした数値も残ってる

雑記

Universal Analyticsへのアップグレードは、作業自体はそんなに大変なものではなかった。

が、例えば「タグを一か所で管理できていない」、「CMSが導入されていない」などの手張りでタグが書かれている場合、全てのページの書き換えは非常に困難に。。。

さらに、イベント記録とかで各要素のonclickにjsを記述していてそれらを全て書き換える必要がある場合はもっと最悪な事態が発生する事に…。

そういう場合はいっそこの機会に、イベント記録用の関数を作ってそこの修正で済むように作りなおすとか考えたほうが…。
(私が仕事で面倒みているサイトは…。ほおっておこう。。。)

Universal Analytics関連を投稿していたせいか、一桁だった訪問数がここ最近は十台になったり、初めて+1がついたりして中の人は喜んでおります←

2013-10-07

[ GA ]Google AnalyticsのデータをUniversal Analyticsへ移行出来るようにならないかな…※2013/11/18追記

※2013/11/18追記
大昔に作ってみたブログで試してみた記録→[ GA ]Universal Analyticsにアップグレードしてみる

色々と便利だからUniversal Analyticsに移行したいんだけど、既存のGoogle Analyticsとプロパティを別で作る必要があるからデータが途切れちゃうのは困るし。。。早くデータ以降できるようにならないかな…

今後数か月以内に、Google アナリティクスの既存のウェブ プロパティとデータを Universal Analytics に移行する方法についてご案内する予定です。
Universal Analytics の設定の"実用的なヒント"の2段落目

※2013-11-05追記
Google AnalyticsからUniversal Analyticsへとデータを失うことなくアップグレードできるようになったようなので、後日試してまたメモする。
ユニバーサル アナリティクスへのアップグレードについて

2013-08-22

[ GA ]ソーシャルボタンのクリックをGoogle Analyticsのソーシャル プラグインに記録する

いいねボタンとツイートボタンのクリック数をGAに記録する場合どうするのか、今さらだけど知らなかったので、やっと時間が出来たから調べたメモ
そんなに難しくはなかったけど、意外と…

Universal Analytics(analytics.js)の場合

従来型のAnalytics(ga.js)の場合

いいねのiframe版はコメント入力が表示されないから、個人的には重宝してるんだけど、いいねのクリック数はどうにもできないっぽい。
また時間を見つけて調べるかな

※2013-08-23追記
従来型は"_gaq.pushの場合"しか考えてなかったかけど、"pageTracker"な場合もあるのか?と
従来型のAnalytics(ga.js)でpageTrackerの場合

※2013-08-23さらに追記
それぞれこんな感じで記録されてた
Universal Analytics(analytics.js)のいいねボタンのhtml5版のURL

Universal Analytics(analytics.js)のツイートボタンのURL
従来型のAnalytics(ga.js)のいいねボタンのhtml5版のURL
従来型のAnalytics(ga.js)のツイートボタンのURL

2013-07-17

[ GAS ]GoogleスプレッドシートからGAの数字を拾ってきての超ざっくりメモ

作業を簡略化させるためにGoogleスプレッドシートからGoogle Apps Scriptを使ってGAから数字を取得するものを使っていたけど、なぜか動かなくなったので適当にネットを見ながら新しく書き直したのでポイントだけメモ
※なぜ動かなくなったのかは調べない…
※手抜きなメモなので細かくはメモらない。それぞれキーワードでググった方が親切なのたくさん出てくるし…

準備

  1. スプレッドシートを作って[ ツール - スクリプト エディタ... ]
  2. スクリプトエディタの[ リソース - Google API を使用... ]
  3. "Google Analytics API"をONにする。プルダウンは"v3"のまま
  4. "API キー"は"Google API コンソール"にアクセス、左メニューの"API Access"にアクセスして"Simple API Access"の"API key"の値をコピペ

データの取得
"Analytics.Data.Ga.get"に以下の引数を渡すとデータが帰ってきた

var ret = Analytics.Data.Ga.get(
    tableId
    , '開始日'
    , '終了日'
    , 'メトリックス達'
    , {その他オプション達}
);
tableIDにはGAにアクセスした時のURLにあるp99999999のp以降の数字を"ga:"の後ろに付けた文字列。
メトリックス達は、カンマ区切りで複数が指定可能。
その他オプション達には以下のようなものが設定できるらしい。
{
    'dimensions': 'ディメンジョン達'
    , 'sort': 'ソートに使うメトリックス達'
    , 'segment', 'セグメントさん'
    , 'filters', 'フィルターさん'
    , 'start-index', '1行目にするデータの行番号'
    , 'max-results', '最大件数'
}
ディメンジョン達やソートに使うメトリックス達はカンマ区切りで複数が指定可能。
自分が使ったのは、メトリックスに"ga:visits"、ディメンジョンに"ga:browser"、ソートはga:visitsを降順で欲しかったから"-ga:visits"。

データの利用
上記で取得してきたデータは以下のような感じで利用できた

// ga:visitsの総数
var total_visits = ret.getTotalsForAllResults()[ 'ga:visits' ];
// ga:browserを配列として取得
var ret_rows = ret.getRows();
// ループして処理
for( var i = 0, m = ret_rows.length; i < m; i++ ){
    // ga:browser
    Logger.log( rows[ i ][ 0 ] );
    // ga:visits
    Logger.log( rows[ i ][ 1 ] ):
}

メトリックス達とかディメンジョン達については以下を参照。
Dimensions & Metrics Reference

その他詳しい情報は、適当に調べて。。。

2013-07-12

[ GA ]Google Analytics, Universal Analyticsを使ってonclickした際のページ記録やイベント記録するための方法

クリック数とかアウトバウンドリンクを 【ページビューへ記録していた】 を書き換える場合

今まで1
<a href="#" onclick="javascript: pageTracker._trackPageview('それっぽいURL');">テキスト</a>

今まで2
<a href="#" onclick="javascript: _gaq.push(['_trackPageview','それっぽいURL']);">テキスト</a>

Universal Analytics
<a href="#" onclick="javascript: ga( 'send', {'hitType':'pageview', 'page':'それっぽいURL'} );">テキスト</a>

クリック数とかアウトバウンドリンクを 【イベントへ記録していた】 を書き換える場合

今まで1
<a href="#" onclick="javascript: pageTracker._trackEvent('category', 'action', 'label')">テキスト</a>

今まで2
<a href="#" onclick="javascript: _gaq.push(['_trackEvent', 'category', 'action', 'label'])">テキスト</a>

Universal Analytics
<a href="#" onclick="javascript: ga( 'send', 'event', {'eventCategory':'category', 'eventAction':'action', 'eventLabel':'label'} );">テキスト</a>

それ以上の詳しい事は公式ドキュメントを。(※Universal Analyticsの記述でイベント記録してみてる)
Introduction to Analytics.js
Method Reference - Web Tracking (analytics.js)
Analytics.js Field Reference

※2013-07-25追記
上記公式ドキュメントへのアウトバンドリンクのコード

<a href="https://developers.google.com/analytics/devguides/collection/analyticsjs/" target="_blank" onclick="javascript: ga( 'send', 'event', {'eventCategory':'click', 'eventAction':'Outbound Links', 'eventLabel':'Introduction to Analytics.js'} );">Introduction to Analytics.js</a><br>
<a href="https://developers.google.com/analytics/devguides/collection/analyticsjs/method-reference" target="_black" onclick="javascript: ga( 'send', 'event', {'eventCategory':'click', 'eventAction':'Outbound Links', 'eventLabel':'Method Reference - Web Tracking (analytics.js)'} );">Method Reference - Web Tracking (analytics.js)</a><br>
<a href="https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference" target="_blank" onclick="javascript: ga( 'send', 'event', {'eventCategory':'click', 'eventAction':'Outbound Links', 'eventLabel':'Analytics.js Field Reference'} );">Analytics.js Field Reference</a>
GAではこんな感じで記録されてた

※2013-10-07変更
検索サイトで内容をわかりやすくするためにタイトル変更

index