นโยบายเทมเพลตที่กำหนดเอง

มีการใช้นโยบายในหน้าเว็บ เมื่อคอนเทนเนอร์ทำงานในหน้าเว็บ ระบบจะใช้นโยบายกับคำจำกัดความของเทมเพลตที่กำหนดเองของ Tag Manager เพื่อควบคุมวิธีใช้ฟีเจอร์และฟังก์ชันบางอย่าง ใช้นโยบายกับ gtag('policy', ...) API

gtag('policy', ...) API ต้องมีคำนิยามสำหรับ dataLayer และ gtag() ตรวจสอบว่ามีการกำหนด dataLayer และ gtag() ในโค้ดของคุณก่อนจะมีการเรียก gtag('policy', ...) ในสคริปต์ในภายหลัง

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

ใช้ gtag('policy', ...) API ในหน้าเว็บเพื่อกำหนดนโยบายสำหรับสิทธิ์ของเทมเพลตที่กำหนดเอง ดังนี้

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

อาร์กิวเมนต์ <permissionId> คือสิทธิ์ประเภทหนึ่งที่รองรับ เช่น inject_script ระบบจะเรียกใช้นโยบายนี้ทุกครั้งที่คอนเทนเนอร์ต้องการตรวจสอบว่าสิทธิ์ดังกล่าวได้รับอนุญาตหรือไม่

gtag('policy', 'inject_script', function(containerId, permissionId, data) {
 
// Specific inject_script check goes here.
});

ระบุ 'all' เพื่อโต้ตอบกับการตรวจสอบนโยบายทั้งหมด

gtag('policy', 'all', function(containerId, permissionId, data) {
 
// System-wide check goes here.
});

อาร์กิวเมนต์ที่ 3 <function> คือฟังก์ชันที่นำนโยบายที่ระบุพร้อมลายเซ็นนี้ไปใช้

function(containerId, permissionId, data) {...}
  • containerId คือรหัสคอนเทนเนอร์ Tag Manager เช่น 'GTM-1234'
  • permissionId คือสตริงที่ระบุประเภทของนโยบายที่จะตรวจสอบ
  • data เป็นออบเจ็กต์ที่มีข้อมูลที่เกี่ยวข้องกับประเภทสิทธิ์ที่ระบุ เช่น 'url' สำหรับสิทธิ์ 'send_pixel'

ฟังก์ชันนโยบายจะปฏิเสธคำขอสิทธิ์เมื่อแสดงผล false หรือส่งข้อยกเว้น ข้อยกเว้นประเภท string หรือ Error จะปรากฏในส่วนข้อผิดพลาดของแผงแก้ไขข้อบกพร่องเมื่อเปิดใช้โหมดแสดงตัวอย่าง เมื่อมีการลงทะเบียนการตรวจสอบนโยบายหลายรายการ ระบบจะเรียกใช้การตรวจสอบแต่ละรายการ และการตรวจสอบแต่ละรายการจะปฏิเสธคำขอนโยบายได้

ตัวอย่างนี้จะสร้างนโยบายที่ตรวจสอบสิทธิ์ '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';
 
}
});

ตัวอย่างนี้ใช้คีย์เวิร์ด 'all' เพื่อตรวจสอบสถานการณ์เกี่ยวกับนโยบายต่างๆ

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