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