במדריך הזה מתוארות משימות, תכונה מתקדמת שמשמשת להתאמה אישית של האופן שבו מערכת analytics.js מאמתת, בונה ושולחת בקשות של Measurement Protocol.
סקירה
בכל קריאה לפקודה send
, analytics.js מבצע רצף של משימות כדי לאמת, לבנות ולשלוח בקשת Measurement Protocol מהדפדפן של המשתמש אל Google Analytics. בטבלה הבאה מתוארים כל אחת מהמשימות האלה, לפי הסדר שבו הן מתבצעות:
שם המשימה | תיאור |
---|---|
customTask |
כברירת מחדל, המשימה הזו לא עושה כלום. יש לשנות אותו כדי לספק התנהגות מותאמת אישית. |
previewTask |
הבקשה מתבטלת אם הדף מעובד רק כדי ליצור תמונה ממוזערת של 'אתרים מובילים' ב-Safari. |
checkProtocolTask |
מבטל את הבקשה אם פרוטוקול הדף אינו http או https . |
validationTask |
מבטל את הבקשה אם שדות החובה חסרים או לא חוקיים. |
checkStorageTask |
מבטל את הבקשה אם מכשיר המעקב מוגדר לשימוש בקובצי cookie, אבל קובצי ה-cookie מושבתים בדפדפן של המשתמש. |
historyImportTask |
מייבאת מידע מקובצי cookie ga.js ו-urchin.js כדי לשמור את היסטוריית המבקרים כאשר אתר עובר ל-Universal Analytics. |
samplerTask |
דוגמים מבקרים על סמך ההגדרה
sampleRate
של מכשיר המעקב הזה. |
buildHitTask |
יוצר מחרוזת בקשה של Measurement Protocol ושומר אותה בשדה hitPayload . |
sendHitTask |
מעביר לשרתים של Google Analytics את הבקשה של Measurement Protocol ששמורה בשדה hitPayload . |
timingTask |
המערכת יוצרת באופן אוטומטי היט תזמון של מהירות האתר על סמך
ההגדרה siteSpeedSampleRate לכלי המעקב הזה. |
displayFeaturesTask |
שולחת היט נוסף אם תכונות התצוגה מופעלות והיט קודם לא נשלח במהלך פרק הזמן הקצוב לתפוגה שהוגדר על ידי קובץ ה-Cookie של תכונות הפרסום (_gat). |
כל אחת מהמשימות האלו מוטמעת כפונקציית JavaScript, שמקבלת פרמטר יחיד של מודל כקלט. המודל הוא אובייקט פשוט שמספק גישה לכל אחד מהשדות המוגדרים בחומר העזר בנושא שדות של Analytics.js.
אפשר לגשת ל-Tasks או להחליף אותן באמצעות השיטות הרגילות למעקב get
ו-set
. בשיטות האלה, ניתן להחליף משימות בפונקציות מותאמות אישית משלכם, או להרחיב את הפונקציונליות הקיימת על ידי שרשור הפונקציות המותאמות אישית כך שיופעלו לפני או אחרי משימה קיימת.
הטמעה
בקטע הזה נסביר איך להוסיף פונקציונליות חדשה למשימות קיימות, להחליף את הפונקציות המובנות בקוד מותאם אישית או להשבית לגמרי פונקציה של משימה.
ביטול משימה
כדי לשנות משימה, אפשר set
להגדיר את הערך שלה לפונקציה שמבצעת פעולה אחרת. אחת הסיבות הנפוצות לביטול משימות היא לסרוק את הפונקציונליות במהלך בדיקת ההטמעות של analytics.js.
הקוד הבא מחליף את sendHitTask
בפונקציה שמתעדת את המטען הייעודי (payload) של ההיט במסוף:
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
, התוצאה היא מניעת השליחה של הבקשה של פרוטוקול המדידה לשרתים של Google Analytics. בדוגמה הבאה, אנחנו מבטלים את הבקשה בכל פעם שהדפדפן של המשתמש מכיל קובץ cookie בשם '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');
השבתה של משימה
כדי להשבית פונקציות משימה מובנות, צריך להחליף אותה ב-null.
ga('create', 'UA-XXXXX-Y', 'auto');
ga('set', 'checkProtocolTask', null); // Disables file protocol checking.
ga('send', 'pageview');