I criteri sono implementati su una pagina web. Quando un contenitore viene eseguito nella pagina, i criteri vengono applicati alle definizioni dei modelli personalizzati di Tag Manager per controllare il modo in cui è possibile utilizzare determinate 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;
}
});