<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Google Analytics アクセス解析</title>
	<atom:link href="http://abc-analytics.com/feed" rel="self" type="application/rss+xml" />
	<link>http://abc-analytics.com</link>
	<description>実践メモ、解説、疑問点の表明、データの見方</description>
	<lastBuildDate>Tue, 31 Aug 2010 16:07:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>マルチトラッキング(複数cookie)について考える</title>
		<link>http://abc-analytics.com/multi-cookie-tracking</link>
		<comments>http://abc-analytics.com/multi-cookie-tracking#comments</comments>
		<pubDate>Tue, 31 Aug 2010 14:53:38 +0000</pubDate>
		<dc:creator>shirai</dc:creator>
				<category><![CDATA[ANALYTICS]]></category>
		<category><![CDATA[解説]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[multitracking]]></category>
		<category><![CDATA[setcookiepath]]></category>
		<category><![CDATA[setDomainName]]></category>

		<guid isPermaLink="false">http://abc-analytics.com/%e3%83%9e%e3%83%ab%e3%83%81%e3%83%88%e3%83%a9%e3%83%83%e3%82%ad%e3%83%b3%e3%82%b0%e8%a4%87%e6%95%b0cookie%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6%e8%80%83%e3%81%88%e3%82%8b</guid>
		<description><![CDATA[僕自身はあまりマルチトラッキングについて馴染みがないのですが、時々、マルチトラッキング絡みの質問を、フォームから受けるようになってきたので、いろいろ整理と頭の中を整理しました。読んでください。 また、マルチトラッキングがニーズとなるのは、ドメインやディレクトリで分けてデータを収集したいということなので、具体例も画像付きで書きました。下の方。 全体の仕組み 大まかな前提を。 google analyticsはビーコン型のアクセス解析ツールです。gifリクエストをサーバーに飛ばして、データを収集してレポートしてくれます。モバイル計測の場合を除き、javascriptで操作します。トラッカーオブジェクトを作り、データ置き場としてのcookieを操作しつつ、gifリクエストを発行します。 同じ情報を複数アカウントに ですので、同一情報を複数のアカウントに送りたい場合は、トラッカーオブジェクトを複数発行して、このオブジェクトにアカウント情報をそれぞれいれてやって、送信すればいいだけです。 公式サイトには英語のものしかないですが、用例があります。http://code.google.com/intl/ja/apis/analytics/docs/tracking/asyncUsageGuide.html#MultipleCommands ただ、ドメイン別・ディレクトリ別に情報を取って、専用のプロファイルに送りたいですよね。 ３つのパターン。サブドメイン、クロスドメイン、サブディレクトリの場合を見ていきます。 ただ、もう少し、講釈を続けます。 複数cookieを実現する設定 ＊これは、僕自身の考えに基づいて書いています。計測がうまく行かないかもしれないので、うまく行かない場合は、ダメじゃないか！と怒るか、もしくは、ぜひ連絡ください。 ケース: aaa.xxx.comというサイトと、bbb.xxx.comというサイトを管理していて、この二つの横断的な情報を収集しつつ、aaa, bbb個別の情報を得たい場合です。 通常の方法としては、 _gaq.push([“_setAccount”,”UA-xxxxxx-yy”]); _gaq.push([“_setDomainName”,”.xxx.com”]); _gaq.push([“_trackPageview”]) .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { [...]]]></description>
			<content:encoded><![CDATA[<p>僕自身はあまりマルチトラッキングについて馴染みがないのですが、時々、マルチトラッキング絡みの質問を、フォームから受けるようになってきたので、いろいろ整理と頭の中を整理しました。読んでください。</p>
<p>また、マルチトラッキングがニーズとなるのは、ドメインやディレクトリで分けてデータを収集したいということなので、具体例も画像付きで書きました。下の方。</p>
<h3>全体の仕組み</h3>
<p>大まかな前提を。 google analyticsはビーコン型のアクセス解析ツールです。gifリクエストをサーバーに飛ばして、データを収集してレポートしてくれます。モバイル計測の場合を除き、javascriptで操作します。トラッカーオブジェクトを作り、データ置き場としてのcookieを操作しつつ、gifリクエストを発行します。</p>
<h3>同じ情報を複数アカウントに</h3>
<p>ですので、同一情報を複数のアカウントに送りたい場合は、トラッカーオブジェクトを複数発行して、このオブジェクトにアカウント情報をそれぞれいれてやって、送信すればいいだけです。</p>
<p>公式サイトには英語のものしかないですが、用例があります。<a href="http://code.google.com/intl/ja/apis/analytics/docs/tracking/asyncUsageGuide.html#MultipleCommands">http://code.google.com/intl/ja/apis/analytics/docs/tracking/asyncUsageGuide.html#MultipleCommands</a></p>
<p>ただ、ドメイン別・ディレクトリ別に情報を取って、専用のプロファイルに送りたいですよね。</p>
<p>３つのパターン。サブドメイン、クロスドメイン、サブディレクトリの場合を見ていきます。</p>
<p>ただ、もう少し、講釈を続けます。 </p>
<h3>複数cookieを実現する設定</h3>
<p>＊これは、僕自身の考えに基づいて書いています。計測がうまく行かないかもしれないので、うまく行かない場合は、ダメじゃないか！と怒るか、もしくは、<a href="http://twitter.com/phar">ぜひ連絡ください</a>。</p>
<p>ケース: aaa.xxx.comというサイトと、bbb.xxx.comというサイトを管理していて、この二つの横断的な情報を収集しつつ、aaa, bbb個別の情報を得たい場合です。</p>
<p>通常の方法としては、</p>
<pre class="csharpcode">_gaq.push([“_setAccount”,”UA-xxxxxx-yy”]);
_gaq.push([“_setDomainName”,”.xxx.com”]);
_gaq.push([“_trackPageview”]) </pre>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>
  <br />という形を、aaa, bbbの両方に同じようにおけば、これで計測できるわけで何も問題ないですし、フィルターで切り分ければ情報を分けることも可能です。aaa, bbb別にアクセス情報を見られます。<strong>ただ、cookieをaaa,bbbで共有するために、サブドメイン独自でのセッション情報の管理(ユニークユーザ、新規・既存・リファラーなど)ができません。</strong></p>
<p>そこで、cookieを３つ、aaa専用 bbb専用 aaa-bbb共用という形で用意して、専用の３つのプロファイルという形を用意します。</p>
<table border="2" cellspacing="0" cellpadding="2" width="528">
<tbody>
<tr>
<td valign="top" width="263">aaa.xxx.com</td>
<td valign="top" width="261">bbb.xxx.coom</td>
</tr>
<tr>
<td valign="top" width="263">_gaq.push([“ab._setAccount”,”UA-for-aaabbb”]);<br />
        <br />_gaq.push([“ab._setDomainName”,”.xxx.com”]); </p>
<p>_gaq.push([“ab.trackPageview”]); </p>
<p>_gaq.push([“a._setAccount”,”UA-for-aaa”]); </p>
<p>_gaq.push([“a._trackPageview”]);</td>
<td valign="top" width="261">_gaq.push([“ab._setAccount”,”UA-for-aaabbb”]);<br />
        <br />_gaq.push([“ab._setDomainName”,”.xxx.com”]); </p>
<p>_gaq.push([“ab.trackPageview”]); </p>
<p>_gaq.push([“b._setAccount”,”UA-for-aaa”]); </p>
<p>_gaq.push([“b._trackPageview”]);</td>
</tr>
</tbody>
</table>
<p>これで、３つのcookie(utm(a,b,c,v,z))セットができます。</p>
<p>このコードの説明をこれからします。</p>
<h3>_setDomainNameの二つの機能</h3>
<p>このsetDomainNameは、内部的に二つの働きをします。</p>
<p>cookieの所属ドメインの決定と、cookieの値にドメイン情報を持たせることです。</p>
<p>cookieの基本的な仕様は、ドメイン、パス別に指定して作成することができますが、javascriptからはドメインとパスはみえません、<strong>読む場合は見えないのです</strong>。ですので、<strong>cookieの値にドメイン情報を持たせる</strong>ことは意味を持ちます。（ドメインハッシュ値は他にもセキュリティ用途もあるみたいですが、よくわかりません)</p>
<p>s1-test-analytics.com</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/googleanalyticscookie.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="google-analytics-cookie" border="0" alt="google-analytics-cookie" src="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/googleanalyticscookie_thumb.jpg" width="532" height="126" /></a> </p>
<p>s2.test-analytics.com</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000005.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WS000005" border="0" alt="WS000005" src="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000005_thumb.jpg" width="532" height="132" /></a> </p>
<p>画像の文字が細かいですが、.test-analytics.com(両方に存在)と、s1.test-analytics.com, s2.etst-analytics.comの３つがあります。</p>
<p>左側の赤四角が、ドメイン情報を現してます。.test-analytics.comなら 113074331。s1.test-analytics.com:154559162, s2.test-analtics.com: 155607801。</p>
<p>と、setDomainNameは、cookieのドメインと、cookieの値の最初の１０桁数字（ドメインハッシュ値)を決めています。cookieの最初の値が、ドメイン固有(ハッシュ衝突がないとして)の値ですので、この値を見て、複数cookie時に、該当cookieを判断しています。ネームスペース的な機能とでも言えばいいでしょうか？</p>
<h3>サブドメイン＋メインドメインの個別管理の実際を見てみる。</h3>
<p>では、cookieが３つできてることは確認できたので、今度はドメイン別に機能しているかをみてみましょう。</p>
<p>次のようなケースを想定します。</p>
<p>セッション1: s1に訪問後、s2を訪問。</p>
<p>セッション2: s1のみ訪問</p>
<p>セッション3: 再度、s1のみ訪問</p>
<p>セッション4: s2のみ訪問(外部リンク経由(phar.awe.jp)</p>
<p>セッション5: s1を訪問</p>
<p>この場合、全体をカバーする情報は、5セッション。s1では4セッション。s2では2セッションと記録される形になって欲しいです。参照情報は、全体では(phar.awe.jp) s1はDirect, s2は(phar.awe.jp)となって欲しいです。</p>
<p>実際に図を見ていきます。</p>
<p>セッション１ s1を訪問。</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000010.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WS000010" border="0" alt="WS000010" src="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000010_thumb.jpg" width="532" height="159" /></a> </p>
<p>同一セッション内で、s2を訪問。 s2の参照情報は、s1.test-analytics.comに。</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000011.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WS000011" border="0" alt="WS000011" src="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000011_thumb.jpg" width="532" height="150" /></a> </p>
<p>セッション２に。(セッションの更新は、utmcのcookieを削除で行う) 両方のutmaのカウンタ(Valueの最後)は２に。</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000012.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WS000012" border="0" alt="WS000012" src="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000012_thumb.jpg" width="532" height="151" /></a> </p>
<p>セッション3 同じようにカウンタがインクリメントされ、３に。</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000013.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WS000013" border="0" alt="WS000013" src="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000013_thumb.jpg" width="532" height="146" /></a> </p>
<p>セッション4 phar.awe.jpから <strong>s2</strong>に遷移。全体のもの、<strong>s2のcookieが更新される（カウンタ(utma)、参照情報(utmz))</strong></p>
<p><a href="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000014.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WS000014" border="0" alt="WS000014" src="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000014_thumb.jpg" width="532" height="153" /></a>&#160;</p>
<p>セッション５ s1を訪問(セッション４で、s2を訪問した情報は、test-analytcs.comの方のみ反映されている。</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000015.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WS000015" border="0" alt="WS000015" src="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000015_thumb.jpg" width="532" height="153" /></a> </p>
<p>と、想定通りになりました。 .test-analytics.comで全体のセッション管理を。s1,s2は個別でセッション管理されてます。s1からs2の移動も外部参照元となりますし、訪問回数は、s1,s2は個別に管理されてます。</p>
<p>サブドメインは、これで問題ないですね。では、クロスドメインの例を見てみましょう。少し複雑で、問題含みです。</p>
<h3>クロスドメイン計測での、全体計測と個別ドメイン管理の実現</h3>
<p>どこまでニーズがあるのかわかりませんが、これもみていきましょう。<a href="http://blog.livedoor.jp/ld_directors/archives/51492466.html">livedoorでは、この形で運用してるみたいですね。</a> あと、<a href="http://code.google.com/intl/ja/apis/analytics/docs/tracking/gaTrackingSite.html#multipleDomains">公式サイトのクロスドメイン計測の形</a>です。シングルトラッキングで、前提が多少入りますが、ここらの情報は検索すればあちこちにあるのでいいと思います。</p>
<p>それで先程、クロスドメインがサブドメインより、少し複雑と書いたのは、cookieは他のドメインの値は読めないので、特殊なことをしてるし、サブドメイン計測とは同等の機能とはならないからです。</p>
<p>とりあえず、設定を考えましょう。二つのドメイン計測で、全体計測と、個別計測を実現する。</p>
<table border="2" cellspacing="0" cellpadding="2" width="539">
<tbody>
<tr>
<td valign="top" width="254">test.analytics.com</td>
<td valign="top" width="281">phar.awe.jp</td>
</tr>
<tr>
<td valign="top" width="255">_gaq.push(“a._setAccount”,”UA-for-any”]);<br />
        <br />_gaq.push(“a._setDomainName”,”none”]); </p>
<p>_gaq.push(“a._setAllowLinker”,true]); </p>
<p>_gaq.push(“a._trackPageview”]); </p>
<p>_gaq.push(“b._setAccount”,”UA-test-analytics”]); </p>
<p>_gaq.push(“b._trackPageview”]);</td>
<td valign="top" width="281">_gaq.push(“a._setAccount”,”UA-for-any”]);<br />
        <br />_gaq.push(“a._setDomainName”,”none”]); </p>
<p>_gaq.push(“a._setAllowLinker”,true]); </p>
<p>_gaq.push(“a._trackPageview”]); </p>
<p>_gaq.push(“b._setAccount”,”UA-phar-awe”]); </p>
<p>_gaq.push(“b._trackPageview”]);</td>
</tr>
</tbody>
</table>
<p>これで、この両者のドメイン間に onlick=’_gaq.push([“a._link”,this.href]);return false;’という形。</p>
<p>サブドメインでの計測では、cookieがメインドメインの元で共有され、変更が反映されてました。でも、クロスドメインはそれができません。urlのパラメータを読み込む形での受け渡しです。ですので、この受け渡しがないと、値の変更を反映できません。</p>
<p>とにかく、実際の図をみていきましょう。セッションを全体で３回行います。test-analyticsに２回。phar.aweに２回。またぐセッションがそのうち一回です。</p>
<p>最初のセッション。 参照元(utmz)は、s2.tes-analyticsからリンクを張りました。</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000016.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WS000016" border="0" alt="WS000016" src="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000016_thumb.jpg" width="532" height="150" /></a> </p>
<p>_gaq.push([“a._link”,this.href])でクロスドメイン遷移。細かいですが、参照元は全体では s2。個別では test-analytics.comからと別れてます。</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000017.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WS000017" border="0" alt="WS000017" src="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000017_thumb.jpg" width="532" height="160" /></a> </p>
<p>セッション2。test-analytics.comを訪問。カウンタ(utma)が増えただけ。</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000018.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WS000018" border="0" alt="WS000018" src="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000018_thumb.jpg" width="532" height="155" /></a> </p>
<p>セッション3 phar.awe.jpを訪問。サブドメイン計測ではcookieが共有されていたので、カウンタが上がっていたのだが、クロスドメインはそれがないので、全体計測の方のカウンタ(umta)が3にならず。２のまま。</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000019.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WS000019" border="0" alt="WS000019" src="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000019_thumb.jpg" width="532" height="161" /></a> </p>
<p>と、全体で３セッションあったのだが、全体を計測する utma(ドメインハッシュ Valueが1の方) では、</p>
<p><strong>２回目の訪問が二回あって、３回目の訪問がない結果となる</strong>。また参照情報の変更も、url上のパラメータ渡しがないと、cookie値を共有する機会がないので、不整合な結果を作りやすい。</p>
<p><strong>ショッピングカートのように、必ず特定のドメインからの遷移であれば問題はないでしょうが</strong>、結論としては、</p>
<p><strong>クロスドメインでの全体・個別の分別管理は問題が多そう</strong>と、僕は思います。</p>
<p>さて、最後にもう一つトピックを取り上げます。ディレクトリでの全体・個別をマルチトラッキングで管理するです。ディレクトリの分別管理はニーズが多そうですが、固有の問題があります。</p>
<h3>サイト全体・特定ディレクトリでの全体計測・個別計測のマルチトラッキング</h3>
<p>実は、僕が手伝ってるサイトでも、先日これをやろうとしたのですが、うまく行かなくて悩んだのです。</p>
<p>cookieの値がヘンだなあと、、</p>
<p>実は、ドメインの違いに関しては、google analyticsのcookieがドメイン情報を持っていたので、区別できたのですが、パスの情報は入れてくれてないのです。なので、<strong>複数cookieはできません</strong>。作る事はできても、カウンタのインクリメントは、どっちをするか不定です。参照情報のutmzは一個しかできません、最初に設定したパスで出るのみです。何も指定してなけば、”/” 。これは、最初にsetCookiePathで”/DDD/”としたのでこうなりました。</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000020.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WS000020" border="0" alt="WS000020" src="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000020_thumb.jpg" width="532" height="120" /></a> </p>
<p>utmaは、二つ作ってはいますが、判別手段がないため、次回の更新はどちらかの値を取得して、二つとも、同じ値に更新です。実質的に、サイト全体での管理しか、しないことと同じになります。utmzを”/”で指定すればです全体ですし、utmzが”/DDD/”のみになれば、全体のセッション管理が狂います。</p>
<p><strong>で、手段がないのかというと、ドメインを分けてやれば、個別管理できます。</strong></p>
<p><a href="http://www.lunametrics.com/blog/2009/03/06/cookies-tracking-multiple-accounts-ga/">http://www.lunametrics.com/blog/2009/03/06/cookies-tracking-multiple-accounts-ga/</a></p>
<p><a href="http://twitter.com/t32k">@t32k</a> さんの<a href="http://warikiru.blogspot.com/2009/06/google-analytic-tracker-code.html">昔のエントリーも発見</a>。</p>
<p>なので、ここで細かく書いてもしょうがないので、コードだけ書いておわりにします、、、、</p>
<p><strong>と思ったのですが</strong>、<em>lunameticsのコードだと、ドメイン名が同じなのでcookieが独立して動かない</em>(<strong>ga.js側が</strong>)と思います。ドメインを分けるには、サブドメイン表記を使うか、クロスドメインの”none”を使うかだと思います。ここでは、noneを使う形の載せます、、、、</p>
<p><strong>と思ったのですが</strong>、setDomainName(“none”)を使うと、セッションの更新がうまく行かない気が、、上のクロスドメイン時では問題なかったので、<strong>setCookiePathといっしょに使うと、動きがヘンになる？？？？</strong></p>
<p>なので、setDomainName(“.test-analytics.com”)とsetCookiePath(“/DDD/”)を一緒に使う形にします。</p>
<table border="2" cellspacing="0" cellpadding="2" width="540">
<tbody>
<tr>
<td valign="top" width="258">通常の場所</td>
<td valign="top" width="278">特定ディレクトリ(今回は/DDD/)</td>
</tr>
<tr>
<td valign="top" width="258">_gaq.push([“a._setAccount”, “UA-all”]);<br />
        <br />_gaq.push([“a._trackPageview”]);</td>
<td valign="top" width="278">_gaq.push([“a._setAccount”, “UA-all”];<br />
        <br />_gaq.push([“a._trackPageview”]); </p>
<p>_gaq.push([“b.setAccount”, “UA-DDD”]); </p>
<p>_gaq.push([“b.setDomainName”,”.test-analytics.com”]); </p>
<p>_gaq.push([“b.setCookiePath”, “/DDD/”]); </p>
<p>_gaq.push([“b.trackPageview”]);</td>
</tr>
</tbody>
</table>
<p>setDomainName(“none”)で作ったcookieは、FQDN所属(leading period ‘.’なし)のcookieになるので、ほかの場面でクロスドメイン用に、”none”を使う場合は使えません。サブドメンの設定を使うしかないと思う。</p>
<p>実際の例</p>
<p>セッション３回。/DDD/index.htmlを二回。/index.htmlを一回。</p>
<p>セッション1: /DDD/index.htmlを訪問。</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000024.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WS000024" border="0" alt="WS000024" src="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000024_thumb.jpg" width="532" height="131" /></a> </p>
<p><font color="#ff0000">注意: </font><font color="#000000">所属Domainは双方同じ .test-analytics.comになってますが、ドメインハッシュ値は113… と115…と違います。これはデフォルトsetDomainNameなしを使うと、内部としては “test-analytcs.com”と “.”なしでドメインハッシュを計算するため。 .を付けとけば違うハッシュ値をとれる。で、今回は所属ドメインンが同じだが、パスが違うためcookieは存在できる。 </font></p>
<p>セッション2: index.htmlを訪問</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000025.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WS000025" border="0" alt="WS000025" src="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000025_thumb.jpg" width="532" height="74" /></a> </p>
<p>セッション3 /DDD/index.htmlを訪問</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000026.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WS000026" border="0" alt="WS000026" src="http://abc-analytics.com/wp-content/uploads/b98a8f1f6da9_E675/WS000026_thumb.jpg" width="532" height="130" /></a> </p>
<p>全体で３回訪問した。全体を把握する方の,115001218は、カウンタ(utma)が３になってる。個別ディレクトリ管理の113074331は、2回と想定通り。めでたし、めでたし。</p>
</p>
<h3>まとめ</h3>
<p>ここまで、読んでくれる人がいるか疑問です（僕なら飛ばし読みだ)が、まとめです。感想の箇条書き。</p>
<ul>
<li>複数cookieを使えば、セッション管理を独立して行えるので、ドメイン別、ディレクトリ別に具体例をcookieの値を見ながら検証しました。レポート側では検証していません。なので、落とし穴がまだあるかもしれません。 </li>
<li>サブドメインの全体・個別の独立管理は、たぶん実用に応すると思います。 </li>
<li>クロスドメインでの全体・個別の独立管理は、セッション単位で分析するのには問題含みな気がします。 </li>
<li>ディレクトリでの全体・個別の独立管理は、トリッキーながらも、そのトリッキが使える状況の下では、きちんと数字が取れそうだと思います。 </li>
<li>google analyicsの先頭のドメインハッシュ値は、ネームスペース的役割を果たします。キー（名前)が一緒でも、こちらで同一名cookieの判別を可能にします。 </li>
<li>ディレクトリ情報は、ドメインハッシュ値に含まれてないので、別ドメインのcookieを用意して、cookieの分別管理を可能にできます。 </li>
<li>setDomainNameの役割、cookieの所属ドメイン、ドメインハッシュ値の作成の二つの機能を頭にいれておく。参考に、<a href="http://wiki.abc-analytics.com/api/tracking-api/tracking-apis/domain-directory-methods/-_setdomainname">前にwikiに書いたものへのリンク</a> </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://abc-analytics.com/multi-cookie-tracking/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>訪問回数別セッション数(vs 参照元)の残存率を見る</title>
		<link>http://abc-analytics.com/find_suvival_rate_par_visitscount_against_referrer</link>
		<comments>http://abc-analytics.com/find_suvival_rate_par_visitscount_against_referrer#comments</comments>
		<pubDate>Wed, 07 Jul 2010 16:31:01 +0000</pubDate>
		<dc:creator>shirai</dc:creator>
				<category><![CDATA[分析]]></category>
		<category><![CDATA[参照元]]></category>
		<category><![CDATA[訪問回数]]></category>
		<category><![CDATA[google analytics]]></category>
		<category><![CDATA[残存率]]></category>

		<guid isPermaLink="false">http://abc-analytics.com/%e8%a8%aa%e5%95%8f%e5%9b%9e%e6%95%b0%e5%88%a5%e3%82%bb%e3%83%83%e3%82%b7%e3%83%a7%e3%83%b3%e6%95%b0vs-%e5%8f%82%e7%85%a7%e5%85%83%e3%81%ae%e6%ae%8b%e5%ad%98%e7%8e%87%e3%82%92%e8%a6%8b%e3%82%8b</guid>
		<description><![CDATA[リファラー情報の扱いは、他のアクセス解析ツールと違う仕様 Google Analyticsの、他のサービスと違う有名な仕様として、外部リファラーが無い場合のリピーターのリファラー情報は、前回のリファラー情報とするというのがあります。 直接訪問は前回のリファラー情報でレポートとして上がるという事です。最初からノーリファラーなら、ノーリファラーですが。 僕は、他のアクセス解析サービスはよく知らないので、どちらが有用なデータ表示方法かは分からないのですが、GAの仕様を決定した人は、こっちが良いと思ってそうしたんだと思います。 この方法で良いなと思える点 本当は、ユーザー単位で、トラフィック情報の変遷を見ることが出来れば、万事解決なのですが、GAは大きな会社のサービスなので、いろんな事に配慮しなければならず、ユーザー単位のトラフィック情報を見ることはできません。ユーザーグループを作って、カスタム変数に記録すれば、グループ単位では見られるようになりますが、それは置いておきます。 それで良い点はというと、直接訪問を必ず、どこかの参照元の情報に帰属させてる点です。アクセス解析の目的は、コンバージョンの向上にあるわけで、その要因となる流入元情報の寄与を割り振ってるわけです。２，３回目は、bookmarkから来たんだろうけど、一回目は、、、というデータ処理を省くことができるわけです。 もちろん、リピーターは、複数の外部サイトからやってることも多いわけで、その場合は上書きされていくので、きちんとした？データにはならないわけですが。 参照元別の残存率 = コア化するユーザー率を見る 訪問回数と参照元情報をディメンジョンに、セッション数を指標にします。 &#160; データは、仮想の数字です。サイトの数字を参考にして、乱数を降った擬似的なデータです。 縦軸（Y軸)は、１０の対数です。４なら１万。2なら100。 ２，３回目までくるのは、1%とかの世界ですね。１以下で10以下です。 あと、データ集計期間の長さによってデータが偏るので、そこも注意した方が良いです。その集計期間の訪問回数というのは、Google Analyticsでは出せないです。出る数字は、全ての測定期間で、何回目の訪問だったかです。 参照元別で残存率が違う場合、主要な参照元の５回目残存率なんかは、気にしても良いかもしれません。この場合だと、Eなんかは2.8(630くらい)から1.8(63くらい)くらいと、１０％くらいは残ってくれてます。ほかは、Dなんかは、５回目で、3(1000以上)から１以下(10)になります。 最終的には、コンバージョン率と絡めて、数字を吟味する必要はあるのですが、参照元によって残存率が違う、訪問回数が進むにつれ、1/10, 1/100になっていくけど、参照元に依っては生き残る率が高いのがあるのを気にするのもいいかもしれません。 Google Analyticsのノーリファラーを前回のリファーラー情報に割り振る仕様も、こういう見方をする場合は、データ処理が楽だと思います。 もちろん、あるユーザーの二回目セッションは参照元がAで、三回目はBという事もあるので、訪問回数の残存＝ ユーザーの残存率 とはならないですが、ある程度は類似するはずです。また、このデータ集計期間に、一回目が入らずに二回目から登場のパターンもありえます。GAは、ある期間内で、何回目の訪問だったかは教えてくれません。 ということで、参照元別に訪問回数別のセッション数を見て、この参照元はコアのユーザーに成ってくれやすい。 裏を言えばリピートしない、というのを把握する話でした。 実はどこかのサイトのデータ整理をしてて、対数グラフにしたら、それなりに見えたので、blogを書きました。 底を求める方法が分からず、何回か検索した。中学生の僕が見たら、僕を殴りに来たかも、、、630 =&#62; 10^2.8 は、頭に出なかった、、、]]></description>
			<content:encoded><![CDATA[<h3>リファラー情報の扱いは、他のアクセス解析ツールと違う仕様</h3>
<p>Google Analyticsの、他のサービスと違う有名な仕様として、外部リファラーが無い場合のリピーターのリファラー情報は、前回のリファラー情報とするというのがあります。</p>
<p>直接訪問は前回のリファラー情報でレポートとして上がるという事です。最初からノーリファラーなら、ノーリファラーですが。</p>
<p>僕は、他のアクセス解析サービスはよく知らないので、どちらが有用なデータ表示方法かは分からないのですが、GAの仕様を決定した人は、こっちが良いと思ってそうしたんだと思います。</p>
<h3>この方法で良いなと思える点</h3>
<p>本当は、ユーザー単位で、トラフィック情報の変遷を見ることが出来れば、万事解決なのですが、GAは大きな会社のサービスなので、いろんな事に配慮しなければならず、ユーザー単位のトラフィック情報を見ることはできません。ユーザーグループを作って、カスタム変数に記録すれば、グループ単位では見られるようになりますが、それは置いておきます。</p>
<p>それで良い点はというと、直接訪問を必ず、どこかの参照元の情報に帰属させてる点です。アクセス解析の目的は、コンバージョンの向上にあるわけで、その要因となる流入元情報の寄与を割り振ってるわけです。２，３回目は、bookmarkから来たんだろうけど、一回目は、、、というデータ処理を省くことができるわけです。</p>
<p>もちろん、リピーターは、複数の外部サイトからやってることも多いわけで、その場合は上書きされていくので、きちんとした？データにはならないわけですが。</p>
<h3>参照元別の残存率 = コア化するユーザー率を見る</h3>
<p>訪問回数と参照元情報をディメンジョンに、セッション数を指標にします。</p>
<p>&#160; <a href="http://abc-analytics.com/wp-content/uploads/34974c12e344_3AE/visits_against_visit_count.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="visits_against_visit_count" border="0" alt="visits_against_visit_count" src="http://abc-analytics.com/wp-content/uploads/34974c12e344_3AE/visits_against_visit_count_thumb.jpg" width="368" height="344" /></a> </p>
<p>データは、仮想の数字です。サイトの数字を参考にして、乱数を降った擬似的なデータです。 縦軸（Y軸)は、<strong>１０の対数です</strong>。４なら１万。2なら100。 ２，３回目までくるのは、1%とかの世界ですね。１以下で10以下です。</p>
<p>あと、データ集計期間の長さによってデータが偏るので、そこも注意した方が良いです。その集計期間の訪問回数というのは、Google Analyticsでは出せないです。出る数字は、全ての測定期間で、何回目の訪問だったかです。</p>
<p>参照元別で残存率が違う場合、主要な参照元の５回目残存率なんかは、気にしても良いかもしれません。この場合だと、Eなんかは2.8(630くらい)から1.8(63くらい)くらいと、１０％くらいは残ってくれてます。ほかは、Dなんかは、５回目で、3(1000以上)から１以下(10)になります。</p>
<p>最終的には、コンバージョン率と絡めて、数字を吟味する必要はあるのですが、参照元によって残存率が違う、訪問回数が進むにつれ、1/10, 1/100になっていくけど、参照元に依っては生き残る率が高いのがあるのを気にするのもいいかもしれません。</p>
<p>Google Analyticsのノーリファラーを前回のリファーラー情報に割り振る仕様も、こういう見方をする場合は、データ処理が楽だと思います。</p>
<p>もちろん、あるユーザーの二回目セッションは参照元がAで、三回目はBという事もあるので、訪問回数の残存＝ ユーザーの残存率 とはならないですが、ある程度は類似するはずです。また、このデータ集計期間に、一回目が入らずに二回目から登場のパターンもありえます。GAは、ある期間内で、何回目の訪問だったかは教えてくれません。</p>
<p>ということで、参照元別に訪問回数別のセッション数を見て、この参照元はコアのユーザーに成ってくれやすい。 裏を言えばリピートしない、というのを把握する話でした。</p>
<p>実はどこかのサイトのデータ整理をしてて、対数グラフにしたら、それなりに見えたので、blogを書きました。 底を求める方法が分からず、何回か検索した。中学生の僕が見たら、僕を殴りに来たかも、、、630 =&gt; 10^2.8 は、頭に出なかった、、、</p>
]]></content:encoded>
			<wfw:commentRss>http://abc-analytics.com/find_suvival_rate_par_visitscount_against_referrer/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ページ遷移レポートの自動配信を実現する</title>
		<link>http://abc-analytics.com/automate_visualizing_pages_transitions</link>
		<comments>http://abc-analytics.com/automate_visualizing_pages_transitions#comments</comments>
		<pubDate>Sat, 19 Jun 2010 14:50:14 +0000</pubDate>
		<dc:creator>shirai</dc:creator>
				<category><![CDATA[実施例]]></category>
		<category><![CDATA[connectivity graph]]></category>
		<category><![CDATA[gas]]></category>
		<category><![CDATA[google chart api]]></category>
		<category><![CDATA[googleanalytics]]></category>

		<guid isPermaLink="false">http://abc-analytics.com/%e3%83%9a%e3%83%bc%e3%82%b8%e9%81%b7%e7%a7%bb%e3%83%ac%e3%83%9d%e3%83%bc%e3%83%88%e3%81%ae%e8%87%aa%e5%8b%95%e9%85%8d%e4%bf%a1%e3%82%92%e5%ae%9f%e7%8f%be%e3%81%99%e3%82%8b</guid>
		<description><![CDATA[前回、スクロール計測のレポートを自動配信する話を書いたのですが、今回は、Google Analtyicsのページ遷移データをグラフ化してメール配信する話です。 同じく、google apps script + google chart api でのメールによるレポート配信です。 AuthSubでの作成も作りました。試してみてください。 Google Analyticsにおけるページ遷移のデータ あるページにおける、遷移上の前後のページは、WEBのレポート画面で見ることができます。ナビゲーションサマリーですね。ナビゲーションサマリーの数字の見方は、以前Wikiの方に書きました。 WEB上のレポート画面では、重複ページの回数を抜いて、パーセンテージにして表示してます。(移動先のデータ(nextPage)のデータがよく分かってないのですが、、) 今回は、Data Export APIでデータを持ってくるので、重複ページを抜かないとと思っていたら、uniquePageviewの数字がそのままの数字なので、端折って、uniquePageviewの数字を使いました。uniquePageviewを使う妥当性について、Forumなどで質問があったみたいですが、数値を見る分には大丈夫そうなので、uniquePageviewを使います。単に重複を抜くためだけですが。 とにかく、ディメンジョンに, “priviousPagepath”と”nextPagePath”。指標に uniquePageviewを使います。 Google Chart APIの GraphViz Chart 前回のデータを表示する時に、chart apiの文書を見てたら、おもしろいチャートの種類を見つけました。 Connectivity graphsとかいてあります。日本語だと 連結グラフ？ これも、パラメータを指定するだけで、グラフをimageにして返してくれます。またしても、パラメータの設定が難しかったのですが、PDFの説明書みたいなのを見ながら設定してみました。微妙に chart apiでの記述と、h本家の記述と違う部分もあると思います。subGraphも設定できるみたいで、それでクラスター表示みたいなのをしようと思ったけど、Google Chart Api側で、動くように設定する方法がわかりませんでした。(* google chart apiでの方法を知っていたら教えてください。) 前回も書きましたが、http://code.google.com/apis/chart/docs/chart_playground.htmlでできるチャート図を確認しながら、設定をいじれるので、便利です。 とりあえずの例 それで、実際にこのサイトのデータで生成してみました。メールレポートの場合は、google apps scriptでHTMLメールを使って、scriptの自動実行時間を指定すれば良いです。参考に、ちょっと違うけど、フォーム受付けを自動返信する話です。今回は、これを時間指定にするだけです。 できたimage画像です。 (画像クリックでできたURLそのものに遷移します) 閲覧開始数のベスト８ページのデータと、ページ遷移の組み合わせで数が多かったベスト１０のデータを抜き出してます。頭に数字があるのは、そのページの期間内の閲覧開始数です。矢印線上にある数字がページ遷移の数です。 数字だけの奴(_108_)は、indexページです。閲覧開始数が108でした。 （自分自身に返ってる奴は、データの初期段階でパラメータが違うものをカットしたせいです。処理が粗いです。説明もゴニョゴニョですが、、） サイトオーバーレイもいいですが、サイト全体のユーザーの動きはコチラのほうがイメージし易いと思います。 気を付ける点としては、上のリンク先の記事でも説明してるのですが、セッションベースのデータでないので、遷移の数は、ランディングからすぐに遷移した数ではないです。 secondPagePathもデータとしてはあるので、そちらでもグラフはかけそうではあるのですが、、、 あと、chart apiで生成できるピクセル数の大きさは、縦×横で、300000pxまでなのですが、このgraphVizでできるデータはそれを超えてます、、、、また、これはexperimentのマークがついてるので、仕様変更の可能性もありそうではあります。 それでも、自動化できたので、データを見せていただける方には、メールで日次配信します（コメントで遷移図希望と書いて下さい)。今回のは、Google [...]]]></description>
			<content:encoded><![CDATA[</p>
<p>前回、<a href="http://abc-analytics.com/automate_reporting_google_apps_script">スクロール計測のレポートを自動配信する話</a>を書いたのですが、今回は、Google Analtyicsのページ遷移データをグラフ化してメール配信する話です。</p>
<p>同じく、google apps script + google chart api でのメールによるレポート配信です。</p>
<p style="padding-top:10px;"><span style="color: #ff0000;font-size:large;"><a href="http://abc-analytics.com/transition_report"><span style="color: #ff0000;text-decoration: underline;">AuthSubでの作成も作りました。試してみてください。</span></a></span></p>
<h3>Google Analyticsにおけるページ遷移のデータ</h3>
<p>あるページにおける、遷移上の前後のページは、WEBのレポート画面で見ることができます。ナビゲーションサマリーですね。<a href="http://wiki.abc-analytics.com/view_your_report/content/what_you_can_see_content_detail/what_is_navigation_analysis">ナビゲーションサマリーの数字の見方</a>は、以前Wikiの方に書きました。</p>
<p>WEB上のレポート画面では、重複ページの回数を抜いて、パーセンテージにして表示してます。(移動先のデータ(nextPage)のデータがよく分かってないのですが、、)</p>
<p>今回は、Data Export APIでデータを持ってくるので、重複ページを抜かないとと思っていたら、uniquePageviewの数字がそのままの数字なので、端折って、uniquePageviewの数字を使いました。uniquePageviewを使う妥当性について、Forumなどで質問があったみたいですが、数値を見る分には大丈夫そうなので、uniquePageviewを使います。単に重複を抜くためだけですが。</p>
<p>とにかく、ディメンジョンに, “priviousPagepath”と”nextPagePath”。指標に uniquePageviewを使います。</p>
<h3>Google Chart APIの GraphViz Chart</h3>
<p>前回のデータを表示する時に、chart apiの文書を見てたら、おもしろいチャートの種類を見つけました。 <a href="http://code.google.com/apis/chart/docs/gallery/graphviz.html">Connectivity graphs</a>とかいてあります。日本語だと 連結グラフ？</p>
<p>これも、パラメータを指定するだけで、グラフをimageにして返してくれます。またしても、パラメータの設定が難しかったのですが、<a href="http://www.graphviz.org/pdf/dotguide.pdf">PDFの説明書</a>みたいなのを見ながら設定してみました。微妙に chart apiでの記述と、h本家の記述と違う部分もあると思います。subGraphも設定できるみたいで、それでクラスター表示みたいなのをしようと思ったけど、Google Chart Api側で、動くように設定する方法がわかりませんでした。(* google chart apiでの方法を知っていたら教えてください。)</p>
<p>前回も書きましたが、<a href="http://code.google.com/apis/chart/docs/chart_playground.html">http://code.google.com/apis/chart/docs/chart_playground.html</a>でできるチャート図を確認しながら、設定をいじれるので、便利です。</p>
<h3>とりあえずの例</h3>
<p>それで、実際にこのサイトのデータで生成してみました。メールレポートの場合は、google apps scriptでHTMLメールを使って、scriptの自動実行時間を指定すれば良いです。参考に、ちょっと違うけど、<a href="http://wiki.slash-reader.com/auto-responing-with-google-apps-script-when-form-submitted">フォーム受付けを自動返信する話です</a>。今回は、これを時間指定にするだけです。</p>
<p>できたimage画像です。 (画像クリックでできたURLそのものに遷移します)<a href="http://chart.apis.google.com/chart?cht=gv&amp;chl=digraph%7B%5Bbgcolor=gold,label=transitional_chart,nodespe=0.5,ranksep=2%5D_measure_how_much_vi-%3E_%5Blabel=29%5D;_-%3E_business%5Blabel=15%5D;_measure_how_much_vi-%3E_data_feeds_query_ex%5Blabel=10%5D;_measure_how_much_vi-%3E_track_outbound_as_a%5Blabel=7%5D;_google_analytics_da-%3E_google_analytics_da%5Blabel=5%5D;_-%3E_page_2%5Blabel=5%5D;_measure_how_much_vi-%3E_business%5Blabel=5%5D;_what_are_visits_ent-%3E_ga_%E3%83%9A%EF%BC%8D%E3%82%B8%E5%88%A5%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%5Blabel=5%5D;_-%3E_profile%5Blabel=5%5D;_blog-%3E_profile%5Blabel=4%5D;_measure_how_much_vi%5Blabel=_487_measure_how_much_vi%5D;_what_are_visits_ent%5Blabel=_111_what_are_visits_ent%5D;_%5Blabel=_108_%5D;_what_is_user_in_goo%5Blabel=_88_what_is_user_in_goo%5D;_track_outbound_as_a%5Blabel=_44_track_outbound_as_a%5D;_data_feeds_query_ex%5Blabel=_36_data_feeds_query_ex%5D;_google_analytics_da%5Blabel=_33_google_analytics_da%5D;_revise_my_analysis_%5Blabel=_30_revise_my_analysis_%5D%7D&quot;"><img src="http://chart.apis.google.com/chart?cht=gv&amp;chl=digraph%7B%5Bbgcolor=gold,label=transitional_chart,nodespe=0.5,ranksep=2%5D_measure_how_much_vi-%3E_%5Blabel=29%5D;_-%3E_business%5Blabel=15%5D;_measure_how_much_vi-%3E_data_feeds_query_ex%5Blabel=10%5D;_measure_how_much_vi-%3E_track_outbound_as_a%5Blabel=7%5D;_google_analytics_da-%3E_google_analytics_da%5Blabel=5%5D;_-%3E_page_2%5Blabel=5%5D;_measure_how_much_vi-%3E_business%5Blabel=5%5D;_what_are_visits_ent-%3E_ga_%E3%83%9A%EF%BC%8D%E3%82%B8%E5%88%A5%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%5Blabel=5%5D;_-%3E_profile%5Blabel=5%5D;_blog-%3E_profile%5Blabel=4%5D;_measure_how_much_vi%5Blabel=_487_measure_how_much_vi%5D;_what_are_visits_ent%5Blabel=_111_what_are_visits_ent%5D;_%5Blabel=_108_%5D;_what_is_user_in_goo%5Blabel=_88_what_is_user_in_goo%5D;_track_outbound_as_a%5Blabel=_44_track_outbound_as_a%5D;_data_feeds_query_ex%5Blabel=_36_data_feeds_query_ex%5D;_google_analytics_da%5Blabel=_33_google_analytics_da%5D;_revise_my_analysis_%5Blabel=_30_revise_my_analysis_%5D%7D" alt="" width="1024" height="308" /></a></p>
<p>閲覧開始数のベスト８ページのデータと、ページ遷移の組み合わせで数が多かったベスト１０のデータを抜き出してます。頭に数字があるのは、そのページの期間内の閲覧開始数です。矢印線上にある数字がページ遷移の数です。 数字だけの奴(_108_)は、indexページです。閲覧開始数が108でした。</p>
<p>（自分自身に返ってる奴は、データの初期段階でパラメータが違うものをカットしたせいです。処理が粗いです。説明もゴニョゴニョですが、、）</p>
<p><a href="http://wiki.abc-analytics.com/view_your_report/content/what_you_can_see_content_detail/what_is_click_pattern_in_content_detail">サイトオーバーレイ</a>もいいですが、サイト全体のユーザーの動きはコチラのほうがイメージし易いと思います。</p>
<p>気を付ける点としては、<a href="http://wiki.abc-analytics.com/view_your_report/content/what_you_can_see_content_detail/what_is_navigation_analysis">上のリンク先の記事でも説明してる</a>のですが、セッションベースのデータでないので、遷移の数は、ランディングからすぐに遷移した数ではないです。 secondPagePathもデータとしてはあるので、そちらでもグラフはかけそうではあるのですが、、、</p>
<p>あと、chart apiで生成できるピクセル数の大きさは、縦×横で、300000pxまでなのですが、このgraphVizでできるデータはそれを超えてます、、、、また、これはexperimentのマークがついてるので、仕様変更の可能性もありそうではあります。</p>
<p>それでも、自動化できたので、データを見せていただける方には、<a href="http://abc-analytics.com/mail-reporting">メールで日次配信します</a>（コメントで遷移図希望と書いて下さい)。今回のは、Google Analtyisの初期設定で取れるデータなので、閲覧権限をもらえれば、それでOKです。 Auth認証でのデータ表示に対応するのは、詳しい人なら簡単にできそうなので、そういう人に任せます。</p>
]]></content:encoded>
			<wfw:commentRss>http://abc-analytics.com/automate_visualizing_pages_transitions/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>google apps scriptと chart apiを使ったレポート自動化</title>
		<link>http://abc-analytics.com/automate_reporting_google_apps_script</link>
		<comments>http://abc-analytics.com/automate_reporting_google_apps_script#comments</comments>
		<pubDate>Fri, 18 Jun 2010 10:19:12 +0000</pubDate>
		<dc:creator>shirai</dc:creator>
				<category><![CDATA[実施例]]></category>
		<category><![CDATA[ga]]></category>
		<category><![CDATA[gas]]></category>

		<guid isPermaLink="false">http://abc-analytics.com/automate_reporting_google_apps_script</guid>
		<description><![CDATA[google apps scriptを使ってGoogle Analyticsのデータを取得、加工、メール配信をする。数値データはgoogle chart apiを使ってグラフしておき、ＨＴＭＬメールとして送る。]]></description>
			<content:encoded><![CDATA[<p>今回は、アクセス解析の話ではないのですが、データとして GAを使ったので、ここに書きます。</p>
<p><a href="http://abc-analytics.com/measure_how_much_viewed_in_google_analytics">前回、スクロール率をgoogle analyticsで計測した話を書きました</a>。 レポート部分は、エクセルでの表示だったんですが、今回、自動化のひとつの方法として、タイトルの方法をやったので、報告します。</p>
<h3>Google Apps Script(GAS)は、かなりの便利ツール</h3>
<p>データを外部から引っ張ってきて、加工して、メール配信というのが、割合簡単にできます。</p>
<p>今回は、google analyticsのデータを引っ張って、加工して、HTMLメールで配信という形の紹介です。</p>
<p>GASの記述は、javascriptです。 google analyticsの集計の設定も javascriptですので、 javascriptは習得しがいのある技術かもしれません。</p>
<p>手順としては、URLFetchで google analytics Data Export  Api からデータを取得して、それを google chart apiを使って、 HTMLメールで送る作業です。</p>
<h3>Google Chart APIも、自動化ツールとして価値大。</h3>
<p>URLを指定すれば、チャート画像を返してくれます。</p>
<p>ですので、変化する数字を自動的にグラフ化してレポーティングしたい場合に価値が高いです。</p>
<p>パラメータがたくさんあって、<a href="http://code.google.com/apis/chart/docs/making_charts.html">マニュアル(解説)が英語</a>なのでとっつきにくいですが、データ、チャートタイプ、ラベル、軸、などの概念とapiでのパラメータが一致すれば、それなりに使えるのではと思ってます。</p>
<p>別<a href="http://wiki.slash-reader.com/google-chart-api">別サイトにメモみたいなのを書きましたが、、、あまり参考にならないかも。</a></p>
<h3>GMailの問題？</h3>
<p>いろいろいじって、なんとか自動化にこぎつけたのですが、GmailのHTML表示の時に、imageタグの部分が上手く表示されなくて、いろいろ探したのですが、結局あきらめました。 たぶん、文字数の問題のような気がしてるのですが、、、どうなんでしょう。 Yahoo Japanの Web mailなら問題なかったです。</p>
<p>出力画像と スクリプトを貼りつけます。</p>
<p><a href="http://abc-analytics.com/mail-reporting">スクロール計測とそのレポート配信を試してみたい方は連絡下さい</a>(コメントでスクロール計測希望と書いてくだい)。 設定して、週次 or 日次で、特定のディメンジョンで切ったスクロール率のよる閲覧割合をメールレポーティングします。無料です。 以下の画像のような形でのHTMLメールが送られます。</p>
<p>画像レポートの後に、参考に、GASのスクリプトを貼りつけておきます。 貼り付けた以外にも追加の定義(関数、代入式)などがあるので、全部ではないです。</p>
<div>2010-06-03から2010-06-15のセッション数上位３ページの精読率調査です。数字はセッション数です。</div>
<div>
<div><img style="display: block;" src="http://chart.apis.google.com/chart?cht=bhg&amp;chs=250x990&amp;chd=t:297,244,244,243,238,230,224,202,176,146,84|132,105,106,104,98,92,84,78,74,69,42|37,32,31,31,31,29,28,26,23,18,11&amp;chds=0,297&amp;chxr=1,0,297&amp;chm=N,000000,0,,12,0,e|N,00FFFF,1,,12,0,e|N,0000FF,2,,12,0,e&amp;chdl=referral|(none)|organic&amp;chco=4d89f9,c6d9fd,63C6DE&amp;chxt=y,x&amp;chxl=0:|100|90|80|70|60|50|40|30|20|10|0&amp;chxs=0,ff0000,12,0,lt|1,0000ff,10,1,lt" alt="" /><br />
<a href="http://abc-analytics.com/measure_how_much_viewed_in_google_analytics">/measure_how_much_viewed_in_google_analytics</a></div>
<div>
<div><img style="display: block;" src="http://chart.apis.google.com/chart?cht=bhg&amp;chs=250x990&amp;chd=t:46,42,41,40,33,32,28,26,23,19,17|24,10,7,3,3,3,3,3,3,1,1|4,3,2,2,2,1,1,1,1,1,1&amp;chds=0,46&amp;chxr=1,0,46&amp;chm=N,000000,0,,12,0,e|N,00FFFF,1,,12,0,e|N,0000FF,2,,12,0,e&amp;chdl=organic|(none)|referral&amp;chco=4d89f9,c6d9fd,63C6DE&amp;chxt=y,x&amp;chxl=0:|100|90|80|70|60|50|40|30|20|10|0&amp;chxs=0,ff0000,12,0,lt|1,0000ff,10,1,lt" alt="" /><br />
<a href="http://abc-analytics.com/what_are_visits_entrances_uniqueviews_pageviews_in_google_analytics">/what_are_visits_entrances_uniqueviews_pageviews_in_google_analytics</a></div>
<div>
<div><img style="display: block;" src="http://chart.apis.google.com/chart?cht=bhg&amp;chs=250x990&amp;chd=t:30,24,23,20,15,15,12,10,4,6,4|30,21,22,18,15,15,14,8,6,5,4|26,20,16,14,13,12,9,4,5,4,6&amp;chds=0,30&amp;chxr=1,0,30&amp;chm=N,000000,0,,12,0,e|N,00FFFF,1,,12,0,e|N,0000FF,2,,12,0,e&amp;chdl=referral|(none)|organic&amp;chco=4d89f9,c6d9fd,63C6DE&amp;chxt=y,x&amp;chxl=0:|100|90|80|70|60|50|40|30|20|10|0&amp;chxs=0,ff0000,12,0,lt|1,0000ff,10,1,lt" alt="" /><br />
<a href="http://abc-analytics.com/">/</a></div>
</div>
</div>
</div>
<p>以下、レポート配信に使ったscriptの一部。</p>
<blockquote>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span>function CRReport(id,name,title,address){</pre>
<pre><span class="lnum">   2:  </span>  <span class="rem">//id = "ga:21600568", name="shirai", title="wordpress", address="kimiyuki[at?]gmail.com";</span></pre>
<pre class="alt"><span class="lnum">   3:  </span>  var startdate; var enddate; var dimensions = []; var metrics = []; var filters = <span class="str">""</span>; var segments = <span class="str">""</span>;</pre>
<pre><span class="lnum">   4:  </span>  var entries; var sort;var data;</pre>
<pre class="alt"><span class="lnum">   5:  </span>  var tmp;</pre>
<pre><span class="lnum">   6:  </span>  var siteurl;</pre>
<pre class="alt"><span class="lnum">   7:  </span>  startdate = getMyDate(-15); enddate = getMyDate(-3);</pre>
<pre><span class="lnum">   8:  </span>  dimensions = [<span class="str">"ga:pagePath,ga:hostname"</span>]; metrics=[<span class="str">"ga:visits"</span>]; sort=[<span class="str">"-ga:visits"</span>];</pre>
<pre class="alt"><span class="lnum">   9:  </span>  entries =  getDataFromApi(id, startdate, enddate,dimensions, metrics, filters, segments, sort);</pre>
<pre><span class="lnum">  10:  </span>  pagePaths = [];</pre>
<pre class="alt"><span class="lnum">  11:  </span>  entries.slice(0,3).forEach(function(entry){</pre>
<pre><span class="lnum">  12:  </span>    var el = entry.getElements(<span class="str">"http://schemas.google.com/analytics/2009"</span>, <span class="str">"dimension"</span>);</pre>
<pre class="alt"><span class="lnum">  13:  </span>    el.forEach(function(e){</pre>
<pre><span class="lnum">  14:  </span>      <span class="kwrd">if</span>(e.getAttribute(<span class="str">"name"</span>).getValue() == <span class="str">"ga:pagePath"</span>) pagePaths.push(e.getAttribute(<span class="str">"value"</span>).getValue());</pre>
<pre class="alt"><span class="lnum">  15:  </span>      <span class="kwrd">if</span>(!siteurl &amp;&amp; e.getAttribute(<span class="str">"name"</span>).getValue() == <span class="str">"ga:hostname"</span>) siteurl = e.getAttribute(<span class="str">"value"</span>).getValue();</pre>
<pre><span class="lnum">  16:  </span>    });</pre>
<pre class="alt"><span class="lnum">  17:  </span>  });</pre>
<pre><span class="lnum">  18:  </span></pre>
<pre class="alt"><span class="lnum">  19:  </span>  data = {};</pre>
<pre><span class="lnum">  20:  </span>  var w1 = [<span class="kwrd">null</span>,<span class="kwrd">null</span>, <span class="kwrd">null</span>]; var w2 = [];</pre>
<pre class="alt"><span class="lnum">  21:  </span>  pagePaths.forEach(function(path){</pre>
<pre><span class="lnum">  22:  </span>    Utilities.sleep(500);</pre>
<pre class="alt"><span class="lnum">  23:  </span>    w1 = [<span class="kwrd">null</span>,<span class="kwrd">null</span>,<span class="kwrd">null</span>], w2=[];</pre>
<pre><span class="lnum">  24:  </span>    var dim_sg = <span class="str">"ga:medium"</span>;</pre>
<pre class="alt"><span class="lnum">  25:  </span>    dimensions = [<span class="str">"ga:eventCategory"</span>, <span class="str">"ga:eventAction"</span>, <span class="str">"ga:pagePath"</span>,dim_sg]; metrics = [<span class="str">"ga:uniqueEvents"</span>]; sort = <span class="kwrd">null</span>;</pre>
<pre><span class="lnum">  26:  </span>    filters=<span class="str">"ga:eventCategory==CompRead0523B;ga:pagePath=="</span> + path;</pre>
<pre class="alt"><span class="lnum">  27:  </span>    segments=<span class="kwrd">null</span>;</pre>
<pre><span class="lnum">  28:  </span>    entries = getDataFromApi(id, startdate, enddate, dimensions, metrics, filters, segments, sort);</pre>
<pre class="alt"><span class="lnum">  29:  </span>    entries.forEach(function(entry){</pre>
<pre><span class="lnum">  30:  </span>        var ds = entry.getElements(<span class="str">"http://schemas.google.com/analytics/2009"</span>, <span class="str">"dimension"</span>);</pre>
<pre class="alt"><span class="lnum">  31:  </span>        var es = entry.getElements(<span class="str">"http://schemas.google.com/analytics/2009"</span>, <span class="str">"metric"</span>);</pre>
<pre><span class="lnum">  32:  </span>        var w = <span class="kwrd">new</span> Array();</pre>
<pre class="alt"><span class="lnum">  33:  </span>        ds.forEach(function(e){</pre>
<pre><span class="lnum">  34:  </span>          <span class="kwrd">if</span>(e.getAttribute(<span class="str">"name"</span>).getValue()==<span class="str">"ga:eventAction"</span>) w1[1] = parseInt(e.getAttribute(<span class="str">"value"</span>).getValue().replace(<span class="str">"z"</span>,<span class="str">""</span>));</pre>
<pre class="alt"><span class="lnum">  35:  </span>          <span class="kwrd">if</span>(e.getAttribute(<span class="str">"name"</span>).getValue()== dim_sg){w1[0] = e.getAttribute(<span class="str">"value"</span>).getValue();}</pre>
<pre><span class="lnum">  36:  </span>        });</pre>
<pre class="alt"><span class="lnum">  37:  </span>        es.forEach(function(e){</pre>
<pre><span class="lnum">  38:  </span>          <span class="kwrd">if</span>(e.getAttribute(<span class="str">"name"</span>).getValue() == <span class="str">"ga:uniqueEvents"</span>) w1[2] = parseInt(e.getAttribute(<span class="str">"value"</span>).getValue());</pre>
<pre class="alt"><span class="lnum">  39:  </span>        });</pre>
<pre><span class="lnum">  40:  </span>        w2.push([w1[0], w1[1],w1[2]]); <span class="rem">//値にして設定するため</span></pre>
<pre class="alt"><span class="lnum">  41:  </span>        w1 = [<span class="kwrd">null</span>,<span class="kwrd">null</span>, <span class="kwrd">null</span>];</pre>
<pre><span class="lnum">  42:  </span>      });</pre>
<pre class="alt"><span class="lnum">  43:  </span>    w2 = w2.sort(function(a,b){<span class="kwrd">return</span> a[1] &gt; b[1]});</pre>
<pre><span class="lnum">  44:  </span>    <span class="kwrd">if</span>(data[path] == <span class="kwrd">null</span>) data[path] = [];</pre>
<pre class="alt"><span class="lnum">  45:  </span>    data[path] = w2.map(function(x){<span class="kwrd">return</span> x});</pre>
<pre><span class="lnum">  46:  </span>      <span class="rem">//data[path] = w2.map(function(e){return [e[0], Math.floor((e[1]/total)*100)]});</span></pre>
<pre class="alt"><span class="lnum">  47:  </span>  });</pre>
<pre><span class="lnum">  48:  </span> <span class="rem">// Logger.log(data);</span></pre>
<pre class="alt"><span class="lnum">  49:  </span>  html = outputChart(data, startdate, enddate, siteurl);</pre>
<pre><span class="lnum">  50:  </span>  Logger.log(html);</pre>
<pre class="alt"><span class="lnum">  51:  </span>  MailApp.sendEmail(address, <span class="str">"CompRead"</span>,<span class="str">"html mail"</span>, {cc: <span class="str">"kimiyuki[aat]gmail.com"</span>, htmlBody: html});</pre>
<pre><span class="lnum">  52:  </span>}</pre>
<pre class="alt"><span class="lnum">  53:  </span></pre>
<pre><span class="lnum">  54:  </span></pre>
<pre class="alt"><span class="lnum">  55:  </span>function outputChart(data, startdate, enddate ,siteurl){</pre>
<pre><span class="lnum">  56:  </span>  var html = <span class="str">"&lt;div&gt;"</span> + startdate + <span class="str">"から"</span> + enddate + <span class="str">"のセッション数上位３ページの精読率調査です。数字はセッション数です。&lt;/div&gt;"</span>;</pre>
<pre class="alt"><span class="lnum">  57:  </span>  <span class="kwrd">for</span>(e <span class="kwrd">in</span> data){</pre>
<pre><span class="lnum">  58:  </span>    <span class="rem">//Logger.log(e);</span></pre>
<pre class="alt"><span class="lnum">  59:  </span>    <span class="rem">//Logger.log(data[e] instanceof Array);   </span></pre>
<pre><span class="lnum">  60:  </span>    <span class="rem">//Logger.log(data[e].length);</span></pre>
<pre class="alt"><span class="lnum">  61:  </span>    <span class="rem">//Logger.log(data[e].toString());</span></pre>
<pre><span class="lnum">  62:  </span></pre>
<pre class="alt"><span class="lnum">  63:  </span>    <span class="rem">//making dimentionable data    </span></pre>
<pre><span class="lnum">  64:  </span>    var dimmed_data = data[e].reduce(function(r, x){</pre>
<pre class="alt"><span class="lnum">  65:  </span>      <span class="kwrd">if</span>(r[x[0]] == <span class="kwrd">null</span>){</pre>
<pre><span class="lnum">  66:  </span>        r[x[0]] = x[2];</pre>
<pre class="alt"><span class="lnum">  67:  </span>      }<span class="kwrd">else</span>{</pre>
<pre><span class="lnum">  68:  </span>        r[x[0]] += x[2];</pre>
<pre class="alt"><span class="lnum">  69:  </span>      }</pre>
<pre><span class="lnum">  70:  </span>      <span class="kwrd">return</span> r;</pre>
<pre class="alt"><span class="lnum">  71:  </span>    }, {});</pre>
<pre><span class="lnum">  72:  </span>    <span class="rem">//Logger.log(dimmed_data.toSource());</span></pre>
<pre class="alt"><span class="lnum">  73:  </span></pre>
<pre><span class="lnum">  74:  </span>    var tmp = [];</pre>
<pre class="alt"><span class="lnum">  75:  </span>    Logger.log(<span class="str">"object="</span>); Logger.log(dimmed_data.toSource() + <span class="str">"\n"</span>);</pre>
<pre><span class="lnum">  76:  </span>    <span class="kwrd">for</span>(c <span class="kwrd">in</span> dimmed_data){tmp.push([c, dimmed_data[c]])};</pre>
<pre class="alt"><span class="lnum">  77:  </span>    dimmed_data = tmp.sort(function(a,b){ <span class="kwrd">return</span> a[1] &lt; b[1]});</pre>
<pre><span class="lnum">  78:  </span>    Logger.log(<span class="str">"dimmed_data="</span>);</pre>
<pre class="alt"><span class="lnum">  79:  </span>    Logger.log(dimmed_data.toString()+<span class="str">"\n"</span>);</pre>
<pre><span class="lnum">  80:  </span>    var label = data[e].map(function(x){<span class="kwrd">return</span> x[1]}).unique();</pre>
<pre class="alt"><span class="lnum">  81:  </span>    var data1 = data[e].filter(function(x){<span class="kwrd">return</span> x[0] == dimmed_data[0][0]}).map(function(x){ <span class="kwrd">return</span> x[2]});</pre>
<pre><span class="lnum">  82:  </span>    var data2 = data[e].filter(function(x){<span class="kwrd">return</span> x[0] == dimmed_data[1][0]}).map(function(x){ <span class="kwrd">return</span> x[2]});</pre>
<pre class="alt"><span class="lnum">  83:  </span>    var data3 = dimmed_data.length &lt; 3 ? <span class="str">""</span> : data[e].filter(function(x){<span class="kwrd">return</span> x[0] == dimmed_data[2][0]}).map(function(x){<span class="kwrd">return</span> x[2]});</pre>
<pre><span class="lnum">  84:  </span>    <span class="rem">//Logger.log(label);</span></pre>
<pre class="alt"><span class="lnum">  85:  </span>    <span class="rem">//Logger.log(data1);</span></pre>
<pre><span class="lnum">  86:  </span>    <span class="rem">//Logger.log(data2);                                       </span></pre>
<pre class="alt"><span class="lnum">  87:  </span>    <span class="rem">//html += "&lt;tr&gt;&lt;td&gt;" + e + "&lt;/br&gt;" + data[e].map(function(x){return x[0] + '=&gt;' + x[1]}).join(',') + "&lt;/td&gt;&lt;/tr&gt;";</span></pre>
<pre><span class="lnum">  88:  </span>    html += <span class="str">"&lt;div&gt;&lt;div&gt;"</span>;</pre>
<pre class="alt"><span class="lnum">  89:  </span>    html +=  makeChart(label, data1, data2,data3, dimmed_data[0][0], dimmed_data[1][0], (dimmed_data.length &gt; 2 ? dimmed_data[2][0] : <span class="str">""</span>));</pre>
<pre><span class="lnum">  90:  </span>    html +=  <span class="str">"&lt;/br&gt;"</span>;</pre>
<pre class="alt"><span class="lnum">  91:  </span>    html += <span class="str">"&lt;a href='http://"</span> + siteurl + e + <span class="str">"'&gt;"</span> + e + <span class="str">"&lt;/a&gt;&lt;/div&gt;"</span>;</pre>
<pre><span class="lnum">  92:  </span>    html += <span class="str">"&lt;div&gt;　　&lt;/div&gt;"</span> <span class="rem">//全角空白を入れた。間隔を作るため</span></pre>
<pre class="alt"><span class="lnum">  93:  </span>  }</pre>
<pre><span class="lnum">  94:  </span>  html += <span class="str">"&lt;/div&gt;"</span>;</pre>
<pre class="alt"><span class="lnum">  95:  </span>  <span class="kwrd">return</span> html;</pre>
<pre><span class="lnum">  96:  </span>}</pre>
<pre class="alt"><span class="lnum">  97:  </span></pre>
<pre><span class="lnum">  98:  </span>function makeChart(label, data1, data2, data3, dataLabel1, dataLabel2, dataLabel3){</pre>
<pre class="alt"><span class="lnum">  99:  </span>      var max = data1.concat(data2).reduce(function(r, e){<span class="kwrd">return</span> r &gt; e ? r : e;}, 10);</pre>
<pre><span class="lnum"> 100:  </span>      var chds = <span class="str">"chds="</span> + <span class="str">"0,"</span> + max;</pre>
<pre class="alt"><span class="lnum"> 101:  </span>      var chxr = <span class="str">"chxr=1,0,"</span> + max;</pre>
<pre><span class="lnum"> 102:  </span>      var chco = <span class="str">"chco=4d89f9,c6d9fd"</span> + (data3 != <span class="str">""</span> ? <span class="str">",63C6DE"</span> : <span class="str">""</span>);</pre>
<pre class="alt"><span class="lnum"> 103:  </span>      var chdl = <span class="str">"chdl="</span> + dataLabel1 + <span class="str">"|"</span> + dataLabel2 + (dataLabel3 != <span class="str">""</span> ? <span class="str">"|"</span>+dataLabel3 : <span class="str">""</span>);</pre>
<pre><span class="lnum"> 104:  </span>      var chm = <span class="str">"chm=N,000000,0,,12,0,e|N,00FFFF,1,,12,0,e"</span> + (data3 != <span class="str">""</span> ? <span class="str">"|N,0000FF,2,,12,0,e"</span> : <span class="str">""</span>);</pre>
<pre class="alt"><span class="lnum"> 105:  </span>      var url =</pre>
<pre><span class="lnum"> 106:  </span>          <span class="str">"&lt;img style='display:block;' src='http://chart.apis.google.com/chart?cht=bhg&amp;chs=250x"</span> + (dataLabel3 != <span class="str">""</span> ? <span class="str">"990"</span> : <span class="str">"660"</span>) + <span class="str">"&amp;chd=t:"</span> +</pre>
<pre class="alt"><span class="lnum"> 107:  </span>          data1.join(<span class="str">","</span>) + <span class="str">"|"</span> + data2.join(<span class="str">","</span>) + (data3 != <span class="str">""</span> ? <span class="str">"|"</span>+data3.join(<span class="str">","</span>) : <span class="str">""</span>) +</pre>
<pre><span class="lnum"> 108:  </span>          <span class="str">"&amp;"</span> + chds + <span class="str">"&amp;"</span> + chxr + <span class="str">"&amp;"</span> + chm + <span class="str">"&amp;"</span> + chdl + <span class="str">"&amp;"</span> + chco +</pre>
<pre class="alt"><span class="lnum"> 109:  </span>          <span class="str">"&amp;chxt=y,x&amp;chxl=0:|"</span> + label.reverse().join(<span class="str">"|"</span>) + <span class="str">"&amp;chxs=0,ff0000,12,0,lt|1,0000ff,10,1,lt'/&gt;"</span>;</pre>
<pre><span class="lnum"> 110:  </span>  <span class="rem">//Logger.log(url);</span></pre>
<pre class="alt"><span class="lnum"> 111:  </span>  <span class="kwrd">return</span> url <span class="rem">//.replace("&amp;", "&amp;amp;");  </span></pre>
<pre><span class="lnum"> 112:  </span></pre>
<pre class="alt"><span class="lnum"> 113:  </span>}</pre>
</div>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://abc-analytics.com/automate_reporting_google_apps_script/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ページのどこまで読まれたかを計測する</title>
		<link>http://abc-analytics.com/measure_how_much_viewed_in_google_analytics</link>
		<comments>http://abc-analytics.com/measure_how_much_viewed_in_google_analytics#comments</comments>
		<pubDate>Thu, 03 Jun 2010 11:50:52 +0000</pubDate>
		<dc:creator>shirai</dc:creator>
				<category><![CDATA[ANALYTICS]]></category>
		<category><![CDATA[実施例]]></category>
		<category><![CDATA[スクロール]]></category>
		<category><![CDATA[精読率]]></category>
		<category><![CDATA[計測]]></category>
		<category><![CDATA[scroll]]></category>

		<guid isPermaLink="false">http://abc-analytics.com/%e3%83%9a%e3%83%bc%e3%82%b8%e3%81%ae%e3%81%a9%e3%81%93%e3%81%be%e3%81%a7%e8%aa%ad%e3%81%be%e3%82%8c%e3%81%9f%e3%81%8b%e3%82%92%e8%a8%88%e6%b8%ac%e3%81%99%e3%82%8b</guid>
		<description><![CDATA[ウェブサイトのコンテンツをページングするのはユーザビリティを損なう事が多いと僕は思ってます。ユーザビリティの定義は知りませんが、読むこと以外に”意識”を取られると嫌な感じがします。 提供側の論理は知りません。ユーザビリティですから。 次のページへのリンクをクリックという行為は、 そのアンカーテキストに目の焦点を併せる マウスを叩く リンク先のページがloadされる。 という順番で進むと思います。 速読の練習をした人はよく分かると思いますが、１の行為は、文字を探し・焦点を合わせるという、非常にコストのかかる行為です。読むという作業においては。。文脈を追う作業は超短期記憶のつなぎ合わせで、意識のallocation作業は天敵です。 一方で、アクセス数字を見たい人に取っては、ページ単位の計測が基本である以上、ページとコンテンツの粒度は一致してる方がいいと思ったりします。&#60;h2&#62; &#60;h3&#62;といった見出し単位での閲覧率を知りたいと思ったりすると思います。閲覧時間の方が知りたいかも、、、 とにかく、ページ閲覧量と滞在時間ではなくて、コンテンツ消費量とコンテンツ消化速度を知りたいとか思うと思います。 ヒートマップ使ったり、細かく計測タグを作れば、データは得られそうですが、面倒です。 で、とりあえずの一歩として、ページ全体でどの割合までページが表示されたかを、google analyticsで計測してみたので、その経過を書きます。 EventTrackで、表示領域割合をアクションとして送る。 当初、表示割合を計測するのに カスタム変数のページスコープ変数を使えばいいのかと思いました。上手く説明できないのですが、ページスコープは使いにくい機能(*)なので、前に使った手法(ページ別閲覧時間分布の作成)と同じような手法のtrackEventを利用する方法でやりました。 * ページスコープのカスタム変数を設定してtrackPageviewで送ったら、それは新規のページビューになってしまう。動的な行動記録をアトヅケで送れない。 それで、方針としは、 一秒毎に、画面の表示位置(割合)を取得。 それが、そのページ閲覧中で最大値を超えていたら、trackEventする。 １０％単位で区切る。google analyticsでは集計値しか取れないので、値は積み上げで送る。 ３０％まで閲覧されたというデータを送る場合には、0, 10, 20, 30 と送る。 なんとなくだけど、データの連続送信制限があった気がしたので、少しsleepを入れておく。 このサイトのrs.jsという奴です。データを送る順番をコントロールするために、jsdeferred.jquery.js をいれました。このサイトの説明を参考にした。 データを見る : totalEventsとpageviews eventの数字を見るときは、totalEvents(イベント数)と uniqueEvents(ユニークイベント数)の二つを見ますが、uniqueEventは、セッション内の同一カテゴリ・アクション・ラベルを一つ(distinct)にします。 自作のDataViewerで見たところ。labelにページURL(path)を入れていたのですが、ディメンジョンとして pathPathも有効なので、labelは他の用途に振り向けてもいいかもしれません。 ちなみに、ABテスト別に見たい時は、カスタム変数を出してフィルタリングします。 ちなみにこの自作ツール、チョコチョコ改良してます。、カスタムレポートを組むより、操作時間は短いはずです。 日別のデータ作成には便利です。 GAのレポート画面だと、日別のデータをグラフにしてくれますが、数字で出すには、カスタムレポート組まないといけない。 レポート化 アクセス解析サミットで清水さんの講演を見て、スクロール計測のレポートの形式を真似ました。 画像にパーセントで線を入れるのにbookmarkletを実行、画像を撮って、エクセルでrept関数。 javascript:hg=document.height;wd=document.width;for(var i=1; i&#60;10; i++){dv=document.createElement(&#34;div&#34;);dv.innerHTML= &#34;&#60;hr style=&#8217;color:#f00; background-color:#f00; height:5px;&#8217;/&#62;&#60;strong&#62;&#34;+(i*10).toString()+&#34;Percent==&#62;&#60;/strong&#62;&#34;;dv.style.position=&#34;absolute&#34;;dv.style.top=parseInt((i/10)*hg).toString()+&#34;px&#34;;dv.style.left=&#34;0&#34;;dv.style.width=wd+&#34;px&#34;;dv.style.zIndex=&#34;1000&#34;;document.body.appendChild(dv.cloneNode(true));} このbookmarkletは適当に作ったもの。 [...]]]></description>
			<content:encoded><![CDATA[<p>ウェブサイトのコンテンツをページングするのはユーザビリティを損なう事が多いと僕は思ってます。ユーザビリティの定義は知りませんが、読むこと以外に”意識”を取られると嫌な感じがします。 提供側の論理は知りません。ユーザビリティですから。</p>
<p>次のページへのリンクをクリックという行為は、</p>
<ol>
<li>そのアンカーテキストに目の焦点を併せる </li>
<li>マウスを叩く </li>
<li>リンク先のページがloadされる。 </li>
</ol>
<p>という順番で進むと思います。</p>
<p>速読の練習をした人はよく分かると思いますが、１の行為は、文字を探し・焦点を合わせるという、非常にコストのかかる行為です。読むという作業においては。。文脈を追う作業は超短期記憶のつなぎ合わせで、意識のallocation作業は天敵です。</p>
<p>一方で、アクセス数字を見たい人に取っては、ページ単位の計測が基本である以上、ページとコンテンツの粒度は一致してる方がいいと思ったりします。&lt;h2&gt; &lt;h3&gt;といった見出し単位での閲覧率を知りたいと思ったりすると思います。閲覧時間の方が知りたいかも、、、 とにかく、ページ閲覧量と滞在時間ではなくて、コンテンツ消費量とコンテンツ消化速度を知りたいとか思うと思います。</p>
<p>ヒートマップ使ったり、細かく計測タグを作れば、データは得られそうですが、面倒です。</p>
<p>で、とりあえずの一歩として、ページ全体でどの割合までページが表示されたかを、google analyticsで計測してみたので、その経過を書きます。</p>
<h3>EventTrackで、表示領域割合をアクションとして送る。</h3>
<p>当初、表示割合を計測するのに カスタム変数のページスコープ変数を使えばいいのかと思いました。上手く説明できないのですが、ページスコープは使いにくい機能(*)なので、<a href="http://wiki.abc-analytics.com/view_your_report/content/content_report_event_tracking/use_cases_of_event_tracking/distribution_time_on_page">前に使った手法(ページ別閲覧時間分布の作成)</a>と同じような手法のtrackEventを利用する方法でやりました。</p>
<p>* ページスコープのカスタム変数を設定してtrackPageviewで送ったら、それは新規のページビューになってしまう。動的な行動記録をアトヅケで送れない。</p>
<p>それで、方針としは、</p>
<ol>
<li>一秒毎に、画面の表示位置(割合)を取得。 </li>
<li>それが、そのページ閲覧中で最大値を超えていたら、trackEventする。 </li>
<li>１０％単位で区切る。google analyticsでは集計値しか取れないので、値は積み上げで送る。
<ul>
<li>３０％まで閲覧されたというデータを送る場合には、0, 10, 20, 30 と送る。 </li>
<li>なんとなくだけど、データの連続送信制限があった気がしたので、少しsleepを入れておく。 </li>
<li>このサイトのrs.jsという奴です。データを送る順番をコントロールするために、<a href="http://plugins.jquery.com/project/deferred">jsdeferred.jquery.js</a> をいれました。<a href="http://ichitcltk.hustle.ne.jp/gudon/modules/pico_rd/index.php?content_id=21">このサイトの説明を参考にした</a>。 </li>
</ul>
</li>
</ol>
<h3>データを見る : totalEventsとpageviews</h3>
<p>eventの数字を見るときは、totalEvents(イベント数)と uniqueEvents(ユニークイベント数)の二つを見ますが、uniqueEventは、セッション内の同一カテゴリ・アクション・ラベルを一つ(distinct)にします。 </p>
<p><a href="http://abc-analytics.com/wp-content/uploads/046be9c37a36_E930/image.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://abc-analytics.com/wp-content/uploads/046be9c37a36_E930/image_thumb.png" width="504" height="256" /></a> </p>
<p><a href="http://abc-analytics.com/data-feeds-query-explorer-in-windows-application">自作のDataViewer</a>で見たところ。labelにページURL(path)を入れていたのですが、ディメンジョンとして pathPathも有効なので、labelは他の用途に振り向けてもいいかもしれません。</p>
<p>ちなみに、ABテスト別に見たい時は、カスタム変数を出してフィルタリングします。</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/046be9c37a36_E930/ab_test_for_how_much_viewed_againt_content.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ab_test_for_how_much_viewed_againt_content" border="0" alt="ab_test_for_how_much_viewed_againt_content" src="http://abc-analytics.com/wp-content/uploads/046be9c37a36_E930/ab_test_for_how_much_viewed_againt_content_thumb.jpg" width="504" height="216" /></a> </p>
<p>ちなみに<a href="http://abc-analytics.com/data-feeds-query-explorer-in-windows-application">この自作ツール</a>、チョコチョコ改良してます。、カスタムレポートを組むより、操作時間は短いはずです。 日別のデータ作成には便利です。 GAのレポート画面だと、日別のデータをグラフにしてくれますが、数字で出すには、カスタムレポート組まないといけない。</p>
<h3>レポート化</h3>
<p><a href="http://a2i.jp/activity/summit/4596">アクセス解析サミットで清水さんの講演</a>を見て、スクロール計測のレポートの形式を真似ました。</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/046be9c37a36_E930/image_4.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://abc-analytics.com/wp-content/uploads/046be9c37a36_E930/image_thumb_4.png" width="250" height="484" /></a> </p>
<p>画像にパーセントで線を入れるのにbookmarkletを実行、画像を撮って、エクセルでrept関数。</p>
<p>javascript:hg=document.height;wd=document.width;for(var i=1; i&lt;10; i++){dv=document.createElement(&quot;div&quot;);dv.innerHTML= &quot;&lt;hr style=&#8217;color:#f00; background-color:#f00; height:5px;&#8217;/&gt;&lt;strong&gt;&quot;+(i*10).toString()+&quot;Percent==&gt;&lt;/strong&gt;&quot;;dv.style.position=&quot;absolute&quot;;dv.style.top=parseInt((i/10)*hg).toString()+&quot;px&quot;;dv.style.left=&quot;0&quot;;dv.style.width=wd+&quot;px&quot;;dv.style.zIndex=&quot;1000&quot;;document.body.appendChild(dv.cloneNode(true));}</p>
<p>このbookmarkletは適当に作ったもの。 ページ全体画像撮りは、<a href="https://chrome.google.com/extensions/detail/ckibcdccnfeookdmbahgiakhnjcddpki">このchromeのextensionを使った</a>。</p>
<p>このレポートを自動化するには、</p>
<p>bookmarklet実行 + 画像収集 ＋ データ抽出 + どこかで画像オブジェクトにする</p>
<p>という作業が必要。</p>
<p>Google Analtyicsで、trackEventを使って、ページのスクロールの割合を見て、レポートにするまで、でした。 アクションは知らない。</p>
]]></content:encoded>
			<wfw:commentRss>http://abc-analytics.com/measure_how_much_viewed_in_google_analytics/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows版 の Data Feed Query Explorer</title>
		<link>http://abc-analytics.com/data-feeds-query-explorer-in-windows-application</link>
		<comments>http://abc-analytics.com/data-feeds-query-explorer-in-windows-application#comments</comments>
		<pubDate>Sun, 30 May 2010 08:47:11 +0000</pubDate>
		<dc:creator>shirai</dc:creator>
				<category><![CDATA[その他]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[ソフト]]></category>
		<category><![CDATA[google analytics]]></category>

		<guid isPermaLink="false">http://abc-analytics.com/windows%e7%89%88-%e3%81%ae-data-query-explorer</guid>
		<description><![CDATA[Google Analyticsの Data Export APIからデータを引っ張るソフトを作った。 Visual Studio 2008 express editionのPublish機能を使って、パッケージ化した。.Net Framework 3.1 SP が必要。ただ、SetUp中にDownloadされるはず。 作った動機 1. なぜか、web上の Data Feed Query Explorer で、日本語が文字化けするようになった。 フォーラムに投稿したけど、英語力の問題もあって、上手くasset出来なかった。 2. .NETの ライブラリーが更新されたのとのニュースがあった。 ので、今まで、ruby や python や apps script で やってたけど、GUIで使えるソフトにも挑戦しようとして、やってみた。 ちなみに、windowsソフト( visual Studioを使って作る)のは、ほぼ初めてなので、UI、機能、エラー処理とかは、プリミティブです。検索や2chなどを見ながら、コピペなどをしながら作ったものです。 出来ないこと Data Feeds の方のデータを引っ張ってこれるようにしただけです。 Account Feedsの方は、profileを引っ張れるだけです。本当は、Account Feedsの方で、ゴールの設定やら カスタム変数、アドバンスセグメントの設定などが、引っ張れるれのですが、やってません。 できる事は、profileIDを指定して、そのprofileのデータを取得するだけです。 用途としては、データをコピーして、エクセルに貼り付けるといいと思います。(unicodeテキストの貼付けを選ぶと文字化けしないはずです) 注意 Data Export APIの制限に注意して下さい。たくさん使うと制限に引っかかるようです。 あと、Dimensionは７つ、Metricsは10が一度に取れる上限項目数です。また、Dimension, Metircsの組み合わせで、データ取得不可のものがあります。これらの場合は、このソフトの上のテキストボックスにある、Error Messageに、そのようなメーセージが出るはずです。 僕の事を悪意を持ってない人だと信頼できて、ソフトの不出来を許容できる方に使ってもらうのが望ましいです。ただ、いろいろ感想を言ってもらえれば、改善へのモチベーションになるので、なにかあれば、@phar [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://abc-analytics.com/wp-content/uploads/WindowsDataQueryExplorer_EE58/DataFeedsQueryExplorerinwindowsapplication.jpg"><img style="display: inline; border: 0px;" title="Data-Feeds-Query-Explorer-in-windows-application" src="http://abc-analytics.com/wp-content/uploads/WindowsDataQueryExplorer_EE58/DataFeedsQueryExplorerinwindowsapplication_thumb.jpg" border="0" alt="Data-Feeds-Query-Explorer-in-windows-application" width="244" height="207" /></a></p>
<p><a href="http://wiki.abc-analytics.com/files">Google Analyticsの Data Export APIからデータを引っ張るソフトを作った。</a></p>
<p>Visual Studio 2008 express editionのPublish機能を使って、パッケージ化した。.Net Framework 3.1 SP が必要。ただ、SetUp中にDownloadされるはず。</p>
<h3>作った動機</h3>
<p>1. なぜか、<a href="http://code.google.com/apis/analytics/docs/gdata/gdataExplorer.html">web上の Data Feed Query Explorer</a> で、日本語が文字化けするようになった。 <a href="http://groups.google.com/group/google-analytics-data-export-api/browse_thread/thread/688d4b192bdd07aa/ab1c8d94739da105?lnk=gst&amp;q=garbled#ab1c8d94739da105">フォーラムに投稿したけど、英語力の問題もあって、上手くasset出来なかった</a>。</p>
<p>2. <a href="http://analytics.blogspot.com/2010/05/updates-to-net-library-for-export-api.html">.NETの ライブラリーが更新されたのとのニュース</a>があった。</p>
<p>ので、今まで、ruby や <a href="http://abc-analytics.com/google-analytics-data-api-%E3%82%92%E8%A9%A6%E3%81%99">python</a> や <a href="http://abc-analytics.com/referral_data_against_date">apps script</a> で やってたけど、GUIで使えるソフトにも挑戦しようとして、やってみた。 ちなみに、windowsソフト( visual Studioを使って作る)のは、ほぼ初めてなので、UI、機能、エラー処理とかは、プリミティブです。検索や2chなどを見ながら、コピペなどをしながら作ったものです。</p>
<h3>出来ないこと</h3>
<p>Data Feeds の方のデータを引っ張ってこれるようにしただけです。 Account Feedsの方は、profileを引っ張れるだけです。本当は、Account Feedsの方で、ゴールの設定やら <del datetime="2010-06-26T14:18:08+00:00">カスタム変数</del>、アドバンスセグメントの設定などが、引っ張れるれのですが、やってません。</p>
<p>できる事は、profileIDを指定して、そのprofileのデータを取得するだけです。 用途としては、データをコピーして、エクセルに貼り付けるといいと思います。(unicodeテキストの貼付けを選ぶと文字化けしないはずです)</p>
<h3>注意</h3>
<p>Data Export APIの制限に注意して下さい。たくさん使うと制限に引っかかるようです。</p>
<p>あと、Dimensionは７つ、Metricsは10が一度に取れる上限項目数です。また、Dimension, Metircsの組み合わせで、データ取得不可のものがあります。これらの場合は、このソフトの上のテキストボックスにある、Error Messageに、そのようなメーセージが出るはずです。</p>
<p>僕の事を悪意を持ってない人だと信頼できて、ソフトの不出来を許容できる方に使ってもらうのが望ましいです。ただ、いろいろ感想を言ってもらえれば、改善へのモチベーションになるので、なにかあれば、<a href="http://twitter.com/phar">@phar</a> までおっしゃって下さい。</p>
<h3>使い方</h3>
<p>メールアドレスとパスワードを入れて、GetProfiles ボタンを押すと、自分の管理・閲覧できるprofilesがでます。</p>
<p>その後で、データが欲しいProfileのIDをクリックして、選択した状態にして、getDataを押すと、データ取得です。 下の GridDataViewという所にデータが出力されます。 後は、全選択してコピーして、エクセルで、形式を選択して貼付け- unicodeテキストでの貼付け を選ぶと、日本語の問題なくペーストできると思います。</p>
<p>あと、記録するにcheckを入れると、メールアドレスとパスワードを保存します。逆に、空欄にしてからcheckを入れれば、以前に記憶されたものが、空白で上書き(消去)されます。</p>
<p>実際に使っているキャプチャーは、wikiの方に上げるつもりです。</p>
]]></content:encoded>
			<wfw:commentRss>http://abc-analytics.com/data-feeds-query-explorer-in-windows-application/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>コンバージョン率の推定範囲を把握しておく</title>
		<link>http://abc-analytics.com/grasp_your_estimated_conversion_rate</link>
		<comments>http://abc-analytics.com/grasp_your_estimated_conversion_rate#comments</comments>
		<pubDate>Mon, 26 Apr 2010 14:34:11 +0000</pubDate>
		<dc:creator>shirai</dc:creator>
				<category><![CDATA[解説]]></category>
		<category><![CDATA[二項分布]]></category>
		<category><![CDATA[コンバージョン]]></category>
		<category><![CDATA[conversion]]></category>
		<category><![CDATA[統計]]></category>
		<category><![CDATA[正規分布]]></category>

		<guid isPermaLink="false">http://abc-analytics.com/%e3%82%b3%e3%83%b3%e3%83%90%e3%83%bc%e3%82%b8%e3%83%a7%e3%83%b3%e7%8e%87%e3%81%ae%e6%8e%a8%e5%ae%9a%e7%af%84%e5%9b%b2%e3%82%92%e6%8a%8a%e6%8f%a1%e3%81%97%e3%81%a6%e3%81%8a%e3%81%8f</guid>
		<description><![CDATA[アクセス解析はなんですか？ と聞かれた時に、よくある答えは、コンバージョンレートを計測し、向上策を考える事です。 というのはよくある答えですし、実際、サイトの数字を見るときは、まず、コンバージョンレートを見るようにしてます。では、コンバージョンレートの比較をするとき、それらの数字がどれだけ違えば、違いがあるといえるのでしょうか？]]></description>
			<content:encoded><![CDATA[<p><iframe width='600' height='400' frameborder='0' src='http://spreadsheets.google.com/pub?key=0AqkZxQAjlXMGdHVTY3U5bnFOc19MU3hyM0pUd29qQUE&#038;hl=en&#038;single=true&#038;gid=0&#038;output=html&#038;widget=true'></iframe><br />
* 正規分布で近似できるのは、np&gt;5 だそうなので、100回施行で５回コンバージョンが想定されるくらいから、正規表現のイメージ（偏差＊２で95%範囲）を持てるという事。でいいと思う、、、１００回で2%だと、np&lt;5なので、より裾野が広いイメージ？というか、コンバージョン数が0, 1, 2, 3, 4, 5, 6 くらいまでをそれぞれ計算すれば、いいと思います。 一般的には、F分布（謎)を使うようです。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>アクセス解析はなんですか？ と聞かれた時に、よくある答えは、コンバージョンレートを計測し、向上策を考える事です。 というのはよくある答えですし、実際、サイトの数字を見るときは、まず、コンバージョンレートを見るようにしてます。</p>
<p>それで、これとこれのコンバージョンレートが違いますね。という話になると思います。比較の対象は、期間の比較であったり、キーワード、メディア、ランディングページの違いだったりすると思います。</p>
<h3>どれくらい数字が違えば、認識・行動に移れるのか？</h3>
<p>イメージから行動に移るには、数字の差が ”たまたま” なのか、”構造的” なのかを把握しないといけません。上の表は、標準偏差が ”１ or 2”の範囲で、どれくらいかを示したものです。正規分布を仮定しているので、この上下の範囲に64%が入る事になります。２の範囲で95%です。</p>
<p>意思決定的には、８割方の感覚でいけばいいと思います。また、コンバージョンレートの比較といっても、あくまで、それぞれのセッションを平等に扱って考えているわけで、選んだセッションに偏りがあると考える方が妥当かもしれません。 その場合は、因子分析に移ればいいのだろうか？？？ だれか、手順書を書いて欲しい。</p>
<h3>数字を見る</h3>
<p><a href="http://abc-analytics.com/wp-content/uploads/51d09ca11882_135DD/WS000002.jpg"><img style="display: inline; border-width: 0px;" title="WS000002" src="http://abc-analytics.com/wp-content/uploads/51d09ca11882_135DD/WS000002_thumb.jpg" border="0" alt="WS000002" width="492" height="484" /></a></p>
<p>閲覧開始ページ別のコンバージョンレートです。タブの名前は、遊びで創ったもので、他のだれかがこの数字を担当してるわけではありません。</p>
<p>今回は、5ページ以上見るをコンバージョンとしています。ここでは、平均ページビューがだせないのですが、サイト全体の平均ページビューは、２．３くらいです。</p>
<p>上の表を使ってみると、トップページのコンバージョン率は、10.47%ですが、７－１３％くらいまでは、振れを見といた方が良さそうです。 近い数字で、businessのページは、9.41%ですが、開始数が85なので、5-13%くらいの範囲を想定しないといけないです。what_areのページも、6.09%ですが、３－１０％くらい違うと、、、</p>
<p>まあ、２シグマで見てたら、違いが分かる人にはなれそうにないのですが、閲覧開始数がこの１０倍あれば、偏差はルート１０で、3分の１くらいになるので、７－１３が、9-11くらいの範囲になって、違いが言えるようになると思います。このサイトは、一日のアクセスが30-50なので、この１０倍くらいのサイトなら、それなりに2,3パーセントの違いに言及できるようになると思います。</p>
<p>google analtyicsでは、インテリジェンスで統計数字が出てきて、アラートを出してくれるのですが、指標を時系列分析やら、誤差項やらを入れて、分析してそうな気がしますが、たぶん、説明を受けてもわかりそうにないです。</p>
<p>とりあえず、コンバージョンしたかどうかの、二者択一についての数字の分布を想定して、数字の振れをイメージしておきましょうという話でした。 間違っていたら、コメントください。 統計の話は、理解・非理解の二者択一なので、コメントにうまく返答出来ないかもしれませんが。</p>
<p>大事なのは、アクションなのですが、数字に統計的な違いがあるといえば、アクションさせる力になると思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://abc-analytics.com/grasp_your_estimated_conversion_rate/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GAのデータ理解。SQLとのアナロジー</title>
		<link>http://abc-analytics.com/an_analogy_with_sql_in_google_analytics</link>
		<comments>http://abc-analytics.com/an_analogy_with_sql_in_google_analytics#comments</comments>
		<pubDate>Mon, 19 Apr 2010 04:44:07 +0000</pubDate>
		<dc:creator>shirai</dc:creator>
				<category><![CDATA[解説]]></category>

		<guid isPermaLink="false">http://abc-analytics.com/ga%e3%81%ae%e3%83%87%e3%83%bc%e3%82%bf%e7%90%86%e8%a7%a3%e3%80%82sql%e3%81%a8%e3%81%ae%e3%82%a2%e3%83%8a%e3%83%ad%e3%82%b8%e3%83%bc</guid>
		<description><![CDATA[前提としては、GAのデータ集合はセッションをデータ行として並べてるイメージです。それで、集約関数が適用されているイメージで、google analyticsのデータを見ていく。]]></description>
			<content:encoded><![CDATA[<p>妄想エントリーです。非常に観念的な話で実践的ではないですが、それ故に有用(分かった気になれる)になることもあり得る。</p>
<p>“突っ込まれbility” が発揮出来るエントリーになるといいのですが。</p>
<p>アナロジーは、</p>
<ul>
<li>GAのディメンジョンは、SQLでいうところのgroup by。</li>
<li>GAの指標の方は、SQLでいうところの selectの集計関数を使った結果。</li>
</ul>
<p>僕のSQLの理解は怪しいので、このアナロジーは間違ってるかもしれないけど、こういうイメージで、昔、ピンときた。ｓｑｌの経験は、はっきりいうと、sqliteで株価データをいじってテクニカル指標を出してたくらいしかないので、sqlを語ってはいけないのかもしれないけど。</p>
<p>で、<strong>前提としては、GAのデータ集合はセッションをデータ行として並べてるイメージです。</strong></p>
<p><a href="http://abc-analytics.com/wp-content/uploads/GASQL_B3AC/WS000001.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="WS000001" border="0" alt="WS000001" src="http://abc-analytics.com/wp-content/uploads/GASQL_B3AC/WS000001_thumb.jpg" width="354" height="86" /></a> </p>
<h3>GAのレポートは、集約関数が常に使われているイメージ</h3>
<p>GAのレポートを見るときは、常にSQLの集約関数の結果がでてるイメージで行く。</p>
<p>select count(*) from ga-table group-by (traffic|user|content)</p>
<p>こんな感じで、トラフィックやら、ユーザー（新規・リピーターとか)、ページでのセッション数を見てる。</p>
<p>アドバンスセグメントなんかは、</p>
<ul>
<li>ディメンジョンでセグメントする場合は、where句が付く感じ。</li>
<li>指標でセグメントする場合は、having句で絞る感じでしょうか？</li>
</ul>
<p>カスタムレポートは、</p>
<ul>
<li>select部分に、いろんな集計関数（平均ﾍﾟｰｼﾞビューならaverage, 滞在時間ならsum, 他は大体 countとか。</li>
<li>group byにディメンジョン。サブディメンジョンにはサブクエリー？違う気がしてきたけど、、</li>
</ul>
<p>終わり。</p>
<p>突っ込むところ満載なのかもしれないけど、inspiredされる人が居るかもしれないので、エントリー。</p>
<p>しかし、どうやって、こんなに早いデータ表示をしてるんだろうとは思う。googleといえば、big tableなわけでRDBSでない。RDBSならこんなスピードはでない？ 知らないし、理解できないけど。 このデータ処理のレスポンスタイムはすごい。</p>
]]></content:encoded>
			<wfw:commentRss>http://abc-analytics.com/an_analogy_with_sql_in_google_analytics/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GWOとGAをくっつける</title>
		<link>http://abc-analytics.com/integrate_google_analytics_and_google_website_optimizer</link>
		<comments>http://abc-analytics.com/integrate_google_analytics_and_google_website_optimizer#comments</comments>
		<pubDate>Thu, 15 Apr 2010 17:22:12 +0000</pubDate>
		<dc:creator>shirai</dc:creator>
				<category><![CDATA[実施例]]></category>
		<category><![CDATA[テスト]]></category>
		<category><![CDATA[gwo]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[最適化]]></category>

		<guid isPermaLink="false">http://abc-analytics.com/gwo%e3%81%a8ga%e3%82%92%e3%81%8f%e3%81%a3%e3%81%a4%e3%81%91%e3%82%8b</guid>
		<description><![CDATA[併用についてのGoogle の公式のヘルプ記事がありますので、まずは、そちらをご覧ください。 GWOは、Google Website Optimzer。GAは、Google Analytics。ともに、Googleが提供するウェブサイトの効果計測の為のツールです。この二つのツールの使用は、機能として非常に似ているので、両者の良い部分を併せてみようと言うのが、今回のエントリーです。ちなみに、GWOで何をOptimize（最適化)するのかというと、コンバージョンレートを最適化（ためのテスト)します。A/Bテスト、もしくは多変量テストで数字を見比べて、適するテストを選択するわけです。 まず、両者の比較から入ります。 GAの方が分析用の機能は豊富 GWOは、ユーザー単位(cookie)でのコンバージョンを測るという機能を提供するのですが、同じことは、GAでもできます。カスタム変数をユーザーレベルで設定すれば、そのユーザーグループでのコンバージョン率も測れます。 さらにGAは、Analyticsとウタッテルわけですので、他の指標もグループ別に分析できるわけです。 ユーザーグループ別の、滞在時間、テストページ以外の閲覧ページなどが可能です。さらに、trackEventを発行していけば、javascriptが補足するイベントをどんどん計測できるわけです。trackEventは、４つのパラメーターをとれますので、その中にsetTimeout, setIntervalなどで時間の値を組み込んでもいいです。そして、これらを、ユーザーグループ別に計測できるわけです。また、フィルター機能で自分のアクセスを除外したりするのも簡単です。 しかし、GA単独で事が足りるか？ というと、そうも行かないかもしれません。 GWO側の優位点は？ 実は、GWOにあまり詳しくないので、自信がないのですが、GWOの利点は、 テストの実装が簡単 基本は、オリジナルページにcontrol scriptを埋めてやると、そこでテストページの振り分けをしてくれる。GAは、自分で作る必要がある。 特に、多変量テストは、自前で作ったり、管理するのは大変だと想像します。(やったことない、、)。Follow-up Experimentという仕組みもあるようです。よくわからないけど、多数の組み合わせの中の勝ち残りと、オリジナルで、最終確認テストができるという意味？ 結果の解釈に説得感がある 統計の解釈なので、みんな自信がないと思います。僕もないです。勝ち、負け、と示してくれるのは大きいです。A/Bテストの判定については、以前エントリーを書きました。 上で書いたFollowUpテストがついているので、説得力あるレポートができる。 なんとなく安心 GAで、cookieに依って違うページを見せるのは少し気持ちが悪いです。検索エンジンに良く思われないのではないか？と思ってしまいます。GWOだからOKという理屈はないですが、なんとなく安心ではあります。 とGAとGWOの利点を見ました。以後、両者の利点をいいとこ取りに挑戦です。 手順 GWOでテストを作り、そのGWOのcookie値をGA側のカスタム変数に入れて、GAでも分析できるようにします。GWOには、combination関数というのがあって、テストの振り分け判別用の値が取れるみたいですが、オリジナルページ(control script内)でしかとれないようです。MVTを行う場合には、ページ振り分けがあるわけではないので問題ない。　ですので、関数を使わずにcookieを直接読んで、値を設定することにします。 具体例は省略します(＊このサイトのトップページが、現在テスト対象になってます。そのうち外します)。 GAと同じです。ウェブプロパティIDが違うので、別々にキチンと設定してやればいいはずです。 今、WEBで検索していて見つけたのですが、Poor man’s GWO/Analytics Integration のやり方がいいです。いろいろ改善点があるのですが、カスタム変数に入れるのではなく、ユーザー定義に入れておけば、セカンダリーディメンジョンで見られるので、アドバンスフィルターで検索するなりして、手早くレポートで確認ができると思います。他にも、改善点がいろいろとあるようです。”いつかやる”にしておきます。 レポート画面 ユーザー定義ではなく、カスタム変数に入れてしまったので、レポート画面が面倒くさいですが、カスタムレポートで見たい指標を並べておいて、ゴールのページを通過したセッションをアドバンスセグメントで、括り出しておく形ですがいいです。ユーザー定義を使った場合は、ゴールのページで、ユーザー定義をみればいいと思います。 GAでは、コンバージョン以外の指標を見られるのが、アドバンテージ。 GWOの方は、 GWOでは、統計的な判断をしてくれたレポートにしてくれるのが、アドバンテージ。 GAとユーザーの母数が違いますが、GAの方で当初設定ミスをしたせいだと思ってます。また、GWOの方はフィルターが使えないので、自分のアクセスを除外できないと思います。GWOとGAで完全の統合してしまえばいいとも思いますが、冒頭で挙げたGWOの利点とバッティングするのかもしれません。 *） wordpressでテストを作る時は、ページのテンプレートを作って、そこにコントロールスクリプトを入れてページを作る。そして、もう一つの方は、別にテンプレートを用意する形になるのかもしれません。最初、両方にコントロールスクリプトが入っていて、ページがリダイレクトループみたいになってしまいました。CMSを使っていると、普段は便利なのですが、こういう時は、”調べるコスト”が発生しますね。 同時に”設定ミスリスク”もある所が怖いです。]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.google.com/support/websiteoptimizer/bin/answer.py?hlrm=en&amp;answer=77075">併用についてのGoogle の公式のヘルプ記事があります</a>ので、まずは、そちらをご覧ください。</p>
<p>GWOは、Google Website Optimzer。GAは、Google Analytics。ともに、Googleが提供するウェブサイトの効果計測の為のツールです。この二つのツールの使用は、機能として非常に似ているので、両者の良い部分を併せてみようと言うのが、今回のエントリーです。ちなみに、GWOで何をOptimize（最適化)するのかというと、コンバージョンレートを最適化（ためのテスト)します。A/Bテスト、もしくは多変量テストで数字を見比べて、適するテストを選択するわけです。</p>
<p>まず、両者の比較から入ります。</p>
<h3>GAの方が分析用の機能は豊富</h3>
<p>GWOは、ユーザー単位(cookie)でのコンバージョンを測るという機能を提供するのですが、同じことは、GAでもできます。カスタム変数をユーザーレベルで設定すれば、そのユーザーグループでのコンバージョン率も測れます。</p>
<p>さらにGAは、Analyticsとウタッテルわけですので、他の指標もグループ別に分析できるわけです。</p>
<p>ユーザーグループ別の、滞在時間、テストページ以外の閲覧ページなどが可能です。さらに、trackEventを発行していけば、javascriptが補足するイベントをどんどん計測できるわけです。trackEventは、４つのパラメーターをとれますので、その中にsetTimeout, <a href="http://wiki.abc-analytics.com/view_your_report/content/content_report_event_tracking/use_cases_of_event_tracking/distribution_time_on_page">setIntervalなどで時間の値を組み込んでもいい</a>です。そして、これらを、ユーザーグループ別に計測できるわけです。また、フィルター機能で自分のアクセスを除外したりするのも簡単です。</p>
<p>しかし、GA単独で事が足りるか？ というと、そうも行かないかもしれません。</p>
<h3>GWO側の優位点は？</h3>
<p>実は、GWOにあまり詳しくないので、自信がないのですが、GWOの利点は、</p>
<ul>
<li>テストの実装が簡単
<ul>
<li>基本は、オリジナルページにcontrol scriptを埋めてやると、そこでテストページの振り分けをしてくれる。GAは、自分で作る必要がある。 </li>
<li>特に、多変量テストは、自前で作ったり、管理するのは大変だと想像します。(やったことない、、)。Follow-up Experimentという仕組みもあるようです。よくわからないけど、多数の組み合わせの中の勝ち残りと、オリジナルで、最終確認テストができるという意味？ </li>
</ul>
</li>
<li>結果の解釈に説得感がある
<ul>
<li>統計の解釈なので、みんな自信がないと思います。僕もないです。勝ち、負け、と示してくれるのは大きいです。<a href="http://abc-analytics.com/decision-on-a-abtest-from-smart-bear-blog">A/Bテストの判定については、以前エントリーを書きました</a>。 </li>
<li>上で書いたFollowUpテストがついているので、説得力あるレポートができる。 </li>
</ul>
</li>
<li>なんとなく安心
<ul>
<li>GAで、cookieに依って違うページを見せるのは少し気持ちが悪いです。検索エンジンに良く思われないのではないか？と思ってしまいます。GWOだからOKという理屈はないですが、なんとなく安心ではあります。 </li>
</ul>
</li>
</ul>
<p>とGAとGWOの利点を見ました。以後、両者の利点をいいとこ取りに挑戦です。</p>
<h3>手順</h3>
<p>GWOでテストを作り、そのGWOのcookie値をGA側のカスタム変数に入れて、GAでも分析できるようにします。<del datetime="2010-08-04T12:28:39+00:00">GWOには、combination関数というのがあって、テストの振り分け判別用の値が取れるみたいですが、オリジナルページ(control script内)でしかとれないようです</del>。<strong>MVTを行う場合には、ページ振り分けがあるわけではないので問題ない。</strong>　ですので、関数を使わずにcookieを直接読んで、値を設定することにします。</p>
<p>具体例は省略します(＊このサイトのトップページが、現在テスト対象になってます。そのうち外します)。 </p>
<p>GAと同じです。<a href="http://wiki.abc-analytics.com/glossary/webpropertyid">ウェブプロパティID</a>が違うので、別々にキチンと設定してやればいいはずです。</p>
<p>今、WEBで検索していて見つけたのですが、<a href="http://www.gwotricks.com/2009/02/poor-mans-gwoanalytics-integration.html">Poor man’s GWO/Analytics Integration</a> のやり方がいいです。いろいろ改善点があるのですが、カスタム変数に入れるのではなく、ユーザー定義に入れておけば、セカンダリーディメンジョンで見られるので、<a href="http://wiki.abc-analytics.com/view_your_report/advanced_filter">アドバンスフィルター</a>で検索するなりして、手早くレポートで確認ができると思います。他にも、改善点がいろいろとあるようです。”いつかやる”にしておきます。</p>
<h3>レポート画面</h3>
<p>ユーザー定義ではなく、カスタム変数に入れてしまったので、レポート画面が面倒くさいですが、カスタムレポートで見たい指標を並べておいて、ゴールのページを通過したセッションをアドバンスセグメントで、括り出しておく形ですがいいです。ユーザー定義を使った場合は、ゴールのページで、ユーザー定義をみればいいと思います。</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/GWOGA_14F33/WS000002.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="WS000002" border="0" alt="WS000002" src="http://abc-analytics.com/wp-content/uploads/GWOGA_14F33/WS000002_thumb.jpg" width="231" height="244" /></a> </p>
<p>GAでは、コンバージョン以外の指標を見られるのが、アドバンテージ。</p>
<p>GWOの方は、</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/GWOGA_14F33/WS000003.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="WS000003" border="0" alt="WS000003" src="http://abc-analytics.com/wp-content/uploads/GWOGA_14F33/WS000003_thumb.jpg" width="244" height="154" /></a> </p>
<p>GWOでは、統計的な判断をしてくれたレポートにしてくれるのが、アドバンテージ。</p>
<p>GAとユーザーの母数が違いますが、GAの方で当初設定ミスをしたせいだと思ってます。また、GWOの方はフィルターが使えないので、自分のアクセスを除外できないと思います。GWOとGAで完全の統合してしまえばいいとも思いますが、冒頭で挙げたGWOの利点とバッティングするのかもしれません。</p>
<p>*） wordpressでテストを作る時は、ページのテンプレートを作って、そこにコントロールスクリプトを入れてページを作る。そして、もう一つの方は、別にテンプレートを用意する形になるのかもしれません。最初、両方にコントロールスクリプトが入っていて、ページがリダイレクトループみたいになってしまいました。CMSを使っていると、普段は便利なのですが、こういう時は、”調べるコスト”が発生しますね。 同時に”設定ミスリスク”もある所が怖いです。</p>
]]></content:encoded>
			<wfw:commentRss>http://abc-analytics.com/integrate_google_analytics_and_google_website_optimizer/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>参照元、参照サイトの日別データを取る</title>
		<link>http://abc-analytics.com/referral_data_against_date</link>
		<comments>http://abc-analytics.com/referral_data_against_date#comments</comments>
		<pubDate>Tue, 09 Mar 2010 18:35:30 +0000</pubDate>
		<dc:creator>shirai</dc:creator>
				<category><![CDATA[解説]]></category>
		<category><![CDATA[apps script]]></category>
		<category><![CDATA[アドバンスフィルター]]></category>
		<category><![CDATA[カスタムレポート]]></category>
		<category><![CDATA[日別データ]]></category>

		<guid isPermaLink="false">http://abc-analytics.com/daily_basis_data_for_referrals</guid>
		<description><![CDATA[google analyticsで、カスタムレポートを使い、一日単位の参照元情報をエクセルなどに落とす作業の説明。さらに、参照サイトと参照ＵＲＬとデータが分かれていてデータが同時に出せないので、Data Export APIを使って同時に出す説明。]]></description>
			<content:encoded><![CDATA[<p><a href="http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1137761571">yahoo知恵袋の質問</a>を見てたら、一日単位のリファラー(参照サイト？)が取りたいという質問があって、確かに欲しいデータだなと思ったので、手順を書きます。使うのは、カスタムレポートとセカンダリ－ディメンジョンの二つです。最後に、エクセル出力です。</p>
<h3>カスタムレポート作成</h3>
<p>ディメンジョンを日別にします。指標は、閲覧開始数、滞在時間、直帰率にしておきます。</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/0bbeca721437_14A6/WS000000.jpg"><img style="display: inline; border-width: 0px;" title="カスタムレポート日別データ" src="http://abc-analytics.com/wp-content/uploads/0bbeca721437_14A6/WS000000_thumb.jpg" border="0" alt="カスタムレポート日別データ" width="239" height="244" /></a></p>
<p>サブディメンジョンは入れてもいいですが、入れなくてもいいです。とりあえず使いません。</p>
<p>レポートに戻ったら、セカンダリ－ディメンジョンを参照元にします。</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/0bbeca721437_14A6/WS000002.jpg"><img style="display: inline; border-width: 0px;" title="日別データ　カスタムレポーティング" src="http://abc-analytics.com/wp-content/uploads/0bbeca721437_14A6/WS000002_thumb.jpg" border="0" alt="日別データ　カスタムレポーティング" width="544" height="221" /></a></p>
<p>これで、参照元のセッション数、平均対座時感、直帰率がでました。<strong>でも、検索エンジンはいらないですよね</strong>。</p>
<p>検索エンジンと直帰をしたセッションをアドバンスフィルターで除きます。</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/0bbeca721437_14A6/WS000003.jpg"><img style="display: inline; border-width: 0px;" title="WS000003" src="http://abc-analytics.com/wp-content/uploads/0bbeca721437_14A6/WS000003_thumb.jpg" border="0" alt="WS000003" width="544" height="203" /></a></p>
<p>セカンダリ－ディメンジョンの参照元で絞り込みます。&#8221;文字を含まない&#8221; で、google|direct|yahoo|reader とします。</p>
<p>(*他のキャンペーンなども必要に応じて除いてもいいですし、最後のエクセルで除去してもいいです)</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/0bbeca721437_14A6/WS000004.jpg"><img style="display: inline; border-width: 0px;" title="アドバンスフィルターを適用" src="http://abc-analytics.com/wp-content/uploads/0bbeca721437_14A6/WS000004_thumb.jpg" border="0" alt="アドバンスフィルターを適用" width="244" height="234" /></a></p>
<p>フィルタリングできました。</p>
<p>これをファイルにエクスポートして、エクセルで開いてピボットにします。</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/0bbeca721437_14A6/WS000006.jpg"><img style="display: inline; border-width: 0px;" title="WS000006" src="http://abc-analytics.com/wp-content/uploads/0bbeca721437_14A6/WS000006_thumb.jpg" border="0" alt="WS000006" width="244" height="187" /></a></p>
<p>すかすかですが、エクセル上なので、データの絞り込みなどは容易だと思います。</p>
<p>このエクセルは試用版ですが、スライサーというのを使うと、</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/0bbeca721437_14A6/WS000007.jpg"><img style="display: inline; border-width: 0px;" title="エクセル　スライサー" src="http://abc-analytics.com/wp-content/uploads/0bbeca721437_14A6/WS000007_thumb.jpg" border="0" alt="エクセル　スライサー" width="244" height="220" /></a></p>
<p>フィールドを個別に選びながら表示できました。さすがエクセルですね。</p>
<h3><strong>参照サイトはわかったけど、そのサイトの&#8221;<span style="text-decoration: underline;">どのページ</span>&#8220;から来たか分からないじゃないか？</strong></h3>
<p>ですよね。カスタムレポート作り直しましょう。</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/0bbeca721437_14A6/WS000008.jpg"><img style="display: inline; border-width: 0px;" title="カスタムレポート　参照ＵＲＬ" src="http://abc-analytics.com/wp-content/uploads/0bbeca721437_14A6/WS000008_thumb.jpg" border="0" alt="カスタムレポート　参照ＵＲＬ" width="244" height="150" /></a></p>
<p><strong>サブディメンジョン</strong>に<strong>参照ＵＲＬ</strong>を加えて、レポートを出した後に、<strong>特定の日を押すと(下図では3月１日)</strong></p>
<p><a href="http://abc-analytics.com/wp-content/uploads/0bbeca721437_14A6/WS000010.jpg"><img style="display: inline; border-width: 0px;" title="WS000010" src="http://abc-analytics.com/wp-content/uploads/0bbeca721437_14A6/WS000010_thumb.jpg" border="0" alt="WS000010" width="244" height="193" /></a></p>
<p>データはでましたが、<strong>今度はドメイン名が出てないです</strong>。。。参照ＵＲＬは、&#8221;/&#8221; 以降の部分しか表示しません。(その場合、参照URLという名前でいいのだろうか？？？)</p>
<p><strong>もちろん参照元　&gt; 参照ＵＲＬという形でカスタムレポ－トのディメンジョンを組み立てれば、クリックして特定のサイトのページ名はだせます。しかし</strong>、特定の日 &gt; 特定のドメインで、そこに限定された参照ＵＲＬが見られるだけです。という事は、<strong>一括した形でデータをエクセルに落とす事もできません</strong>。一日ごと  &gt; サイトごと&gt; にやればいいのですが、大変です。</p>
<h3>Data Export APIを使う</h3>
<h4>Data Feed Query Explorerを使う</h4>
<p><a title="http://code.google.com/apis/analytics/docs/gdata/gdataExplorer.html" href="http://code.google.com/apis/analytics/docs/gdata/gdataExplorer.html">http://code.google.com/apis/analytics/docs/gdata/gdataExplorer.html</a>に行って、</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/0bbeca721437_14A6/WS000011.jpg"><img style="display: inline; border-width: 0px;" title="Data Feed Query Explorer で参照サイトとパスを同時に出す" src="http://abc-analytics.com/wp-content/uploads/0bbeca721437_14A6/WS000011_thumb.jpg" border="0" alt="Data Feed Query Explorer で参照サイトとパスを同時に出す" width="527" height="484" /></a></p>
<p>上のidsの所には、通常のウェブで見てる時に、ブラウザのＵＲＬを見ると、id=xxxx とあるので、それを入れて下さい。プロファイルIDです。あとは、ブラウザをFireFoxにして、<a href="https://addons.mozilla.org/ja/firefox/addon/1852">table2clipboardというAddOn</a>を入れると、コピーしたものがエクセルにそのまま張り付きます。(* データ数が多いとブラウザが固まるかもしれません。数千件ぐらいのデータは気を付けるべきです)</p>
<p>エクセルに行くのは省きます。</p>
<h4>Google Apps Scriptを使う</h4>
<p>もちろん、他のスクリプト言語でデータを取り出してもいいです。Google Appsを使っているとGoogle Spreadsheetに apps scriptというエクセルでのVBAみたいなものがあるのですが、それだと、データを集めてspreadsheetにも出力できますし、同時にmailを送る事もできます。(Google Apps Scriptを使って、Google Analyticsのデータを出しているところ)</p>
<p><a href="http://abc-analytics.com/wp-content/uploads/0bbeca721437_14A6/WS000012.jpg"><img style="display: inline; border-width: 0px;" title="Google Apps scriptで、google analyticsのデータを出す" src="http://abc-analytics.com/wp-content/uploads/0bbeca721437_14A6/WS000012_thumb.jpg" border="0" alt="Google Apps scriptで、google analyticsのデータを出す" width="544" height="431" /></a></p>
<p>スクリプトの中で、MailApp.sendEmail()と書けば、メールも送信できます。</p>
<p>スプレッドシートなので、この図のＢ列とＣ列を足して上げれば、参照元のＵＲＬ全体が表示され、訪問回数、直帰数、滞在時間などがでます。もちろん、コンバージョンなどもだせます。</p>
<p>と言うことで、<a href="business">Google Analyticsでデータの整理にお悩みの方は、データ整理のご相談の連絡を下さい</a>。サイト運営は素人ですが、データの集計や整理を一生懸命やります。</p>
<p><strong>カスタムレポートでもデータ出せるよ！ という方法をご存じの方があれば、コメント頂けると嬉しいです。</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://abc-analytics.com/referral_data_against_date/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
