Tugas

Panduan ini menjelaskan tugas, fitur lanjutan yang digunakan untuk menyesuaikan cara analytics.js memvalidasi, membuat, dan mengirim permintaan Measurement Protocol.

Ringkasan

Setiap kali perintah send dipanggil, analytics.js menjalankan urutan tugas untuk memvalidasi, membuat, dan mengirim permintaan Measurement Protocol dari browser pengguna ke Google Analytics. Tabel berikut menjelaskan masing-masing tugas ini, sesuai urutan dijalankannya:

Nama Tugas Deskripsi
customTask Secara default, tugas ini tidak melakukan apa pun. Ganti tugas tersebut untuk memberikan perilaku kustom.
previewTask Membatalkan permintaan jika halaman hanya dirender untuk membuat thumbnail 'Situs Populer' untuk Safari.
checkProtocolTask Membatalkan permintaan jika protokol halaman bukan http atau https.
validationTask Membatalkan permintaan jika kolom wajib diisi masih kosong atau tidak valid.
checkStorageTask Membatalkan permintaan jika pelacak dikonfigurasi untuk menggunakan cookie, tetapi cookie browser pengguna dinonaktifkan.
historyImportTask Mengimpor informasi dari cookie ga.js dan urchin.js untuk mempertahankan histori pengunjung saat situs bermigrasi ke Universal Analytics.
samplerTask Mengambil sampel pengunjung berdasarkan setelan sampleRate untuk pelacak ini.
buildHitTask Membuat string permintaan Measurement Protocol dan menyimpannya di kolom hitPayload.
sendHitTask Mengirimkan permintaan Measurement Protocol yang disimpan di kolom hitPayload ke server Google Analytics.
timingTask Otomatis membuat hit waktu kecepatan situs berdasarkan setelan siteSpeedSampleRate untuk pelacak ini.
displayFeaturesTask Mengirimkan hit tambahan jika fitur display diaktifkan dan hit sebelumnya belum dikirim dalam periode waktu tunggu yang ditetapkan oleh cookie fitur iklan (_gat).

Setiap tugas ini diterapkan sebagai fungsi JavaScript yang menggunakan parameter model tunggal sebagai input. Model adalah objek sederhana yang memberikan akses ke semua kolom yang ditentukan di Referensi Kolom Analytics.js.

Tugas dapat diakses atau diganti menggunakan metode get dan set pelacak standar. Dengan metode ini, Anda dapat mengganti tugas dengan fungsi kustom Anda sendiri, atau meningkatkan fungsi yang ada dengan merangkai fungsi kustom Anda untuk dijalankan sebelum atau setelah tugas yang ada.

Penerapan

Bagian ini menjelaskan cara menambahkan fungsi baru ke tugas yang ada, mengganti fungsi tugas bawaan dengan kode kustom Anda sendiri, atau menonaktifkan fungsi tugas sepenuhnya.

Mengganti tugas

Untuk mengganti tugas, Anda dapat set nilainya ke fungsi yang melakukan sesuatu yang berbeda. Alasan umum untuk mengganti tugas adalah untuk menghentikan fungsi saat menguji penerapan analytics.js.

Kode berikut mengganti sendHitTask dengan fungsi yang mencatat payload hit ke konsol:

ga('create', 'UA-XXXXX-Y', 'auto');
ga('set', 'sendHitTask', function(model) {
  console.log(model.get('hitPayload'));
});

Menambahkan ke tugas

Untuk menyisipkan fungsi baru, Anda dapat merangkai fungsi tugas kustom untuk dijalankan sebelum atau setelah tugas yang ada. Pada contoh di bawah, sendHitTask diganti dengan fungsi tugas kustom yang terlebih dahulu memanggil fungsi sendHitTask asli untuk mengirimkan beacon permintaan normal ke google-analytics.com/collection, lalu menjalankan kode kustom untuk mengirimkan salinan permintaan Measurement Protocol ke server lokal.

ga('create', 'UA-XXXXX-Y', 'auto');

ga(function(tracker) {

  // Grab a reference to the default sendHitTask function.
  var originalSendHitTask = tracker.get('sendHitTask');

  // Modifies sendHitTask to send a copy of the request to a local server after
  // sending the normal request to www.google-analytics.com/collect.
  tracker.set('sendHitTask', function(model) {
    originalSendHitTask(model);
    var xhr = new XMLHttpRequest();
    xhr.open('POST', '/localhits', true);
    xhr.send(model.get('hitPayload'));
  });
});

ga('send', 'pageview');

Membatalkan Pemrosesan Tugas

Sebuah tugas dapat membatalkan pemrosesan tugas berikutnya dengan melempar pengecualian. Jika tugas yang melempar pengecualian dijalankan sebelum sendHitTask, hal ini akan mencegah permintaan Measurement Protocol dikirim ke server Google Analytics. Dalam contoh di bawah, kami membatalkan permintaan setiap kali browser pengguna berisi cookie bernama 'testing' dengan nilai 'true'.

ga('create', 'UA-XXXXX-Y', 'auto');

ga(function(tracker) {
  var originalBuildHitTask = tracker.get('buildHitTask');
  tracker.set('buildHitTask', function(model) {
    if (document.cookie.match(/testing=true/)) {
      throw 'Aborted tracking for test user.';
    }
    originalBuildHitTask(model);
  });
});

ga('send', 'pageview');

Menonaktifkan Tugas

Untuk menonaktifkan fungsi tugas bawaan, ganti dengan null.

ga('create', 'UA-XXXXX-Y', 'auto');
ga('set', 'checkProtocolTask', null); // Disables file protocol checking.
ga('send', 'pageview');