Zasady są stosowane na stronie internetowej. Po uruchomieniu kontenera na stronie zasady są stosowane do definicji szablonów niestandardowych w Menedżerze tagów, aby kontrolować sposób użycia określonych funkcji. Zasady są implementowane za pomocą interfejsu gtag('policy', ...)
API.
Interfejs API gtag('policy', ...)
wymaga definicji obiektów dataLayer i gtag()
. Upewnij się, że dataLayer
i gtag()
są zdefiniowane w kodzie przed wywołaniem gtag('policy', ...)
w skrypcie:
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
Aby ustawić zasady dotyczące uprawnień do szablonów niestandardowych za pomocą interfejsu API gtag('policy', ...)
na stronie internetowej:
gtag('policy', <permissionId>, <function>)
Argument <permissionId>
to jeden z obsługiwanych typów uprawnień, np. inject_script
. Zasada zostanie wywołana za każdym razem, gdy kontener będzie chciał sprawdzić, czy to uprawnienie jest dozwolone.
gtag('policy', 'inject_script', function(containerId, permissionId, data) {
// Specific inject_script check goes here.
});
Określ wartość 'all'
, aby mieć dostęp do wszystkich kontroli zgodności z zasadami.
gtag('policy', 'all', function(containerId, permissionId, data) {
// System-wide check goes here.
});
Trzeci argument – <function>
– to funkcja implementująca wskazaną zasadę z tym podpisem:
function(containerId, permissionId, data) {...}
containerId
to identyfikator kontenera Menedżera tagów, np.'GTM-1234'
.permissionId
to ciąg znaków określający typ zasady do sprawdzenia.data
to obiekt zawierający wszelkie istotne informacje dotyczące wspomnianego typu uprawnień, np.'url'
w przypadku uprawnień'send_pixel'
.
Funkcja zasad odrzuca żądanie uprawnień, gdy zwraca false
lub zgłasza wyjątek. Wszystkie włączone typy string
lub Error
będą widoczne w sekcji Błędy w panelu debugowania, gdy włączysz tryb podglądu. W przypadku zarejestrowania wielu kontroli, każde wywołanie jest wywoływane i każdy z nich może odrzucić żądanie dotyczące zasad.
Ten przykład tworzy zasadę, która sprawdza uprawnienie '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';
}
});
W tym przykładzie użyto słowa kluczowego 'all'
do sprawdzenia wielu scenariuszy naruszenia zasad:
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;
}
});