المهام

يصف هذا الدليل المهام، وهي ميزة متقدّمة تُستخدم لتخصيص كيفية تحقّق analytics.js من صحة طلبات Measurement Protocol وإنشائها وإرسالها.

نظرة عامة

في كل مرة يتم فيها استدعاء الأمر send، ينفِّذ analytics.js سلسلة من المهام للتحقّق من صحة طلب Measurement Protocol وإنشائه وإرساله من متصفّح المستخدم إلى "إحصاءات Google". يصف الجدول التالي كل مهمة من هذه المهام، بالترتيب الذي يتم تنفيذها به:

اسم المهمة الوصف
customTask بشكل افتراضي، لا تفعل هذه المهمة أي شيء. يمكنك تجاوزها لتوفير سلوك مخصّص.
previewTask يؤدي هذا الخيار إلى إلغاء الطلب إذا كان يتم عرض الصفحة فقط لإنشاء صورة مصغّرة "أهم المواقع الإلكترونية" في متصفّح Safari.
checkProtocolTask يلغي الطلب إذا لم يكن بروتوكول الصفحة http أو https.
validationTask يلغي الطلب إذا كانت الحقول المطلوبة غير متوفّرة أو غير صالحة.
checkStorageTask يتم إلغاء الطلب في حال إعداد أداة التتبُّع لاستخدام ملفات تعريف الارتباط ولكن تم إيقاف ملفات تعريف الارتباط في متصفّح المستخدم.
historyImportTask يتم استيراد المعلومات من ملفات تعريف الارتباط ga.js وurchin.js للاحتفاظ بسجلّ الزوّار عند نقل الموقع الإلكتروني إلى Universal Analytics.
samplerTask يتم أخذ عينات من الزوّار استنادًا إلى إعدادات sampleRate في جهاز التتبُّع هذا.
buildHitTask تنشئ سلسلة طلب Measurement Protocol وتخزنها في الحقل hitPayload.
sendHitTask تُرسِل طلب Measurement Protocol المخزَّن في الحقل hitPayload إلى خوادم "إحصاءات Google".
timingTask يتم تلقائيًا إنشاء نتيجة توقيت سرعة الموقع الإلكتروني استنادًا إلى إعدادات siteSpeedSampleRate في جهاز التتبُّع هذا.
displayFeaturesTask يرسل نتيجة إضافية في حال تفعيل ميزات الشبكة الإعلانية ولم يتم إرسال نتيجة سابقة خلال فترة المهلة التي حدّدها ملف تعريف الارتباط لميزات الإعلانات (_gat).

يتم تنفيذ كل مهمة من هذه المهام كدالة JavaScript تأخذ معلَمة نموذج واحدة كإدخال. النموذج هو كائن بسيط يوفر إمكانية الوصول إلى أيٍّ من الحقول المحدّدة في مرجع حقل Analytics.js.

يمكن الوصول إلى "مهام Google" أو استبدالها باستخدام طريقة التتبُّع العادية get وset. باستخدام هذه الطرق، يمكنك استبدال المهام بدوالّك المخصّصة، أو زيادة الوظائف الحالية عن طريق سلسلة الدوال المخصّصة لتنفيذها قبل مهمة حالية أو بعدها.

التنفيذ

يوضِّح هذا القسم كيفية إضافة وظائف جديدة إلى المهام الحالية، أو استبدال دوال المهام المضمَّنة برمزك المخصَّص، أو إيقاف وظيفة مهمة بالكامل.

تجاوز مهمة

لإلغاء مهمة، يمكنك set قيمتها إلى دالة تؤدي إجراءً مختلفًا. من الأسباب الشائعة لإلغاء المهام اختبار الوظائف عند اختبار عمليات تنفيذ مقتطف analytics.js.

يستبدل الرمز التالي sendHitTask بدالة تُسجل حمولة النتيجة في وحدة التحكم:

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

الإضافة إلى مهمة

لإدراج وظيفة جديدة، يمكنك ربط دالة المهمة المخصّصة لتنفيذها قبل مهمة حالية أو بعدها. في المثال التالي، يتم استبدال sendHitTask بوظيفة مهام مخصّصة تستدعي أولاً دالة sendHitTask الأصلية لإرسال إشارة الطلب العادية إلى google-analytics.com/collection، ثم تنفيذ رمز مخصّص لإرسال نسخة من طلب Measurement Protocol إلى خادم محلي.

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');

إلغاء معالجة المهام

يمكن أن تلغي المهمة معالجة المهام اللاحقة من خلال طرح استثناء. إذا تم تنفيذ مهمة طرح الاستثناء قبل sendHitTask، يؤدي ذلك إلى منع إرسال طلب Measurement Protocol إلى خوادم "إحصاءات Google". في المثال التالي، نلغي الطلب عندما يحتوي متصفّح المستخدم على ملف تعريف ارتباط باسم "اختبار" بالقيمة "صحيح".

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');

إيقاف مهمة

لإيقاف أي من دوال المهام المضمنة، استبدلها بقيمة خالية.

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