【Google Tag Manager】先週リリースされたJavascript Error Eventlistnerを試してみる

先週の金曜日、Google Tag Manager(GTM)のタグにJavascript Error Eventlistenerが追加されました。
以前、解析界隈でJavascriptのエラーをtry/catchを使ってエラー計測出来るよねという話があったのですが、タイムリーな事にGoogleが正式にイベントリスナーとしてリリースをしたという感じです。
まだヘルプの更新はされていないのですが、使い方は通常のイベントリスナーと同じように設定します。とはいっても、毎回設定を忘れてしまうのでGoogle検索からスタートしてしまうダメな感じなのですが・・・(笑

1.タグでJavascript Error Eventlistenerを設定します。



2.マクロを設定します。
「Javascript Error Eventlistener」を設定すると、いくつかの変数を取得出来るようになります。
海外の情報だと・・・
「gtm.errorMessage」にjavascriptのエラーメッセージ、「gtm.errorLineNumber」にエラー行ナンバーがInt型で返ってくるようです。
「gtm.errorUrl」というものもあるようなのですが。

今回はjavascriptのエラー内容を取得したいので、単純に「gtm.errorMessage」だけをdataLayerとして指定します。


※エラー行数なども変数に指定して、一緒にエラーの状況を取得出来るようにできるはずです。


3.エラーをイベントで取得する。



発火条件は、eventがgtm.pageErrorと等しい場合です。



そんな感じで、今回はテスト的な感じですがサクッとエラーメッセージを取得できました。



 ぜひ試してみてください。


【参考】
Google Tag Managerに関するまとめ

海外でのモバイルデバイスシェアと今後の予測(Mobile Mix™ Reports)

millennial mediaの調査では、広告が閲覧されたデバイスの比率を2012年と2013年で比較した場合、スマートフォンの比率が大きいものの、全体で見ると比率は低下したということでした。

詳細なデータはこちらに掲載されています。
Mobile Mix™ Reports


 主に「タブレット」がだいぶシェアを伸ばしていることが要因となっていますが、一部ゲーム端末などが含まれているようです。

また同時に、今後の伸びる予測が以下のように掲載されています。


今後のマーケティングを考える上で、日本での端末動向も海外と同じような動きを今後辿ることになるのでしょうか?

OSシェアでは2013年はAndroid、iOSの2強のシェアがより強まっています。

Google Tag Manager(GTM)でDOMの準備が完了後、複数の回Eventを飛ばす

タイトルはうまく付けられなかったのですが、ある特定の1ページを読み込んだ時にdataLayerを読み込んで、例えばカスタム変数として処理を行う事は簡単に行えます。

例えば、こんなdataLayerをページ内に埋め込んでおいて、Analytics側とGTM側でカスタム変数を設定しておけば問題ありません。

dataLayer = [{
'custom1': '1',
'custom2': '2',
'custom3': '3'
}];

で、今回実現したかったのは、

dataLayer = [{
  'statusCode': ['500','502','503']
}];

のような配列データをGoogle Analyticsへ送りたいということでした。
例えば、ある特定の商品がAカテゴリ、Bカテゴリ、Cカテゴリなどに所属していた場合、こんなデータをAnalytics側に通知して、どの延べのデータになりますが、どのカテゴリが一番注目度を集めていたかということを集計したい。といった感じです。

dataLayer = [{
  'productCategory': ['500','502','503']
}];

実際、私のニーズもそれにかなり近いものではありますが、この場合データをカンマ区切りで、例えばこんな感じでdataLayerを設定することは直ぐに出来ます。

dataLayer = [{
  'productCategory': '500,502,503'
}];

ですが、この方法はあとで集計がとても面倒くさい。
できれば配列でデータを渡して、シンプルに集計をしたい。。。

そこで、色々調べてみたのですが、カスタム変数にこのようにデータを渡すと最初の1つしかAnalyticsには入ってきませんでした。

dataLayer = [{
  'productCategory': '500’,
  'productCategory':  '502',
  'productCategory':  '503'
}];

ということで同じ変数を複数並べて取得するという方法は失敗。
で、どうやらEventを使って取得は可能だということで、実際やってみたら成功しました。
海外では結構実践されているようです。いくつか方法があって、これから紹介するやり方よりも全然単純なやり方もあるようです。

まず私のやり方ですが、ページ側には以下の様な配列を置いておきます。

dataLayer = [{
  'productCategory': ['500','502','503']
}];

もちろん事前に「productCategory」というデータレイヤー変数を定義しておいてください。
そして、Eventを飛ばすのに使うものはタグの「Custom HTML Tag」で、こんなものを書きます。

var modelCode = [];
  var productCategoryList = {{productCategory}};
        productCategoryListCnt = productCategoryList.length;
  for(var i = 0; i < productCategoryListCnt; i++) {
    dataLayer.push({'event': '●●Event名●●', 'eventAction': '●●Action名●●', 'eventLabel': productCategoryList[i] });
  }

見れば非常に簡単ですよね。
マクロの変数名「productCategory」の値を読み込んで、あとは普通のjavascriptです。

ただし!発火条件に注意
この「Custom HTML Tag」は全てのTagの発火が終わった後に読み込む必要があります。
それを実現する方法はGoogleのオフィシャルヘルプに記載されています。
DOM の準備ができた時点でタグを配信するよう定義するには、配信ルールに「イベントが gtm.dom と等しい」という条件を追加します。
という部分と、一番最後に書かれているこの1文。
window.onload でタグを配信するよう設定するには、「イベントが gtm.dom と等しい」という条件を使用します。
私も後で知っただけなのですが。
即ち、英語版ですが、こんな設定のルールを用意して、それを発火条件とします。


これで完了!
dataLayer.pushを利用しているので、イベントの受け口もちゃんと用意していただければ、1アクセスで配列データ分Eventが発火します。

GTMが出た時にこういう条件設定が出来ると聞いてはいたのですが、いままでちゃんと調べずにいました。

【参考】
Google Tag Managerに関するまとめ

新しいKloutでコンテンツを生み出していく

まだ試してはいなかったのですが、2月6日にKloutが新しく生まれ変わりました
Kloutスコアを上げるためには良質なコンテンツをよりシェアすることで友達やフォロワーがさらにシェアするという行動を促したりすることですが、そんな計測ツールとしてのKloutが興味のあるタグを設定しておくことで良質なコンテンツがキュレーションされて、さらにKloutからTwitterやFacebookに呟くという機能が追加されました。

※画像はKlout Blogから。

コンテンツのシェアは、Kloutがソーシャルへの投稿をスケジュール設定できたり、画像を添付出来たりしますが今のところはFacebookとTwitterのみ投稿が可能となっているようです。


そういう意味ではHootSuiteなどの別のツールと大差がない・・・というより、機能的には劣るものかもしれません。

コンテンツをタグでキュレーションして見れる情報発見的な使い方なら、利用価値はあるかもしれません。
海外でも今回のアップデートには賛否両論な感じに思えます。まだ個人的にもタグを設定してみたり、テストで投稿してみたりと使い始めたばかりですが、計測というあまりC向けではなく定期的に訪れるようなものではなかったサイトが、キュレーション的な機能などを備えることで一つのニュースサイトのように変化したのは良い方向ではないかと思ったりしています。