こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。
今日は、Webサイト内で発生したJSエラーをAdobeAnalyticsで計測する方法についてです。
AdobeAnalyticsでは、404エラーページを計測するためのs.pageTypeという変数がありますが、その他のエラーは別途eVarやpropを使って計測する必要があります。
下記は404エラー計測の例です。
s.pageType = "errorPage"; s.pageName = "404:" + location.href;
これで404エラーが発生したページとリファラーをクロス集計すれば、リンク切れを起こしてるページを特定出来きますよね。
そういうサイト内の離脱ポイントというか機会損失につながる要素を地道に埋めていく事で、サイトを改善して行くのもWeb解析の重要なタスクです。
その他にもJavascriptエラーが起きてUXを低下させてる箇所を見つけだして、継続的にユーザビリティを改善して行くのも重要じゃないかと思いました。
どうやって計測するかというと、Javascriptのonerrorというイベントハンドラーがあるので、それをトリガーにして、AdobeAnalyticsで計測してみます。
onerrorについてはMDNに詳しい仕様が載ってます。
GlobalEventHandlers.onerror – Web API インターフェイス | MDN
GoogleAnalyticsでonerrorを計測するサンプルはすぐ見つかりますね。
How To Setup A Cheap Exception Notifier For JavaScript | Protonet, Inc.
これを参考にしてAdobeAnalyticsで実装するとこうなりました。
window.onerror = function(msg, file, line, col, err) { window.scmsg = msg; window.scfile = file; window.scline = line; }; var scerr = setInterval(function(){ if (typeof window.scmsg != "undefined" && typeof window.s != "undefined" && typeof s.tl == "function") { s.tl(true, "o", "error", {linkTrackVars: "eVar11", eVar11: window.scmsg + ":" + window.scfile + ":" + window.scline}); clearInterval(scerr); } }, 1000);
onerror発生時に、まだAdobeAnalyticsのs_codeタグがロードされていないと、「s is not defined」というエラーが出るので、setIntervalを使って、s_codeがロードされるのを待ちます。
そしてロード後に、カスタムリンク(s.tl関数)を使ってエラー内容を送信します。
そして一度エラー計測を送信したあとは、clearIntervalを使ってs.tl関数の実行を停止する、という実装です。
別にeVarじゃなくてpropでいいんじゃないの、とも思いますが、propだと100byteの壁があるので、
eVarがもう足りないというサイトでは、propを複数使ってクロス集計すると良いです。
弊社ではAdobeAnalyticsの様々なカスタム実装支援を行なっております。
お問い合わせはこちらからどうぞ。
ブログへの記事リクエストはこちらまで