Règles de modèles personnalisés

Les règles sont implémentées sur une page Web. Lorsqu'un conteneur s'exécute sur la page, des règles sont appliquées aux définitions de modèles personnalisés de Tag Manager afin de contrôler l'utilisation de certaines fonctionnalités. Les règles sont implémentées avec l'API gtag('policy', ...).

L'API gtag('policy', ...) nécessite des définitions pour dataLayer et gtag(). Assurez-vous que dataLayer et gtag() sont définis dans votre code avant que gtag('policy', ...) ne soit appelé plus tard dans le script:

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

Utilisez l'API gtag('policy', ...) sur une page Web pour définir des règles pour les autorisations de modèles personnalisés:

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

L'argument <permissionId> correspond à l'un des types d'autorisations compatibles, par exemple inject_script La règle sera appelée chaque fois qu'un conteneur souhaite vérifier si cette autorisation est autorisée.

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

Spécifiez 'all' pour interagir avec toutes les vérifications de conformité aux règles.

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

Le troisième argument, <function>, est une fonction qui implémente la stratégie indiquée avec cette signature:

function(containerId, permissionId, data) {...}
  • containerId est l'ID du conteneur Tag Manager (par exemple, 'GTM-1234'
  • permissionId est une chaîne qui spécifie le type de règle à vérifier.
  • data est un objet qui contient toutes les informations pertinentes pour le type d'autorisation indiqué, par exemple 'url' pour une autorisation 'send_pixel'.

Une fonction de stratégie rejette une demande d'autorisation lorsqu'elle renvoie false ou génère une exception. Toutes les exceptions de type string ou Error s'affichent dans la section Erreurs du volet de débogage lorsque le mode Aperçu est activé. Lorsque plusieurs vérifications de la règle sont enregistrées, chaque vérification est appelée, et chaque vérification a la possibilité de rejeter une demande de règle.

Cet exemple crée une règle qui vérifie l'autorisation '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';
  }
});

Cet exemple utilise le mot clé 'all' pour vérifier plusieurs scénarios de règle:

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