Googleタグマネージャに新マクロ「ルックアップテーブル」が登場
2014年02月4日
ライター:畑岡 大作

日夜ひっそりと機能追加がされるGoogleタグマネージャへ、おそらく2月4日に、またも新しく機能が追加されました。
今回追加されたのは「ルックアップテーブル」という新しいマクロの種類で、指定したマクロの値に応じて、異なる値を返すマクロです。

  1. 状況に応じて値を出し分けたい場合に使うマクロ
  2. ルックアップテーブルの使い方

状況に応じて値を出し分けたい場合に使うマクロ

「ルックアップテーブル」マクロは「○○というマクロの値が『××だったら△△という値を返す』、『□□だったら■■という値を返す』、『××でも□□でもなかったら●●という値(デフォルト値)を返す』」というマクロです。

参照する他のマクロを指定して→参照マクロの値毎に、異なる値を返す
文書で説明しようとするとちょっと分かり辛いので、図に表してみました。

JavaScriptなどの言語に詳しい方ならピンとくると思いますが、いわゆるswitch文と同じ役割をするものになります。
あまり言語に詳しくない方向けに言いますと、具体的には、以前「Googleタグマネージャに新しく追加されたマクロ『カスタムJavaScript』」というコラムで紹介した「現在地URLのホスト名に応じて異なるウェブプロパティを取得するマクロ」と同じ役割を、JavaScriptを書くことなく利用できるようになるわけです。

switchへ渡す引数を参照マクロに、caseの値を左側へ、対応する値を右側に記述。
switch文をルックアップテーブルに移行しようとすると、こうなります。矢印ヨレヨレでごめんなさい。

ルックアップテーブルの使い方

使い方は簡単です。
マクロのタイプで「ルックアップテーブル」を選択すると、条件と返す値をまとめたテーブル(表)が表示されますので、そこへ埋めていくだけとなっています。

ルックアップテーブルの画面。
  1. Googleタグマネージャの管理画面へログインし、目的のコンテナを開く
  2. マクロの新規登録画面を開く
  3. 「マクロのタイプ」で「ルックアップテーブル」を選択
  4. デフォルト値(該当条件がなかった場合に返す値)を設定する場合は「デフォルト値を設定する」にチェックを入れて、右側の入力欄へデフォルト値を入力
  5. テーブルの「条件:」で参照するマクロを選択
  6. テーブルの左側へ参照マクロの値条件を入力(完全一致)し、一致した場合に返したい値を右側へ入力

例えば、default値に「TOPページ以外」というテキストを設定し、参照マクロを「条件:{{url path}}」、テーブルの1行目で条件(左側)に「/」、処理(右側)に「TOPページ」と設定したとします。
その場合、このマクロがTOPページで呼ばれる{{url path}}/と「TOPページ」というテキストが、TOPページ以外で呼ばれる{{url path}}/ではない)と「TOPページ以外」というテキストが取得されます。

【マクロのタイプ:ルックアップテーブル】【デフォルト値:TOPページ以外】【条件:{{url path}}】【条件1:/ なら TOPページ】
設定例。現在地がTOPページか否かで返る値が変わります。

ほか、ルックアップテーブルで気になる細かい仕様についても調べてみました。
ご利用の際は以下もご参考ください。

ルックアップテーブルの注意点

  • 条件は完全一致(正規表現は使用不可能)
  • 条件(テーブル左側)、処理(テーブル右側)、共にマクロを使用可能
    (デフォルト値でも利用可能)
  • 同一条件が複数行あった場合、一番下の行の値を返す
  • 処理(テーブル右側)には「半角スペースだけ」は指定できない
  • 処理(テーブル右側)で「null」を指定すると文字列として出力される

最後にまとめます。

ルックアップテーブルというのは、要は「わざわざJavaScriptでif文やswitch文を書かなくても、簡単な条件分岐であれば対応できるようになった」ということで、特にJavaScriptがよく分からない人に嬉しい機能ではないでしょうか。
また、JavaScriptを自分で書ける人にとっても応用範囲が広く、カスタムHTMLタグやカスタムJavaScriptよりも手軽にマクロの加工を行う手段としても使えますので、重宝しそうです。

単純に「SSLか非SSLかで値を出し分ける」というようなただのIf文にも使えますし、何度か例に挙げたような「サブドメイン毎に異なるトラッキングID(UA-XXXXX-X)を返す」などの条件分岐な使い方もできます。
また、URL系のマクロに限らず、マクロであれば条件として利用できますので、データレイヤー変数やカスタムJavaScriptなんかも条件参照が可能です。

色々と試してみて、使いやすい形で利用してみてください。