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 utilizar determinadas características y funcionalidades. Las políticas se implementan con la API de gtag('policy', ...).

La API de gtag('policy', ...) requiere definiciones para dataLayer y gtag(). Asegúrate de que dataLayer y gtag() estén definidos en tu código antes de que se llame a gtag('policy', ...) más adelante en la secuencia de comandos:

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

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

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

El argumento <permissionId> es cualquiera de los tipos de permisos admitidos, p.ej., inject_script Se llamará a la política cada vez que un contenedor quiera verificar si se otorgó ese permiso.

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

Especifica '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, p.ej., 'GTM-1234'
  • permissionId es una cadena que especifica el tipo de política que se verificará.
  • data es un objeto que contiene información relevante para el tipo de permiso indicado, p.ej., 'url' para un permiso 'send_pixel'.

Una función de política rechaza una solicitud de permiso cuando muestra false o arroja una excepción. Todas las excepciones con los tipos string o Error aparecerán en la sección Errors del panel de depuración cuando esté habilitado el modo de vista previa. Cuando se registran varias verificaciones de políticas, se llama a cada una de ellas y cada una tiene la capacidad de rechazar una solicitud de política.

En este ejemplo, se 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';
  }
});

En este ejemplo, se usa la palabra clave 'all' para verificar varias situaciones 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;
  }
});