Políticas de modelo personalizado

As políticas são implementadas em uma página da Web. Quando o código é executado, as políticas são aplicadas às definições do modelo personalizado do Gerenciador de Tags para controlar como determinados recursos e funcionalidades podem ser usados. Elas são implementadas com a API gtag('policy', ...) .

A API gtag('policy', ...) exige definições para dataLayer e gtag(). Verifique se dataLayer e gtag() estão definidos no seu código antes que a gtag('policy', ...) seja chamada depois no script:

window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}

Use a API gtag('policy', ...) em uma página da Web para definir políticas sobre permissões de modelo personalizado:

gtag('policy', <policy_type>, <function>)

O argumento <policy_type> é qualquer um dos tipos de permissão compatíveis, como inject_script. A política será chamada quando um contêiner quiser verificar se a permissão é válida.

gtag('policy', 'inject_script', ...)

Especifique 'all' para interagir com todas as verificações de política.

gtag('policy', 'all', ...)

O terceiro argumento (<function>) é uma função que implementa a política indicada com esta assinatura:

function(container, policy, data){...}
  • container é o código de contêiner do Gerenciador de tags, por exemplo, 'GTM-1234'.
  • policy é uma string que especifica o tipo de política a ser verificado.
  • data é um objeto que contém qualquer informação relevante do tipo de política indicado, por exemplo, 'url' para uma permissão 'send_pixel'.

Uma função de política rejeita uma solicitação de permissão quando ela retorna false ou gera uma exceção. Qualquer exceção com um tipo de string ou Error aparecerá na seção Erros do painel de depuração quando o modo de visualização estiver ativado. Quando várias verificações de política são registradas, cada verificação é chamada e pode rejeitar uma solicitação de política.

Neste exemplo, uma política que verifica a permissão 'inject_script' é criada:

gtag('policy', 'inject_script', function (container, policy, 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';
  }
});

Neste exemplo, a palavra-chave 'all' é usada para verificar vários cenários de política:

gtag('policy', 'all', function(container, policy, 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(policy) {

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