ダブル計測の新手法

posted Apr 22, 2010, 8:38 AM by Makoto Shimizu   [ updated Apr 24, 2010, 10:01 AM ]

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サーバーへのコールを発生させます。

注意点

  • ドメイン名でRSIDを切り替えるdynamic account機能をoffにしておく必要がある。
  • このサブ用のコール発生時にもs_code.jsのdo_Plugins()関数が実行されるため、ドメイン名などで分岐し、共通処理と固有処理を分ける必要がある。

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>

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

Comments