LoginSignup
2

More than 3 years have passed since last update.

posted at

updated at

Google広告:コンバージョンタグのソースコードはどうクリックIDを処理しているのか?

概要

Google広告のコンバージョンタグのソースコードで2種類の広告クリックIDのCookieを処理している部分を見てみました。

背景

【Google広告】クロスドメインのコンバージョン計測-実装パターンと検証でcookieを調べたところ、Google広告に送るためのクリックIDをセットしたcookieとして以下の2種類存在することが確認できました:
- _gcl_aw
- _gac_UA-***
この2種類のCookieをGoogle広告のコンバージョンタグではどのようにハンドリングしているのか見てみたいと思いました。

※なお、本動機は以下の記事に影響を受けています。
Google AnalyticsのCookieの仕組みを解説
Googleアナリティクスのトラッカー生成処理を徹底解説

前提

コンバージョンタグを仕込んだページでconversion_async.jsを見てみます。
Google-Ads-Conversion-js_Source.png
https://www.googleadservices.com/pagead/conversion_async.js

ソースコードを整形

詳細

途中で力尽きてざっくりと見ただけになりましたが、2つのCookieをハンドリングし分けているコードの箇所を確認することができました。何か誤りがあればコメントで教えてください_(..)_

conversion_async.js
(function() {
...
    //718行目:URLパラメータ(a=b)を作る
    function T(a, b) {
        b = S(b);
        return "" != b && (a = S(a), "" != a) ? "&".concat(a, "=", b) : ""
    }

    //792行目:cookieからクリックID(※)を作る
    //※ "a=b" つまり "_gcl_aw=***"または"_gac_UA-***=***"
    function Kb(a, b) {  
        ...
        var d = "";
        //797行目:cookie"_gcl_aw"にマッチする値を"gclaw"にセットしてリターン
        if (b.google_gcl_cookie_prefix && /^[a-zA-Z0-9_]+$/.test(b.google_gcl_cookie_prefix) && "_gcl" != b.google_gcl_cookie_prefix)
            return d = mb(a, b.google_gcl_cookie_prefix), T("gclaw", d);
        ...
        if ...
        //804行目:"_gac_UA-***"にマッチするcookieの値をセット
        else {
            ...
            b = [];
            a = a.cookie.split(";");
            for (var e = /^\s*_gac_(UA-\d+-\d+)=\s*(.+?)\s*$/, f = 0; f < a.length; f++) {
                //808行目:"_gac_UA-***"にマッチするcookieがあれば値を取得する
                var g = a[f].match(e);
                g && b.push({
                    c: g[1],
                ...
            }
        ...
        }
        //829行目:cookie"_gac_UA-***"にマッチする値を"gac"にセットしてリターン
        return d + (c ? T("gac", c) : "")
    }

    //893行目:Google広告へのリクエストURLを作る
    function V(a, b, d, c, e, f) {  
        ...
        switch (e) {
            default: return "";
            case 2:
                    case 3:
                    var g = "googleads.g.doubleclick.net/pagead/viewthroughconversion/";
                break;
            case 1:
                    g = "www.google.com/pagead/1p-conversion/";
                break;
            case 0:
                    g = (c.google_conversion_domain || "www.googleadservices.com") + "/pagead/conversion/"
        }
        g = ["https://", g, S(c.google_conversion_id),...,"?random=",S(c.google_conversion_time)].join("");
        ...
        //909行目コンバージョンラベルやクリックIDを含む各種パラメータを設定
        a = [...,T("label", c.google_conversion_label),...Kb(d, c),...].join("");
        ...
        g += a;
        ...
        return g
    }
...
//1140行目
}).call(this);

何かあればお手数ですが、本記事か以下アカウントでお知らせください!

\ Follow Me! /
Qiitaアカウント
Twitterアカウント

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2