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. As políticas são implementadas com a API gtag('policy', ...).

A API gtag('policy', ...) requer definições para o objeto dataLayer e a gtag(). Especifique dataLayer e gtag() no código antes que gtag('policy', ...) seja chamado posteriormente 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 as permissões de modelo personalizado:

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

O argumento <policy_type> é qualquer um dos tipos de permissão compatíveis, por exemplo, 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 da 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 ID do 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 para o 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;
  }
});