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