I criteri sono implementati su una pagina web. Quando un contenitore viene eseguito sulla pagina, le norme vengono applicate alle definizioni di modelli personalizzati di Tag Manager per controllare il modo in cui possono essere utilizzate determinate caratteristiche e funzionalità. I criteri vengono implementati con l'API gtag('policy', ...)
.
L'API gtag('policy', ...)
richiede definizioni per dataLayer e gtag()
. Assicurati che dataLayer
e gtag()
siano definiti nel codice prima che gtag('policy', ...)
venga chiamato più tardi nello script:
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
Utilizza l'API gtag('policy', ...)
su una pagina web per impostare i criteri per le autorizzazioni per i modelli personalizzati:
gtag('policy', <permissionId>, <function>)
L'argomento <permissionId>
è uno qualsiasi dei tipi di autorizzazioni supportati, ad esempio inject_script
Il criterio viene chiamato ogni volta che un container vuole verificare se l'autorizzazione è consentita.
gtag('policy', 'inject_script', function(containerId, permissionId, data) {
// Specific inject_script check goes here.
});
Specifica 'all'
per interagire con tutti i controlli dei criteri.
gtag('policy', 'all', function(containerId, permissionId, data) {
// System-wide check goes here.
});
Il terzo argomento, <function>
, è una funzione che implementa il criterio indicato con questa firma:
function(containerId, permissionId, data) {...}
containerId
è l'ID contenitore di Tag Manager, ad es.'GTM-1234'
.permissionId
è una stringa che specifica il tipo di criterio da controllare.data
è un oggetto che contiene informazioni pertinenti per il tipo di autorizzazione indicato, ad esempio'url'
per un'autorizzazione'send_pixel'
.
Una funzione dei criteri rifiuta una richiesta di autorizzazione quando restituisce false
o genera un'eccezione. Eventuali eccezioni di tipo string
o Error
vengono visualizzate nella sezione Errori del riquadro di debug quando è attiva la modalità di anteprima. Quando sono registrati più controlli dei criteri, ogni controllo viene richiamato e ognuno può rifiutare una richiesta di violazione.
In questo esempio viene creato un criterio che controlla l'autorizzazione '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';
}
});
In questo esempio viene utilizzata la parola chiave 'all'
per verificare più scenari di norme:
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;
}
});