Googleタグマネージャで、タグ配信の優先度(配信の順番)が設定できるように

2014年07月10日
ライター:畑岡 大作

先週のバージョンアップで実装された2つの機能の内、プレビュー&デバッグモードの機能強化については前回の記事で取り上げました。
今回は取り上げなかった方、「タグ配信の優先度設定」機能について取り上げます。

  1. タグの配信順序を指定する機能
  2. 「タグ配信の優先度」の使い方と注意点
  3. (参考)「タグ配信の優先度」を使わずに順番を待ってタグを配信させる方法

タグの配信順序を指定する機能

Googleタグマネージャでは今まで、タグを配信する順番は指定できませんでした。完全なランダムというわけではないようですが、少なくとも明確な順序指定を行う機能は実装されていませんでした。
一応、後述のような方法を使えばできなくもなかったのですが、かなり力技に近い方法を取らざるを得ず、あまり便利に使えるものではありませんでした。

しかし今回のバージョンアップで実装された「タグ配信の優先度」設定機能を使うことで、タグが配信される順番を指定できるようになりました。

優先度を設定した場合のタグの一覧画面
優先度を設定すると、タグの一覧にも表示されるようになります。(更新日の左の列)

「タグ配信の優先度」の使い方と注意点

この優先度の指定の方法は、タグの詳細画面から行います。
タグの詳細画面を開き、画面下にある「詳細設定」を開くと、その中に「タグ配信の優先度」という項目が見つかるはずです。ここで設定します。

  1. 優先度を指定したいタグの詳細画面を開く
  2. 下の方にある「詳細設定」を開く
  3. 「タグ配信の優先度」の欄へ整数を入力する
  4. タグを保存して完了
タグ詳細画面の「詳細設定」を開いた画面
一番上にあるのが「タグ配信の優先度」。デフォルト(空欄の場合)は0として扱われます。

この欄に、数値を入れて設定します。入力する数値は整数で、-の値も入れることができます。
ちなみに何も入力していないデフォルトの状態では優先度は0として扱われるので、「他のタグよりも早く処理を開始させたい」という場合は優先度に+の値(10とか)を、逆に「他のタグよりも処理は後でいい」という場合は優先度に-の値(-10とか)を入力することになるでしょう。値が同じタグが複数ある場合は、それらはいままで通り明確な順番指定は無しで配信されます。
この入力欄に数値を入れて、タグを保存すれば設定は完了です。

さて、タグの処理順が指定できるようになったと聞くと、色々な使い道が思い浮かぶかと思います。例えばjQueryのjsを最優先指定してタグとして登録して最初に読み込むようにさせて、動作にjQueryが必要なJSを別のタグとしてその後から処理させる……などですね。
結論から言うと、いま例に挙げたような使い方はできません。
なぜならこれはあくまで「配信『開始』」を指定する機能であって、「配信『完了』」を待つ機能ではないからです。

「タグ配信の優先度」で指定した処理のイメージフロー
タグの配信開始を指定できるだけで、先に配信したタグの処理完了を待たずに後続のタグが配信開始される。

つまり、先に挙げたような例の場合、jQueryのjsが読み込み完了する前に、jQueryのjsが読み込み済みでないと正常に動作しない後続のタグが処理開始してしまう可能性があるため、実用するには問題があるのです。
この「完了を待たない」というのは、ヘルプページで明言されていますのでご注意ください。(日本語ページではまだ反映されていませんが、フッターのプルダウンで言語を英語にすると更新済みの内容を見ることができます)

ですので、今回の機能は「タグの処理完了が必須ではない順序指定」がしたい場合などにのみ使ってください。
……正直なところ、使用する機会が思い浮かばないのですが、例えば「このタグは処理負荷が高いので後回しにしよう(優先度を下げる)」とか、そういう使い方になるかと思います。

(参考)「タグ配信の優先度」を使わずに順番を待ってタグを配信させる方法

参考までに、前述で少し触れた「力技で無理やり」な感じのやり方も紹介しておきます。
なお、こちらのやり方ですと処理完了を待つことも可能と言えば可能です。

具体的には「カスタムHTMLタグ」を利用し、各タグの最後にeventマクロを使ってまた別の後続にあたるタグを呼び出す、という泥臭い方法です。

  1. 「カスタムHTMLタグ」としてタグを登録する
  2. 【1】のタグの最後にeventマクロへ値を渡すJSを記述する
    <script>dataLayer.push({'event': '任意のイベント名'});</script>
  3. {{event}} [等しい] [【2】でeventマクロに渡した値] でルールを登録
  4. 【1】タグの後に処理開始させたいタグへ【3】で登録したルールを紐づける

JSさえ動く環境であればGTMを呼び出せるということを利用した、以前の記事「JavaScriptからGoogleタグマネージャに登録している任意のタグを呼び出す方法」の最後で紹介したやり方ですね。
ただ、専用のルールを追加しなければいけないなど地味に手間ですので、その点はご留意ください。

先行配信させたタグの処理完了を待って後続のタグを配信できるようになれば、本当はもっと嬉しかったのですが……。
それはさておき、長らく待ち望まれていた「タグの配信の順番を指定できる」機能でした。今後も色々と機能が実装されると良いですね。

この記事を書いた人
畑岡 大作
畑岡 大作
マークアップエンジニア

マークアップエンジニアとして活躍しながら昨今はGTMのスペシャリストに。日本初となる書籍を出版し、多くの顧客サイトのGTM設計、運用、アドバイスなどを行う。セミナー登壇も多数。好きな物はラノベ、ゲームからラーメン、万年筆(のインク)と幅広い。

最近書いた記事
著書