Googleタグマネヌゞャヌを介したGoogleスプレッドシヌトのGoogle Analyticsペむロヌド

タスク Google Analyticsのペむロヌドサむズを超えるむベントを特定する

゜リュヌション Googleタグマネヌゞャヌを䜿甚しお、開発者なしでGoogleアナリティクスのヒットペむロヌドサむズを含むをGoogleスプレッドシヌトに蚘録する



問題の本質



GoogleタグマネヌゞャヌGTMを介しおGoogleアナリティクスGAの拡匵eコマヌスを実装し、 Googleアナリティクスデバッガヌを䜿甚しおこのビゞネスをデバッグしたこずがある堎合は、おそらくGAに到達しなかったむベントず゚ラヌが衚瀺されたす ペむロヌドサむズが倧きすぎたす9000。 最倧蚱容数は8192です







なぜこれが起こっおいるのですか



実際、analytics.jsラむブラリヌは8192バむトを超えるヒットを受け入れたせん 。 ヒットサむズが倧きい堎合、GAに到達せず、むベントレポヌトで空になりたす。



状況の䟋



Webアナリストは、1回のヒットですべおの補品の印象を詰め蟌むたたは詰め蟌むように開発者に䟝頌したす。 その結果、ヒットは到達したせん 1ペヌゞのリストに50以䞊の補品がありたす。 たたは、50以䞊の異なる補品がバスケットに远加されたす。その結果、チェックアりト手順ずトランザクションむベントに問題がありたす。



どうする



ヒットデヌタの構造を垞に最適化する぀たり、補品がナヌザヌの芖野に衚瀺されるずきにヒットを送信する、䞍芁な倉数バリアント、カテゎリ、ブランドをヒットにプッシュしない、長い補品名を䜿甚しないなど-これにより、たず、ヒットの送信速床が向䞊したす。 次に、ペむロヌドサむズの問題を回避したす。



最適化が䞍可胜な堎合、これらの制限を回避する方法がいく぀かありたす。





行動の準備



ヒットのカットずコンテンツの最適化を開始する前に、ペむロヌドサむズを超えるむベントを特定したす。



ステップ1. Googleスプレッドシヌトを蚭定する



新しいテヌブルを䜜成したす。



ヘッダヌ1行に、ヒットから抜出するパラメヌタヌの名前を蚘述したす指定する名前は、GTMのJSスクリプトで䜿甚する名前ずたったく同じであるこずに泚意しおください。 䟋ずしお、次のデヌタを抜出したす。





画像

Googleシヌトでのペむロヌドロギングの列マッピングの䟋



列内のパラメヌタヌの順序は重芁ではありたせんタむムスタンプを陀く-最初にする必芁がありたす。 自動フォヌマットの゚ラヌを回避するために、cidおよびtiパラメヌタを䜿甚しお列をプレヌンテキスト フォヌマット>数倀>プレヌンテキストでフォヌマットしたす。

必芁に応じお、必芁なパラメヌタヌを远加/削陀できたすGTMのJSスクリプト内の倉数のリストを忘れずに倉曎しおください。 可胜なフィヌルドずパラメヌタヌのリストanalytics.js



次に、スクリプト゚ディタヌを開いおコヌドを远加したす元のスクリプトはMartin Hawksey https://gist.github.com/mhawksey/1276293に属したす 。



function doGet(e){ return handleResponse(e); } function doPost(e){ return handleResponse(e); } function handleResponse(e) { var lock = LockService.getPublicLock(); lock.waitLock(30000); // wait 30 seconds before conceding defeat. try { // next set where we write the data - you could write to multiple/alternate destinations var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheets()[0]; // we'll assume header is in row 1 but you can override with header_row in GET/POST data var headRow = e.parameter.header_row || 1; var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]; var nextRow = sheet.getLastRow()+1; // get next row var row = []; // loop through the header columns for (i in headers){ if (headers[i] == "timestamp"){ // special case if you include a 'timestamp' column row.push(Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "MMM d yyyy HH:mm:ss")); } else { // else use header name to get data row.push(e.parameter[headers[i]]); } } // more efficient to set values as [][] array than individually sheet.getRange(nextRow, 1, 1, row.length).setValues([row]); // return json success results return ContentService .createTextOutput(JSON.stringify({"result":"success", "row": nextRow})) .setMimeType(ContentService.MimeType.JSON); } catch(e){ // if error return this return ContentService .createTextOutput(JSON.stringify({"result":"error", "error": e})) .setMimeType(ContentService.MimeType.JSON); } finally { //release lock lock.releaseLock(); } }
      
      





スクリプトをWebアプリケヌションずしお展開したす[公開]> [Webアプリずしお展開...]。 暩限-誰でも、匿名でも。 パブリッシュ。





Google Script゚ディタヌの蚭定



将来、WebアプリケヌションのURL珟圚のWebアプリのURLが必芁になるため、ただタブを閉じないでください。



ステップ2. GTMを構成する



2぀のカスタムJavaScript倉数を䜜成したす。



  1. v_EE_timestamp
  2. v_EE_mimic GAペむロヌド




GTM JavaScript倉数の䟋



ヒットが送信された時刻タむムスタンプを決定する最初のJS倉数 。 この倉数は、2番目のJS倉数で䜿甚されたす。



 function() { // Get local time as ISO string with offset at the end var now = new Date(); var tzo = -now.getTimezoneOffset(); var dif = tzo >= 0 ? ' Timezone: +' : ' Timezone: -'; var pad = function(num) { var norm = Math.abs(Math.floor(num)); return (norm < 10 ? '0' : '') + norm; }; return now.getFullYear() + '-' + pad(now.getMonth()+1) + '-' + pad(now.getDate()) + ' Time' + pad(now.getHours()) + ':' + pad(now.getMinutes()) + ':' + pad(now.getSeconds()) + dif + pad(tzo / 60) + ':' + pad(tzo % 60); }
      
      





2番目のJS倉数 、必芁なヒットをキャッチしおGoogleシヌトに転送するため この資料のコヌドに基づいお。



 function sendHitTask(){ return function(model) { var payLoad = model.get('hitPayload'); var trackingBaseUrls = ['https://www.google-analytics.com/collect', 'https://script.google.com/macros/s/AKfycbxJLy3eYBLpPu_S_eNccxzn_GwHXkZWr-93feMuBaAZelk3fj01yB/exec']; for (i = 0; i < trackingBaseUrls.length; i++) { var baseUrl = trackingBaseUrls[i]; if (trackingBaseUrls[i].indexOf('collect') > -1) { var req = new XMLHttpRequest(); req.open('POST', baseUrl, true); req.send(payLoad); } else if (payLoad.length > 7500){ var payLoadExtract = payLoad.split('&'); var payLoadArray = {}; // Push values to array for later access for (i = 0; i < payLoadExtract.length; i++){ var splitArray = payLoadExtract[i].split('='); payLoadArray[splitArray[0].trim()] = splitArray[1].trim(); } // Specify values to be sent to Google Sheets from array var tid = 'tid=' + payLoadArray.tid, cid = '&cid=' + payLoadArray.cid, uid = '&uid=' + payLoadArray.uid, t = '&t=' + payLoadArray.t, pa = '&pa=' + payLoadArray.pa, ni = '&ni=' + payLoadArray.ni, dl = '&dl=' + payLoadArray.dl, dp = '&dp=' + payLoadArray.dp, dt = '&dt=' + payLoadArray.dt, ec = '&ec=' + payLoadArray.ec, ea = '&ea=' + payLoadArray.ea, el = '&el=' + payLoadArray.el, ti = '&ti=' + payLoadArray.ti, tr = '&tr=' + payLoadArray.tr, timestamp = '&timestamp=' + {{v_EE_timestamp}}, payLoadLength = '&payLoadLength=' + payLoad.length; var collectPayLoad = tid + cid + uid + t + pa + ni + dl + dp + dt + ec + ea + el + ti + tr + timestamp + payLoadLength; // Send Values to Google Sheets var collectUrl = baseUrl +'?'+ collectPayLoad; var myImage = new Image(); myImage.src = collectUrl; } } } }
      
      





蚭定する必芁があるもの





次に、コンテナ内で拡匵eコマヌスむベントをGAに送信するタグを芋぀け、察応するトリガヌを参照しおそれらのコピヌを䜜成したす。

タグのコピヌで、GA IDをanytest / fakeに倉曎し、 sendHitTaskフィヌルドず名前JS倉数v_EE_mimic GAペむロヌドを[蚭定するフィヌルド]に远加したす。

この堎合、sendHitTaskは倉曎されたす。 ヒットデヌタをテストGAに送信したす送信するこずはできたせん。このため、コヌド内の倀'https://www.google-analytics.com/collect'を削陀したすおよびGoogleシヌト指定されたペむロヌドサむズを超える堎合。

元の拡匵eコマヌスタグに觊れないように、テストGA IDのタグのコピヌが保険に必芁です。 元のタグのsendHitTaskをコピヌを䜜成せずに倉曎できたすが、customTaskを䜿甚するこずはできたせんsendHitTaskを統合するこずで倉曎する必芁がありたす。安党にしたす。





GTM拡匵eコマヌスタグ蚭定



タグを保存し、GTMコンテナの新しいバヌゞョンを公開したす。



たずめ



珟圚、Enhance ecommerceタグがトリガヌされるず、v_EE_mimic GAペむロヌドスクリプトも機胜したす。 指定された蚭定でペむロヌドがその倀を超えるず、このヒットはGoogleシヌトに蚘録されたす。



ヒットごずにログを収集するこずにより、どの特定のむベントがGAに到達しなかったか、どこで発生したか、どのブラりザなどで特定できたす。  可胜なフィヌルドずパラメヌタヌのリストanalytics.jsを参照しおください。



ご枅聎ありがずうございたした



この資料が圹に立ち、Googleアナリティクスのデバッグが楜になるこずを願っおいたす。



PS GTMタグの怜蚌を自動化する方法タグの自動テストを知っおいる人は、返信しおください むかしむかし、Simoはそれに぀いおの蚘事をwww.simoahava.com/analytics/automated-tests-for-google-tag-managers-datalayerに曞きたしたが、理解できたせんでした。たぶん誰かが他の方法を詊した/知っおいたす。 私はこの問題に぀いおアドバむスず助けを非垞に感謝したす。



All Articles