GTMonRails

GTMonRailsは、RubyOnRailsを使う際にGoogleTagManagerとの連携を簡単に行う事をできるようにするRails用のGemです。

GTMの設置タグを出力するだけでなく、主にJavaScriptを使って行うdataLayer変数の操作や送信をRubyのコード側で行うことができます。

このGemは基本的には単品では機能しません。GoogleTagManager側での設定と合わせて使用して下さい。

Read this in other languages: English

Installation

Gemfileに以下を追記して、追加して下さい。

gem 'gtm_on_rails'

そしてbundle installを行って下さい。

$ bundle

最後に以下のコマンドを実行して初期設定を行って下さい。

$ rails g gtm_on_rails:install

Configure

インストールで追加された/config/initializers/gtm_on_rails.rbの内容を変更することによって設定を変更して下さい。

container_id

GoogleTagManagerのコンテナIDを設定して下さい。

data_layer_limit_byte_size

dataLayerには一度にPOSTできる容量に制限があります。GTMonRailsでは、dataLayerに設定された値がここで設定したバイト数を超えた場合、エラーを返します。

send_controller_and_action_in_data_layer

この設定を有効にすることによって、dataLayerにRailsのcontroller名とaction名を自動で追加して送信し、GoogleTagManager側で使用することができます。 controller名とaction名はJavaScriptのコードとしてHTMLのソースコード内に出力されるので、その点を留意して下さい。

rescue_when_error_occurred

この設定を有効にすることによって、JavaScriptのコードとして出力される際に、dataLayerに設定した値などの問題でエラーが発生場合にエラーを握りつぶします。 つまり、計測周りのエラーによってサイトの表示に影響が出ないようにします。

Usage

基本

data_layerという変数(正確にはhelperが呼び出す変数@gtm_on_rails_data_layer)にdataLayerで送信したい内容をHash型で追加するだけでdataLayerで好きな値を送信できます。 controller内等で以下のように記述する感じになると思います。

data_layer.push({
  name: 'name'
})

送信したdataLayerの内容は、GoogleTagManager側で変数に設定する等して使用して下さい。

GtmOnRails::DataLayerObject

object = GtmOnRails::DataLayerObject.new({name: 'name'})
data_layer.push(object)

Hash形式ではなく、上記のようにGtmOnRails::DataLayerObjectクラスを用いることもできます。

object = GtmOnRails::DataLayerObject.new({name: 'name'})
puts object.name

GtmOnRails::DataLayerObjectクラスでは、上記のように値にアクセスできます。

GtmOnRails::DataLayerEvent

event = GtmOnRails::DataLayerEvent.new('イベント名', {name: 'name'})
data_layer.push(event)

上記のように記述することで、イベント名を設定して送信できます。

License

The gem is available as open source under the terms of the MIT License.

Author

ykogure