Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@MasatoEmata

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

More than 1 year has passed since last update.

概要

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アカウント

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
MasatoEmata
Webデータ処理と施策利用の関心が高め+プロダクトを色々作りたい+エンジニア基礎力をもっと付けたい (経歴)サポートエンジニア@MAツールベンダー→データエンジニア@Webコンサル (言語)SQL,Python,Javascript (技術)Webデータ処理(GA/Ads/GTM,..) (勉強)GCP,Tableau,firebase

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?