Políticas de plantillas personalizadas

Las políticas se implementan en una página web. Cuando un contenedor se ejecuta en la página, las políticas se aplican a las definiciones de plantillas personalizadas de Tag Manager para controlar cómo se pueden usar ciertas características y funciones. Las políticas se implementan con la API gtag('policy', ...) .

La API gtag('policy', ...) requiere definiciones para dataLayer y gtag() . Asegúrate de que dataLayer y gtag() estén definidos en tu código antes de llamar gtag('policy', ...) más adelante en el script:

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

Use la API gtag('policy', ...) en una página web para establecer políticas para permisos de plantillas personalizadas :

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

El argumento <permissionId> es cualquiera de los tipos de permisos admitidos, por ejemplo, inject_script . Se llamará a la política cada vez que un contenedor quiera verificar si ese permiso está permitido.

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

Especifique 'all' para interactuar con todas las verificaciones de políticas.

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

El tercer argumento <function> , es una función que implementa la política indicada con esta firma:

function(containerId, permissionId, data) {...}
  • containerId es el ID del contenedor de Tag Manager, por ejemplo, 'GTM-1234' .
  • permissionId es una cadena que especifica el tipo de política que se verificará.
  • data es un objeto que contiene cualquier información relevante para el tipo de permiso indicado, por ejemplo 'url' para un permiso 'send_pixel' .

Una función de política rechaza una solicitud de permiso cuando devuelve false o genera una excepción. Cualquier excepción con un tipo de string o Error aparecerá en la sección Errores del panel de depuración cuando el modo de vista previa esté habilitado. Cuando se registran varias verificaciones de políticas, se llama a cada verificación y cada verificación tiene la capacidad de rechazar una solicitud de política.

Este ejemplo crea una política que verifica el permiso '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';
  }
});

Este ejemplo usa la palabra clave 'all' para verificar múltiples escenarios de políticas:

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