Règles de modèles personnalisés

Les règles sont mises en œuvre sur une page Web. Lorsqu'un conteneur est exécuté 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 afin de définir des règles pour les autorisations de modèle personnalisé:

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 accordé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 stratégie.

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 toute information pertinente 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. Toute exception de type string ou Error apparaît dans la section Erreurs du volet de débogage lorsque le mode Aperçu est activé. Lorsque plusieurs vérifications de stratégie sont enregistrées, chaque vérification est appelée et chaque vérification peut rejeter une demande de règle.

Cet exemple crée une stratégie 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;
  }
});