Kebijakan diterapkan di halaman web. Saat penampung berjalan di halaman, kebijakan diterapkan ke definisi template kustom Tag Manager untuk mengontrol cara penggunaan fitur dan fungsi tertentu. Kebijakan diterapkan dengan API gtag('policy', ...)
.
API gtag('policy', ...)
memerlukan definisi untuk dataLayer dan gtag()
. Pastikan dataLayer
dan gtag()
ditetapkan dalam kode Anda sebelum gtag('policy', ...)
dipanggil nanti dalam skrip:
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
Gunakan API gtag('policy', ...)
di halaman web guna menetapkan kebijakan untuk izin template kustom:
gtag('policy', <permissionId>, <function>)
Argumen <permissionId>
adalah salah satu jenis izin yang didukung, misalnya, inject_script
. Kebijakan ini akan dipanggil setiap kali penampung ingin memeriksa apakah izin tersebut diizinkan.
gtag('policy', 'inject_script', function(containerId, permissionId, data) {
// Specific inject_script check goes here.
});
Tentukan 'all'
untuk berinteraksi dengan semua pemeriksaan kebijakan.
gtag('policy', 'all', function(containerId, permissionId, data) {
// System-wide check goes here.
});
Argumen ketiga—<function>
—adalah fungsi yang menerapkan kebijakan yang ditunjukkan dengan tanda tangan ini:
function(containerId, permissionId, data) {...}
containerId
adalah ID penampung Tag Manager, misalnya,'GTM-1234'
.permissionId
adalah string yang menentukan jenis kebijakan yang akan diperiksa.data
adalah objek yang berisi informasi yang relevan untuk jenis izin yang ditunjukkan, misalnya,'url'
untuk izin'send_pixel'
.
Fungsi kebijakan akan menolak permintaan izin saat menampilkan false
atau menampilkan pengecualian. Semua pengecualian dengan jenis string
atau Error
akan muncul di bagian Error di panel debug saat mode pratinjau diaktifkan. Saat beberapa pemeriksaan kebijakan didaftarkan, setiap pemeriksaan akan dipanggil, dan setiap pemeriksaan memiliki kemampuan untuk menolak permintaan kebijakan.
Contoh ini membuat kebijakan yang memeriksa izin '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';
}
});
Contoh ini menggunakan kata kunci 'all'
untuk memeriksa beberapa skenario kebijakan:
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;
}
});