Criteri per i modelli personalizzati

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