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