Googleタグマネージャー(GTM)は、コードを修正することなくウェブサイトのタグ(トラッキングピクセルのコードスニペット)の管理と展開が行えるツールです。
Googleタグマネージャー(GTM)を使用してウェブサイトにCookieを追加してサイトコンテンツを管理する場合に、訪問者が選択した同意の優先設定によりスクリプトを制御する設定が行えます。
これは、本書のクライアント側のCookie管理のセクションで取り上げた標準ヘルパーメソッドを使用するよりも効率のよい方法です。ただし、GTMの機能の性質上、動作にいくつか違いがあります。
このセクションでは、これらの違いを活かしたGTMの設定方法を説明します。
注記
Googleタグマネージャーの全機能について説明した内容ではありません。GTMの設定と使用の詳しい説明は、Googleタグマネージャーの公式ドキュメントを参照してください。
動作について
Googleタグマネージャーにデータを渡すために、Cookieコンプライアンスツールは変数を使用します。JavaScript変数とデータレイヤー変数をサポートしています。GTMデータレイヤーとデータレイヤー変数の使用をお勧めします。
Cookieコンプライアンスは既存のdataLayer
オブジェクトを使用し、既存のものがなければ新規に作成します。dataLayer
オブジェクトを作成するサイトの場合、これによりCookieコンプライアンスが作成するものが上書きされないようにしてください。
このオブジェクトによりキーOnetrustActiveGroupsが追加され、訪問者(またはデフォルト設定)が選択した現在のアクティブカテゴリIDのコンマ区切り文字列値が含まれます。スクリプトが実行されると、ページを読み込むごとにキーが再配置されます。
ユーザーが同意を更新すると、dataLayer
イベントのOneTrustGroupsUpdatedがトリガーされます。タグを適用するトリガーを作成する際、このイベントを使用します。
GTMのカスタム変数とトリガーを作成することにより、OntrustActiveGroups内に特定の同意グループが存在するときだけGTMタグをトリガーできます。
この統合の実装は、付属のコンテナファイルをアップロードしてマージする方法か、タグごとに手動でトリガーを設定する方法のいずれかで行います。
Googleタグマネージャーの統合についての重要な注意
このセクションの例と異なる動作が必要であれば、Googleタグマネージャーのルール演算子と値記入欄をカスタマイズできます。
-
自動ブロッキングはGoogleタグマネージャーのブロックが可能です。この場合、次のいずれかの方法によりGoogleタグマネージャーのブロックを解除します。
j.setAttributeNode(d.createAttribute('data-ot-ignore'));
j.setAttribute('class','optanon-category-C0001');
Googleタグマネージャーのコンテナを開きます。
メインメニューから変数タブを選択します。[変数]画面が開きます。
新しいユーザー定義変数を作成します。
-
変数に名前を付けます。
ヒント
変数は内容が分かる名前のOnetrustActiveGroupsをお勧めします。
ページ変数のセクションで変数タイプをデータレイヤー変数に設定します。
-
データレイヤー変数の名前をOnetrustActiveGroupsに設定します。
注記
コードが予期した動作をするように、データレイヤー変数名をOnetrustActiveGroupsに設定する必要があります。
[保存]ボタンをクリックします。
重要
[en] Custom data layer variables are only supported by OneTrust 6.29 and up.
カスタムHTMLタイプのタグをGoogleタグマネージャーで使用する場合のタグ内容は次のいずれかとなります。
メインメニューのタグタブを選択します。[タグ]画面が開きます。
[新規]をクリックします。[タグ]モーダルが開きます。
タグの名前をCookieBannerScriptにします。
[タグの構成]の下で編集ボタンをクリックします。[タグタイプを選択する]モーダルが開きます。
カスタムHTMLを選択します。
[en] Paste the published script into the HTML editor.
-
公開されたスクリプトをHTMLエディタに貼り付け、document.writeのサポートボックスにチェックを付けます。
<!-- OneTrust Cookies Consent Notice start -->
<script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js"
type="text/javascript" charset="UTF-8" data-domain-script="YOUR DATA DOMAIN SCRIPT ID"></script>
<script type="text/javascript">
function OptanonWrapper()
</script>
<!-- OneTrust Cookies Consent Notice end -->
[トリガーする]アイコンをクリックします。[トリガーを選択する]モーダルが開きます。
すべてのページを選択します。
[保存]をクリックします。
GTMではトリガーを使用して、ある条件下でタグの実行が決定されます。既存のタグにはさまざまなトリガーが適用されている場合があります。
CookieコンプライアンスをGTMと統合する際、それぞれのCookieカテゴリに関連したトリガーを作成することになります。
これらのトリガーをタグに適用すると、アクティブなCookieカテゴリとユーザーによる同意をもとにタグの実行が指示されます。
CookieをブロックするCookieカテゴリについては、それぞれにトリガーを分ける必要があります。例えば、「Performance Cookies」のグループにカテゴリIDC0002を指定し、Googleアナリティクスタグが設定したCookieを含めるとします。
各トリガーは、Cookie同意のアプリケーションで設定されたカテゴリIDに対応している必要があります。CookieカテゴリのIDは、Cookie同意アプリケーションの分類で確認ができます。
作成/更新するOneTrust CookieカテゴリIDのトリガーを既存のタグに適用し、OneTrustのトリガーによりタグの実行を制限できるようにする必要があります。これにはいくつかの方法があります。次の3つの方法を説明します。
実行トリガーを作成する
既存のタグに実行トリガーを使用してトリガーグループを作成する
例外トリガーを作成する
Googleタグマネージャーのコンテナを開きます。
トップメニューのトリガータブを選択します。[トリガー]画面が開きます。
[新規]をクリックします。[トリガーの構成]画面が開きます。
パフォーマンスCookieがアクティブなどと名前を付けます。
[トリガーの構成]をクリックして、トリガータイプを[カスタムイベント]に設定します。
イベント名をOneTrustGroupsUpdatedに設定します。このイベントがスクリプトに組み込まれます。
-
複数ページ閲覧を選択して、次の条件が真のときにトリガーが実行されるように設定します。
[OnetrustActiveGroups] [matches RegEx] [,C0002,]
トリガーを保存します。
残りのCookieカテゴリにも同じ手順を繰り返します。
トリガーを実行トリガーとしてタグに適用します。
注記
ブロックされたタグが許可を受けた場合、OneTrustGroupsUpdatedを受信することによりページの再読み込みなしにタグが実行されます。以前に許可されていたタグがブロックされると、以降のページ読み込みでタグがブロックされます。
例外トリガーを設定して、Cookieカテゴリがアクティブでないときにスクリプトを実行することもできます。
例外トリガーは、タグに異なる実行トリガーが設定されている場合にのみ使用します。
注記
Googleタグマネージャーでは、アクティブトリガーと同じイベントに対してブロッキングトリガーを実行する必要があります。
例えば、OneTrustのアクティブグループにC0002が含まれない場合に(C0002はパフォーマンスCookieのID)トリガーが実行されるように設定します。このブロッキングトリガーは、このグループのタグに例外として適用します。
トップメニューのトリガータブを選択します。[トリガー]画面が開きます。
[新規]をクリックします。[トリガーの構成]画面が開きます。
新しいトリガーを作成し、ブロックされるパフォーマンスCookieなどと名前を付けます。
[トリガーの構成]をクリックして、トリガータイプを[カスタムイベント]に設定します。
イベント名を.*に設定します。このイベントはすべてのイベントに適用され、例外トリガーによる実行トリガーのイベントのオーバーライドを許可します。
複数カスタムイベントでトリガーが実行されるように設定します。
-
複数ページ閲覧を選択して、次の条件が真のときにトリガーが実行されるように設定します。
[OnetrustActiveGroups] [does not match RegEx] [,C0002,]
トリガーを保存します。
残りのCookieカテゴリにも同じ手順を繰り返します。
トリガーを例外としてタグに適用します。
既存のタグに実行トリガーを使用してトリガーグループを作成する
実行トリガーを使用する場合、OneTrustのトリガーによりタグの実行を制限できるようにする必要があります。
トリガーグループは、タグに異なる実行トリガーが設定されている場合にのみ使用します。
複数のトリガーをタグに直接適用して実行する場合は[OR]条件を使用しますが、トリガーグループでは[AND]条件を使用します。
実行トリガーを直接適用する場合:
トリガーグループを使用する場合:
この方法でも、OneTrustのトリガーを設定して既存のタグに適用し、タグの実行を制限できます。
トップメニューのトリガータブを選択します。[トリガー]画面が開きます。
[新規]をクリックします。[トリガーの構成]画面が開きます。
新しいトリガーを作成し、トリガーグループの例などと名前を付けます。
トリガーの構成をクリックしてトリガータイプをトリガーグループに設定します。
コンテナを使用してGoogleタグマネージャーと統合する
Googleタグマネージャーのコンテナを開きます。
-
Admin(管理)タブを開きます。
記事末尾のリンクを参照してコンテナをダウンロードします。
-
ImportContainer(コンテナをインポート)をクリックします。
ダウンロードしたコンテナファイルを選択します。
マージを選択して、インポートオプションの競合タグ、トリガーと変数を上書きを選択します。
[確認]ボタンをクリックします。
Googleタグマネージャーのメインナビゲーションメニューから[]を選択します。
OneTrustのCookieカテゴリトリガーを適用するタグを選択します。
作成した実行トリガー、トリガーグループ、または例外トリガーを適用します。
[保存]ボタンをクリックします。
OptanonConsent Cookieを使用してタグをブロックする
OneTrustActiveGroups
データレイヤー変数のほかに、OTSDKstub.jsファイルはユーザー同意を収集するファーストパーティCookieのOptanonConsent
も設定できます。OptanonConsent Cookieの値をデコードすることにより、現在の同意設定を読み取ることができます。詳細は、OneTrust Cookieを参照してください。
Googleタグマネージャーのコンテナを開きます。
メインメニューから変数タブを選択します。[変数]画面が開きます。
新しいユーザー定義変数を作成します。
-
変数に名前を付けます。
ヒント
変数は内容が分かる名前のOptanonConsentをお勧めします。
ページ変数のセクションで変数タイプをファーストパーティCookieに設定します。
-
データレイヤー変数の名前をOptanonConsentに設定します。
注記
コードが予期した動作をするように、データレイヤー変数名をOptanonConsentに設定する必要があります。さらに、URIデコードCookieオプションを有効にする必要があります。
[保存]ボタンをクリックします。
OnetrustActiveGroups
データレイヤー変数の設定と同じく、アカウント内のCookieカテゴリごとにアクティブなブロッキングトリガーを作成します。OptanonConsent
Cookieがページの読み込み時に設定されるので、データレイヤー変数によるCookieカテゴリのブロックに通常使用されるOneTrustGroupsUpdated
イベントの前にクライアントタグをトリガーできます。
例えば、データレイヤーに定義されたeコマースイベントを使用する場合、OptanonConsent
CookieをOneTrustGroupsUpdated
ではなくOneTrustActiveGroups
データレイヤー変数に対して使用することにより、eコマースイベントにアナリティクスタグをトリガーできます。
Googleタグマネージャーのコンテナを開きます。
トップメニューのトリガータブを選択します。[トリガー]画面が開きます。
[新規]をクリックします。[トリガーの構成]画面が開きます。
ファーストパーティCookie-アクティブパフォーマンス-OTなどと名前を付けます。
-
トリガーの構成をクリックして、トリガータイプを関連するユースケースに設定します。
注記
ページ閲覧またはDOM Readyのトリガーを追加した場合、トリガーが最初のページ読み込みで実行されないことがあります。
イベント名を該当タグで実行されるイベントに設定します。これはデータレイヤー変数OneTrustActiveGroups
(イベントOneTrustGroupsUpdated
に対してトリガーされる)とは異なります。
-
関連するトリガーを選択して、次の条件が真のときにトリガーが実行されるように設定します。
[OptanonConsent] [contains] [C0002:1]
トリガーを保存します。
残りのCookieカテゴリにも同じ手順を繰り返します。
トリガーを実行トリガーとしてタグに適用します。
Googleタグマネージャーのコンテナを開きます。
トップメニューのトリガータブを選択します。[トリガー]画面が開きます。
[新規]をクリックします。[トリガーの構成]画面が開きます。
ファーストパーティCookie-アクティブパフォーマンス-OTなどと名前を付けます。
トリガーの構成をクリックして、トリガータイプを関連するユースケースに設定します。
イベント名を該当タグで実行されるイベントに設定します。これはデータレイヤー変数OneTrustActiveGroups
(イベントOneTrustGroupsUpdated
に対してトリガーされる)とは異なります。
-
関連するトリガーを選択して、次の条件が真のときにトリガーが実行されるように設定します。
[OptanonConsent] [does not contain] [C0002:1]
トリガーを保存します。
残りのCookieカテゴリにも同じ手順を繰り返します。
トリガーを例外トリガーとしてタグに適用します。
dataLayer
属性を使用すると、OneTrust CDNによるwindow.dataLayer
へのプッシュ送信と新規dataLayer
の作成を防止し、GTMへのメッセージの送信方法を制御できます。
CDNからwindow.dataLayerへのプッシュ送信を無効にする
-
data-dLayer-ignore
属性をスクリプトに追加します。
例:
<script src="https:/cdn.cookielaw.org/scripttemplates/otSDKStub.js"
type="text/javascript" charset="UTF-8" data-domain-script="XXXXX"
data-dLayer-ignore="true"></script>
CDNから新規dataLayerへのプッシュ送信を有効にする
-
data-dLayer-name
属性をスクリプトに追加します。
例:
<script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js"
type="text/javascript" charset="UTF-8" data-domain-script="XXXXXX"
data-dLayer-name="dataLayerOneTrust"></script>
CDNから定義済みのdataLayer
のみにプッシュ送信されます。widow.dataLayer
へのプッシュ送信は無効化されます。
トラブルシューティング:Document.Writeのサポート
Googleタグマネージャーを使用して複数のタグやコンテナで[Document.Writeのサポート]チェックボックスを選択した場合、スクリプトが正しく実行されない場合があります。
確認をするには、CookiePro/OneTrustのタグを含まないコンテナの要求URLをブロックします。
この問題を解決するには、競合を起こしているタグをCookiePro/OneTrustスクリプトが完全に読み込まれた後で実行するように設定します。
これには、スクリプトの完了後にdataLayer内でプッシュされるOnetrustGroupsUpdated
イベントに依存する実行トリガーを該当タグが使用するように設定します。これは、同意設定に基づきユーザーのCookieを設定しないようにする場合と同様の方法です。