ダブル計測の新手法

Post date: Apr 22, 2010 3:38:56 PM

SiteCatalystで複数のアカウント(Report Suite)にデータを送信する新しい方法が分かったので、紹介します。

その前に既知の方法から。

MST(マルチスイートタギング)

s_code.jsの冒頭でRSIDをカンマで続けて記述します。

var s_account="mainrsid,subrsid"

二つ目以降のコールは単価が半額になるので手軽でお得ですが、全く同じデータが同時に送信されます。

ダブルタギング

アカウント(RS)毎に異なるカスタム変数をセットしたい場合は、計測用タグとJavaScriptファイルをダブルで入れます。Google Analyticsでも同様ですね。それぞれ自由なカスタマイズができますが、イベントハンドラやCookieの処理を共有することになるので、若干の制約を受けます。また、コール数は半額にはなりらず、2倍になります。

このダブルタグ方式のデメリットは、計測用JavaScriptファイルのロード時間やJavaScriptの処理時間が2倍になり、ユーザーにとってのパフォーマンスが低下する点です。

また、JavaScriptファイルやその中のプラグインを複数分管理したり、リリース時の動作確認の作業量が増える、という管理上のデメリットもあります。

知られざるワンタイム方式

カスタマイズ性を損ねることなく、サブのアカウントで一部の変数のみを簡単に計測したいと思い、Twitterで質問してみたところ、Andreasが良い方法を教えてくれました。

一時変数を使って送信する方式で、下記のようにJavaScriptで記述します。

s.sa('subrsid');

var s2 = {

  prop1 : 'test',

  pageName : 'top'

};

s.t(s2);

s.sa()で一時的にレポートスイートIDを変更してから連想配列に変数をセットし、s.t()にその連想配列を渡して、SiteCatalystサーバーへのコールを発生させます。

注意点

dynamic account機能を使う場合の完全なタグのサンプルは、下記のようになります。

<script type="text/javascript src="s_code.js"></script>

<script type="text/javascript>

s.prop1 = 'main';

s.pageName = 'Home';

s.t();

//ここまでがメインRS用の処理(いつもと同じ)

//以下はサブのRS用。上で定義した変数は影響しない

s.dynamicAccountSelection = false; 

s.sa('subrsid');

var s2 = {

  prop1 : 'sub',

  pageName : 'top'

};

s.t(s2);

</script>

実例はこの辺を参考にどうぞ:楽天カード