המדיניות בנושא תבניות מותאמות אישית

כללי המדיניות מיושמים בדף אינטרנט. כשמאגר תגים מופעל בדף, המדיניות חלה על הגדרות התבניות המותאמות אישית ב-Tag Manager כדי לקבוע איך להשתמש בתכונות ובפונקציות מסוימות. כללי המדיניות מוטמעים באמצעות ה-API של gtag('policy', ...).

ל-API של gtag('policy', ...) נדרשות הגדרות ל-dataLayer ול-gtag(). צריך לוודא שהערכים dataLayer ו-gtag() מוגדרים בקוד לפני הקריאה של gtag('policy', ...) לשלב מאוחר יותר בסקריפט:

window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}

שימוש ב-API gtag('policy', ...) בדף אינטרנט כדי להגדיר מדיניות להרשאות בתבניות מותאמות אישית:

gtag('policy', <permissionId>, <function>)

הארגומנט <permissionId> הוא כל אחד מסוגי ההרשאות הנתמכים, למשל inject_script. המדיניות תופעל בכל פעם שמאגר תגים יבקש לבדוק אם ההרשאה הזו מותרת.

gtag('policy', 'inject_script', function(containerId, permissionId, data) {
  // Specific inject_script check goes here.
});

צריך לציין את המאפיין 'all' כדי לבצע אינטראקציה עם כל בדיקות המדיניות.

gtag('policy', 'all', function(containerId, permissionId, data) {
  // System-wide check goes here.
});

הארגומנט השלישי, <function>, הוא פונקציה שמממשת את המדיניות שצוינה עם החתימה הבאה:

function(containerId, permissionId, data) {...}
  • containerId הוא מזהה מאגר התגים של Tag Manager, למשל. 'GTM-1234'
  • הערך permissionId הוא מחרוזת שמציינת את סוג המדיניות שצריך לבדוק.
  • data הוא אובייקט שמכיל את כל המידע הרלוונטי לסוג ההרשאה שצוין, למשל, 'url' להרשאה 'send_pixel'.

פונקציית מדיניות דוחה בקשת הרשאה כשהיא מחזירה false או גורמת לחריגה. חריגים מסוג string או Error יופיעו בקטע שגיאות בחלונית ניפוי הבאגים כאשר מצב תצוגה מקדימה מופעל. כשרשומות כמה בדיקות מדיניות, נשלחת כל בדיקה ולכל בדיקה יש אפשרות לדחות בקשה שקשורה למדיניות.

בדוגמה הזו נוצרת מדיניות שבודקת את ההרשאה 'inject_script':

gtag('policy', 'inject_script', function(containerId, permissionId, data) {

  // reference the url of the script to be injected
  let url = data.url || '';

  // if the url of the injected script exactly matches, allow it.
  // otherwise throw an error
  if (url === 'https://scripts.example.com/analytics.js') {
    return true;
  } else {
    throw 'Only permitted to inject https://scripts.example.com/analytics.js';
  }
});

בדוגמה הזו נשתמש במילת המפתח 'all' כדי לבדוק כמה תרחישי מדיניות:

gtag('policy', 'all', function(containerId, permissionId, data) {

  // Only set policy for 1 specific container.
  // This enables other containers loaded on the page to
  // operate without restrictions on permissions.
  if (container != 'GTM-4321') return true;

  // Since the policy is 'all', adjust permissions conditionally.
  switch (permissionId) {

    case 'send_pixel':
      return true;

    case 'write_globals':
      return data.key && data.key == '_gaq';

    case 'inject_script':
      let url = data.url || '';
      if (url.indexOf('https://example.com') != 0)
        throw 'Only example.com scripts are permitted';

    default:
      // IT staff decides that all unknown permissions
      // are rejected.
      return false;
  }
});