سيتم إيقاف Universal Analytics (UA) في 1 تموز (يوليو) 2023، ما يعني أنه سيتوقف عن معالجة البيانات. ستتوقف مواقع "إحصاءات Google 360" عن العمل في 1 تشرين الأول (أكتوبر) 2023. نقل البيانات إلى "إحصاءات Google" 4.

مهام

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

نظرة عامة

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

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

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

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

التنفيذ

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

إلغاء مهمة

لإلغاء مهمة، يمكنك set قيمتها إلى دالة تنفّذ إجراءً مختلفًا. يتمثل أحد الأسباب الشائعة لإلغاء المهام في وظيفة stub عند اختبار عمليات تنفيذ مقتطف 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، ثم تنفّذ رمزًا مخصّصًا لإرسال نسخة من طلب بروتوكول القياس إلى خادم محلي.

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، يكون لذلك تأثير منع إرسال طلب بروتوكول القياس إلى خوادم "إحصاءات Google". في المثال أدناه، نلغي الطلب عندما يحتوي متصفّح المستخدم على ملف تعريف ارتباط اسمه 'testing' مع القيمة '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');

إيقاف مهمة

لإيقاف أي من دوال المهام المضمّنة، عليك استبدالها بفارغ.

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