API เทมเพลตที่กำหนดเอง

Core API

API เหล่านี้ทํางานร่วมกับ JavaScript ที่อยู่ในแซนด์บ็อกซ์เพื่อสร้างเทมเพลตที่กําหนดเองใน Google Tag Manager ระบบจะเพิ่ม API แต่ละรายการด้วยคำสั่ง require() เช่น

const myAPI = require('myAPI');

addConsentListener

ลงทะเบียนฟังก์ชัน Listener ให้ทํางานเมื่อสถานะของประเภทความยินยอมที่ระบุมีการเปลี่ยนแปลง

ระบบจะเรียกใช้ตัวฟังที่ระบุทุกครั้งที่สถานะความยินยอมประเภทที่ระบุเปลี่ยนจาก "ถูกปฏิเสธ" เป็น "ได้รับอนุญาต" หรือจาก "ได้รับอนุญาต" เป็น "ถูกปฏิเสธ" ระบบจะถือว่าความยินยอมประเภทที่ไม่มีสถานะเป็น "ได้รับความยินยอมแล้ว" ดังนั้นระบบจะไม่เรียกฟังก์ชันการฟังหากอัปเดตความยินยอมประเภทที่ยังไม่ได้กำหนดเป็น "ได้รับความยินยอมแล้ว" ฟังก์ชัน Listener จะมีหน้าที่ตรวจสอบว่าโค้ดทำงานตามจำนวนครั้งที่เหมาะสม

ตัวอย่างเช่น

const isConsentGranted = require('isConsentGranted');
const addConsentListener = require('addConsentListener');

if (!isConsentGranted('ad_storage')) {
  let wasCalled = false;
  addConsentListener('ad_storage', (consentType, granted) => {
    if (wasCalled) return;
    wasCalled = true;

    const cookies = getMyCookies();
    sendFullPixel(cookies);
  });
}

ไวยากรณ์

addConsentListener(consentType, listener)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
consentType สตริง ประเภทความยินยอมที่จะฟังการเปลี่ยนแปลงสถานะ
listener function ฟังก์ชันที่จะทํางานเมื่อสถานะของประเภทความยินยอมที่ระบุมีการเปลี่ยนแปลง

เมื่อเรียกใช้ Listener ระบบจะส่งประเภทความยินยอมที่กำลังเปลี่ยนแปลงและค่าใหม่ของประเภทความยินยอมนั้น

พารามิเตอร์ ประเภท คำอธิบาย
consentType สตริง ประเภทความยินยอมที่มีการเปลี่ยนแปลง
granted บูลีน บูลีนที่มีค่าเป็นจริงหากมีการเปลี่ยนแปลงประเภทความยินยอมที่ระบุเป็น "ให้ความยินยอมแล้ว"

สิทธิ์ที่เชื่อมโยง

สิทธิ์ access_consent พร้อมสิทธิ์การอ่านสําหรับประเภทความยินยอม


addEventCallback

addEventCallback API ช่วยให้คุณลงทะเบียนฟังก์ชัน Callback ที่จะเรียกใช้เมื่อเหตุการณ์สิ้นสุด ระบบจะเรียกใช้การเรียกกลับเมื่อแท็กทั้งหมดสําหรับเหตุการณ์ทํางานแล้ว หรือเมื่อหมดเวลาของเหตุการณ์ในหน้าเว็บ ฟังก์ชันการเรียกกลับจะได้รับค่า 2 ค่า ได้แก่ รหัสของคอนเทนเนอร์ที่เรียกใช้ฟังก์ชัน และออบเจ็กต์ที่มีข้อมูลเกี่ยวกับเหตุการณ์

ไวยากรณ์

addEventCallback(callback)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
callback function ฟังก์ชันที่จะเรียกใช้เมื่อสิ้นสุดเหตุการณ์

ออบเจ็กต์ eventData มีข้อมูลต่อไปนี้

ชื่อคีย์ ประเภท คำอธิบาย
tags อาร์เรย์ อาร์เรย์ของออบเจ็กต์ข้อมูลแท็ก แท็กทุกรายการที่เริ่มทํางานระหว่างเหตุการณ์จะมีรายการในอาร์เรย์นี้ ออบเจ็กต์ข้อมูลแท็กประกอบด้วยรหัสของแท็ก (id) สถานะการทํางาน (status) และเวลาทํางาน (executionTime) นอกจากนี้ ข้อมูลแท็กจะมีข้อมูลเมตาแท็กเพิ่มเติมที่กําหนดค่าไว้ในแท็กด้วย

ตัวอย่าง

addEventCallback(function(ctid, eventData) {
  logToConsole('Tag count for container ' + ctid + ': ' + eventData['tags'].length);
});

สิทธิ์ที่เชื่อมโยง

read_event_metadata


aliasInWindow

aliasInWindow API ช่วยให้คุณสร้างอีเมลแทนได้ (เช่น window.foo = window.bar) ซึ่งช่วยรองรับแท็กบางรายการที่ต้องใช้อีเมลแทน กําหนดค่าในออบเจ็กต์ window ที่พบที่ fromPath ให้กับคีย์ในออบเจ็กต์ window ที่ toPath แสดงผล true หากสําเร็จ หรือ false หากไม่สําเร็จ

ไวยากรณ์

aliasInWindow(toPath, fromPath)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
toPath สตริง เส้นทางที่คั่นด้วยจุดไปยังออบเจ็กต์ window ที่ควรคัดลอกค่าไป คอมโพเนนต์ทั้งหมดในเส้นทางจนถึงคอมโพเนนต์สุดท้ายต้องอยู่ในออบเจ็กต์ window อยู่แล้ว
fromPath สตริง เส้นทางที่คั่นด้วยจุดใน window ไปยังค่าที่จะคัดลอก หากไม่มีค่าดังกล่าว การดำเนินการจะล้มเหลว

ตัวอย่าง

aliasInWindow('foo.bar', 'baz.qux')

สิทธิ์ที่เชื่อมโยง

access_globals ต้องใช้กับทั้ง toPath และ fromPath โดย toPath ต้องมีสิทธิ์เขียน ส่วน fromPath ต้องมีสิทธิ์อ่าน


callInWindow

ให้คุณเรียกใช้ฟังก์ชันจากเส้นทางนอกออบเจ็กต์ window ในลักษณะที่ควบคุมโดยนโยบาย เรียกใช้ฟังก์ชันที่เส้นทางที่ระบุใน window ด้วยอาร์กิวเมนต์ที่ระบุและแสดงผลค่า หากจับคู่ประเภทผลลัพธ์กับประเภทที่รองรับใน JavaScript ที่ใช้แซนด์บ็อกซ์ไม่ได้ ระบบจะแสดง undefined ประเภทที่รองรับใน JavaScript ที่ใช้แซนด์บ็อกซ์มี 8 ประเภท ได้แก่ null, undefined, boolean, number, string, Array, Object และ function หากไม่มีเส้นทางที่ระบุหรือไม่ได้อ้างอิงฟังก์ชัน ระบบจะแสดง undefined

ไวยากรณ์

callInWindow(pathToFunction, argument [, argument2,... argumentN])

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
pathToFunction สตริง เส้นทางที่คั่นด้วยจุดไปยังฟังก์ชันใน window เพื่อเรียกใช้
args * อาร์กิวเมนต์ที่จะส่งไปยังฟังก์ชัน

สิทธิ์ที่เชื่อมโยง

access_globals ที่เปิดใช้สิทธิ์ execute


callLater

กําหนดเวลาการเรียกใช้ฟังก์ชันให้เกิดขึ้นแบบไม่พร้อมกัน ระบบจะเรียกใช้ฟังก์ชันนี้หลังจากที่โค้ดปัจจุบันแสดงผล ซึ่งเทียบเท่ากับ setTimeout(<function>, 0)

ไวยากรณ์

callLater(function)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
function function ฟังก์ชันที่จะเรียกใช้

copyFromDataLayer

แสดงผลค่าที่กําหนดให้กับคีย์ที่ระบุในชั้นข้อมูล ณ ปัจจุบัน ค่าที่พบในคีย์ที่ระบุหากเป็นประเภทพื้นฐาน ฟังก์ชัน หรือค่าตัวอักษรล้วนของออบเจ็กต์ หรือ undefined หากไม่ใช่

ไวยากรณ์

copyFromDataLayer(key[, dataLayerVersion])

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
key สตริง คีย์ในรูปแบบ "a.b.c"
dataLayerVersion number เวอร์ชันชั้นข้อมูล (ไม่บังคับ) ค่าเริ่มต้นคือ 2 ไม่แนะนําอย่างยิ่งให้ใช้ค่า 1

สิทธิ์ที่เชื่อมโยง

read_data_layer


copyFromWindow

คัดลอกตัวแปรจากออบเจ็กต์ window หากค่าใน window แมปกับประเภทที่รองรับใน JavaScript ที่ใช้แซนด์บ็อกซ์ไม่ได้ ระบบจะแสดง undefined ประเภท 8 ประเภทที่รองรับใน JavaScript ที่ใช้แซนด์บ็อกซ์ ได้แก่ null, undefined, boolean, number, string, Array, Object และ function แสดงผลค่าที่ดึงข้อมูล (และบังคับให้เปลี่ยนประเภท)

ไวยากรณ์

copyFromWindow(key)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
key สตริง คีย์ใน window ที่จะคัดลอกค่า

สิทธิ์ที่เชื่อมโยง

access_globals


createArgumentsQueue

สร้างคิวที่สร้างขึ้นด้วยออบเจ็กต์อาร์กิวเมนต์เพื่อรองรับโซลูชันแท็กที่จําเป็น

สร้างฟังก์ชันในขอบเขตส่วนกลาง (เช่น window) โดยใช้อาร์กิวเมนต์ fnKey (ความหมายเหมือนกับ createQueue) หลังจากสร้างฟังก์ชันแล้ว API นี้จะสร้างอาร์เรย์ใน window (หากยังไม่มี) โดยใช้อาร์กิวเมนต์ arrayKey

เมื่อเรียกใช้ฟังก์ชันที่สร้างภายใต้ fnKey ระบบจะดันอาร์กิวเมนต์ ออบเจ็กต์ของฟังก์ชันนั้นลงในอาร์เรย์ที่สร้างภายใต้ arrayKey ค่าที่แสดงผลของ API คือฟังก์ชันที่สร้างภายใต้ fnKey

ฟังก์ชันนี้ต้องใช้การตั้งค่าการอ่านและการเขียนสําหรับ fnKey และ arrayKey ในสิทธิ์ access_globals

ตัวอย่างเช่น

const gtag = createArgumentsQueue('gtag', 'dataLayer');
gtag('set', {'currency': 'USD'});

ไวยากรณ์

createArgumentsQueue(fnKey, arrayKey)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
fnKey สตริง เส้นทางใน window ที่มีการตั้งค่าฟังก์ชัน หากยังไม่มี อาร์กิวเมนต์นี้รองรับรูปแบบจุดมาตรฐาน หากไม่มีเส้นทางของคีย์ ระบบจะแสดงข้อยกเว้น กล่าวคือ หาก fnKey เป็น 'one.two' ระบบจะแสดงข้อยกเว้น
arrayKey สตริง เส้นทางใน window ที่มีการตั้งค่าอาร์เรย์ หากยังไม่มี อาร์กิวเมนต์นี้รองรับรูปแบบจุดมาตรฐาน หากไม่มีเส้นทางของคีย์ ระบบจะแสดงข้อยกเว้น กล่าวคือ หาก arrayKey เป็น 'one.two' และไม่มีออบเจ็กต์ส่วนกลางชื่อ 'one' ระบบจะแสดงข้อยกเว้น

สิทธิ์ที่เชื่อมโยง

access_globals


createQueue

สร้างอาร์เรย์ใน window (หากยังไม่มี) และแสดงผลฟังก์ชันที่จะเพิ่มค่าลงในอาร์เรย์นั้น

ฟังก์ชันนี้ต้องใช้การตั้งค่าการอ่านและการเขียนสำหรับarrayKeyในสิทธิ์ access_globals

ตัวอย่างเช่น

const dataLayerPush = createQueue('dataLayer');
dataLayerPush({'currency': 'USD'}, {'event': 'myConversion'});

ไวยากรณ์

createQueue(arrayKey)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
arrayKey สตริง คีย์ใน window ที่กําหนดอาร์เรย์ หากยังไม่มี อาร์กิวเมนต์นี้รองรับรูปแบบจุดมาตรฐาน หากไม่มีเส้นทางของคีย์ ระบบจะแสดงข้อยกเว้น ตัวอย่างเช่น หาก arrayKey คือ 'one.two' และไม่มีออบเจ็กต์ส่วนกลางชื่อ 'one' ระบบจะแสดงข้อยกเว้น

สิทธิ์ที่เชื่อมโยง

access_globals


decodeUri

ถอดรหัสอักขระที่เข้ารหัสใน URI ที่ระบุ แสดงผลสตริงที่แสดง URI ที่ถอดรหัสแล้ว แสดงผล undefined เมื่อป้อนข้อมูลที่ไม่ถูกต้อง

ตัวอย่างเช่น

const decode = require('decodeUri');

const decodedUrl = decode(data.encodedUrl);
if (decodedUrl) {
  // ...
}

ไวยากรณ์

decodeUri(encoded_uri)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
encoded_uri สตริง URI ที่เข้ารหัสโดย encodeUri() หรือวิธีอื่นๆ

สิทธิ์ที่เชื่อมโยง

ไม่มี


decodeUriComponent

ถอดรหัสอักขระที่เข้ารหัสในคอมโพเนนต์ URI ที่ระบุ แสดงผลสตริงที่แสดงถึงคอมโพเนนต์ URI ที่ถอดรหัสแล้ว แสดงผล undefined เมื่อป้อนข้อมูลที่ไม่ถูกต้อง

ตัวอย่างเช่น

const decode = require('decodeUriComponent');

const decodedUrl = decode(data.encodedUrl);
if (decodedUrl) {
  // ...
}

ไวยากรณ์

decodeUriComponent(encoded_uri_component)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
encoded_uri_component สตริง คอมโพเนนต์ URI ที่เข้ารหัสโดย encodeUriComponent() หรือด้วยวิธีอื่นๆ

สิทธิ์ที่เชื่อมโยง

ไม่มี


encodeUri

แสดงผล Uniform Resource Identifier (URI) ที่เข้ารหัสโดยการหลีกหนีอักขระพิเศษ แสดงผลสตริงที่แสดงสตริงที่ระบุซึ่งเข้ารหัสเป็น URI แสดงผล undefined เมื่อได้รับอินพุตที่ไม่ถูกต้อง (ตัวแทนตัวเดียว)

ตัวอย่างเช่น

sendPixel('https://www.example.com/' + encodeUri(pathInput));

ไวยากรณ์

encodeUri(uri)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
uri สตริง URI ที่สมบูรณ์

สิทธิ์ที่เชื่อมโยง

ไม่มี


encodeUriComponent

แสดงผล Uniform Resource Identifier (URI) ที่เข้ารหัสโดยการหลีกหนีอักขระพิเศษ แสดงผลสตริงที่แสดงสตริงที่ระบุซึ่งเข้ารหัสเป็น URI แสดงผล undefined เมื่อได้รับอินพุตที่ไม่ถูกต้อง (ตัวแทนตัวเดียว)

ตัวอย่างเช่น

sendPixel('https://www.example.com/?' + encodeUriComponent(queryInput));

ไวยากรณ์

encodeUriComponent(str)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
str สตริง คอมโพเนนต์ของ URI

สิทธิ์ที่เชื่อมโยง

ไม่มี


fromBase64

fromBase64 API ช่วยให้คุณถอดรหัสสตริงจากการนําเสนอ Base64 ได้ แสดงผล undefined เมื่อป้อนข้อมูลที่ไม่ถูกต้อง

ไวยากรณ์

fromBase64(base64EncodedString)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
base64EncodedString สตริง สตริงที่เข้ารหัส Base64

ตัวอย่าง

const fromBase64 = require('fromBase64');

const greeting = fromBase64('aGVsbG8=');
if (greeting === 'hello') {
  // ...
}

สิทธิ์ที่เชื่อมโยง

ไม่มี


generateRandom

แสดงผลตัวเลข (จำนวนเต็ม) แบบสุ่มภายในช่วงที่กำหนด

ไวยากรณ์

generateRandom(min, max)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
min number ค่าที่เป็นไปได้ต่ำสุดของจำนวนเต็มที่แสดงผล
max number ค่าสูงสุดที่เป็นไปได้ของจำนวนเต็มที่แสดงผล

สิทธิ์ที่เชื่อมโยง

ไม่มี


getContainerVersion

แสดงผลออบเจ็กต์ที่มีข้อมูลเกี่ยวกับคอนเทนเนอร์ปัจจุบัน ออบเจ็กต์ที่แสดงผลจะมีฟิลด์ต่อไปนี้

{
  containerId: string,
  debugMode: boolean,
  environmentName: string,
  environmentMode: boolean,
  previewMode: boolean,
  version: string,
}

ตัวอย่าง

const getContainerVersion = require('getContainerVersion');
const sendPixel = require('sendPixel');

if (query('read_container_data')) {
  const cv = getContainerVersion();

  const pixelUrl = 'https://pixel.com/' +
    '?version=' + cv.version +
    '&envName=' + cv.environmentName +
    '&ctid=' + cv.containerId +
    '&debugMode=' + cv.debugMode +
    '&previewMode=' + cv.previewMode;
  if (query('send_pixel', pixelUrl)) {
    sendPixel(pixelUrl);
  }
}

ไวยากรณ์

getContainerVersion();

สิทธิ์ที่เชื่อมโยง

read_container_data


getCookieValues

แสดงค่าของคุกกี้ทั้งหมดที่มีชื่อที่ระบุ

ไวยากรณ์

getCookieValues(name[, decode])

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
name สตริง ชื่อของคุกกี้
decode บูลีน ควบคุมว่าจะถอดรหัสค่าคุกกี้ด้วย decodeURIComponent() ของ JavaScript หรือไม่ ค่าเริ่มต้นคือ true

สิทธิ์ที่เชื่อมโยง

get_cookies


getQueryParameters

แสดงผลพารามิเตอร์แรกหรือทั้งหมดสําหรับ queryKey ของ URL ปัจจุบัน แสดงผลค่าแรกจาก queryKey หรืออาร์เรย์ของค่าจาก queryKey

ไวยากรณ์

getQueryParameters(queryKey[, retrieveAll])

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
queryKey สตริง คีย์สําหรับอ่านจากพารามิเตอร์การค้นหา
retrieveAll บูลีน ดึงข้อมูลค่าทั้งหมดหรือไม่

ตัวอย่างเช่น หาก URL ปัจจุบันคือ https://example.com/path?var=foo&var1=foo1&var=foo2&var=foo

  • getQueryParameters('var') == 'foo'
  • getQueryParameters('var', false) == 'foo'
  • getQueryParameters('var', null) == 'foo'
  • getQueryParameters('var', true) == ['foo', 'foo2', 'foo']

สิทธิ์ที่เชื่อมโยง

get_url ต้องอนุญาตคอมโพเนนต์ query และต้องระบุ queryKey ในคีย์การค้นหาที่อนุญาต (หรืออนุญาตคีย์การค้นหาใดก็ได้)


getReferrerQueryParameters

getReferrerQueryParameters API ทํางานเหมือนกับ getQueryParameters ยกเว้นว่าจะทํางานกับ URL ที่มาแทน URL ปัจจุบัน แสดงผลพารามิเตอร์แรกหรือทั้งหมดสําหรับ queryKey ของ Referrer ที่ระบุ แสดงผลค่าแรกจาก queryKey หรืออาร์เรย์ของค่าจาก queryKey

ไวยากรณ์

getReferrerQueryParameters(queryKey[, retrieveAll])

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
queryKey สตริง คีย์สําหรับอ่านจากพารามิเตอร์การค้นหา
retrieveAll บูลีน ดึงข้อมูลค่าทั้งหมดหรือไม่

ตัวอย่างเช่น หาก URL ที่มาคือ https://example.com/path?var=foo&var1=foo1&var=foo2&var=foo

  • getReferrerQueryParameters('var') == 'foo'
  • getReferrerQueryParameters('var', false) == 'foo'
  • getReferrerQueryParameters('var', null) == 'foo'
  • getReferrerQueryParameters('var', true) == ['foo', 'foo2', 'foo']

สิทธิ์ที่เชื่อมโยง

get_referrer ต้องอนุญาตคอมโพเนนต์ query และต้องระบุ queryKey ในคีย์การค้นหาที่อนุญาต (หรืออนุญาตคีย์การค้นหาใดก็ได้)


getReferrerUrl

เมื่อระบุประเภทคอมโพเนนต์แล้ว API จะอ่านออบเจ็กต์เอกสารสําหรับ URL ที่มา และแสดงสตริงที่แสดง URL ที่มาบางส่วน หากไม่ระบุคอมโพเนนต์ ระบบจะแสดงผล URL ที่มาแบบเต็ม

ไวยากรณ์

getReferrerUrl([component])

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
component สตริง คอมโพเนนต์ที่จะแสดงผลจาก URL อาจเป็นค่าใดค่าหนึ่งต่อไปนี้ protocol, host, port, path, query, extension หาก component เป็น undefined, null หรือไม่ตรงกับคอมโพเนนต์ใดคอมโพเนนต์หนึ่งเหล่านี้ ระบบจะแสดง URL ทั้งหมด

สิทธิ์ที่เชื่อมโยง

get_referrer ต้องอนุญาตคอมโพเนนต์ query และต้องระบุ queryKey ในคีย์การค้นหาที่อนุญาต (หรืออนุญาตคีย์การค้นหาใดก็ได้)


getTimestamp

เลิกใช้งานแล้ว โปรดใช้ getTimestampMillis

แสดงผลตัวเลขที่แสดงเวลาปัจจุบันเป็นมิลลิวินาทีนับจาก Unix Epoch ตามที่ Date.now() แสดง

ไวยากรณ์

getTimestamp();

สิทธิ์ที่เชื่อมโยง

ไม่มี


getTimestampMillis

แสดงผลตัวเลขที่แสดงเวลาปัจจุบันเป็นมิลลิวินาทีนับจาก Unix Epoch ตามที่ Date.now() แสดง

ไวยากรณ์

getTimestampMillis();

สิทธิ์ที่เชื่อมโยง

ไม่มี


getType

แสดงผลสตริงที่อธิบายประเภทของค่าที่ระบุ getType จะแยกความแตกต่างระหว่าง array กับ object ต่างจาก typeof

ไวยากรณ์

getType(data.someField)

หมายเหตุ

ตารางต่อไปนี้แสดงสตริงที่แสดงผลสำหรับค่าอินพุตแต่ละค่า

ค่าอินพุต ผลลัพธ์
undefined 'undefined'
null 'null'
true 'boolean'
12 'number'
'string' 'string'
{ a: 3 } 'object'
[ 1, 3 ] 'array'
(x) => x + 1 'function'

สิทธิ์ที่เชื่อมโยง

ไม่มี


getUrl

แสดงผลสตริงที่แสดง URL ทั้งหมดหรือบางส่วนในปัจจุบัน โดยพิจารณาจากประเภทคอมโพเนนต์และพารามิเตอร์การกําหนดค่าบางอย่าง

ไวยากรณ์

getUrl(component)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
component สตริง คอมโพเนนต์ที่จะแสดงผลจาก URL ต้องเป็นหนึ่งในตัวเลือกต่อไปนี้ protocol, host, port, path, query, extension, fragment หากคอมโพเนนต์คือ undefined, null หรือไม่ตรงกับคอมโพเนนต์ใดคอมโพเนนต์หนึ่งเหล่านี้ ระบบจะแสดงผลค่า href ทั้งหมด

สิทธิ์ที่เชื่อมโยง

get_url


gtagSet

พุชคําสั่ง gtag set ไปยังชั้นข้อมูลเพื่อประมวลผลโดยเร็วที่สุดหลังจากเหตุการณ์ปัจจุบันและแท็กที่ทริกเกอร์เสร็จสิ้นการประมวลผลแล้ว (หรือถึงเวลาหมดเวลาการประมวลผลแท็ก) ระบบรับประกันว่าจะมีการประมวลผลการอัปเดตในคอนเทนเนอร์นี้ก่อนรายการใดๆ ที่รออยู่ในคิวของเลเยอร์ข้อมูล

เช่น หากเรียกใช้โดยแท็กที่เริ่มทํางานในการเริ่มต้นขอความยินยอม ระบบจะใช้การอัปเดตก่อนที่จะประมวลผลเหตุการณ์การเริ่มต้น ตัวอย่างคือการตั้งค่า ads_data_redaction เป็น true หรือ false หรือ url_passthrough มีการตั้งค่าเป็น true หรือ false

ตัวอย่างเช่น

const gtagSet = require('gtagSet');

gtagSet({
  'ads_data_redaction': true,
  'url_passthrough': true,
});

ไวยากรณ์

gtagSet(object)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
Object object ออบเจ็กต์ที่อัปเดตสถานะส่วนกลางสำหรับพร็อพเพอร์ตี้ที่รวมอยู่

สิทธิ์ที่เชื่อมโยง

write_data_layer จะตรวจสอบสิทธิ์การเขียนใน dataLayer สำหรับคีย์ที่ระบุทั้งหมด หากอินพุตของ gtagSet เป็นออบเจ็กต์ธรรมดา API จะตรวจสอบสิทธิ์การเขียนสำหรับคีย์แบบแบนทั้งหมดภายในออบเจ็กต์นั้น เช่น สำหรับ gtagSet({foo: {bar: 'baz'}}) API จะตรวจสอบสิทธิ์การเขียนสำหรับ foo.bar

หากอินพุตของ gtagSet เป็นคีย์และค่าออบเจ็กต์ที่ไม่ใช่ค่าธรรมดา API จะตรวจสอบสิทธิ์การเขียนในคีย์นั้น เช่น สำหรับ gtagSet('abc', true) API จะตรวจสอบสิทธิ์การเขียนใน 'abc'

โปรดทราบว่าหากออบเจ็กต์อินพุตมีรอบ จะมีการตรวจสอบเฉพาะคีย์ก่อนถึงออบเจ็กต์เดียวกัน


injectHiddenIframe

เพิ่ม iframe ที่ซ่อนอยู่ในหน้า

Callback จะแสดงเป็นอินสแตนซ์ของฟังก์ชันและรวมอยู่ในฟังก์ชัน JavaScript ที่เรียกใช้ Callback

ไวยากรณ์

injectHiddenIframe(url, onSuccess)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
url สตริง URL ที่จะใช้เป็นค่าของแอตทริบิวต์ src ของ iframe
onSuccess function เรียกใช้เมื่อเฟรมโหลดสําเร็จ

สิทธิ์ที่เชื่อมโยง

inject_hidden_iframe


injectScript

เพิ่มแท็กสคริปต์ลงในหน้าเว็บเพื่อโหลด URL ที่ระบุแบบไม่พร้อมกัน ฟังก์ชัน Callback จะแสดงเป็นอินสแตนซ์ของฟังก์ชัน และรวมอยู่ในฟังก์ชัน JavaScript ที่เรียกใช้

ไวยากรณ์

injectScript(url, onSuccess, onFailure[, cacheToken])

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
url สตริง ที่อยู่ของสคริปต์ที่จะแทรก
onSuccess function เรียกใช้เมื่อโหลดสคริปต์สําเร็จ
onFailure function เรียกใช้เมื่อโหลดสคริปต์ไม่สำเร็จ
cacheToken สตริง สตริงที่ไม่บังคับซึ่งใช้เพื่อระบุว่าควรแคช URL ที่ระบุ หากระบุค่านี้ ระบบจะสร้างองค์ประกอบสคริปต์เพียงรายการเดียวเพื่อขอ JavaScript การพยายามโหลดเพิ่มเติมจะส่งผลให้มีการจัดคิวเมธอด onSuccess และ onFailure ที่ให้ไว้จนกว่าสคริปต์จะโหลด

สิทธิ์ที่เชื่อมโยง

inject_script


isConsentGranted

แสดงผลเป็น "จริง" หากได้รับความยินยอมในประเภทที่ระบุ

ระบบจะถือว่าความยินยอมสำหรับประเภทความยินยอมหนึ่งๆ ได้รับความยินยอมแล้วหากมีการตั้งค่าประเภทความยินยอมเป็น "ได้รับความยินยอมแล้ว" หรือไม่ได้มีการตั้งค่าเลย หากตั้งค่าประเภทความยินยอมเป็นค่าอื่น ระบบจะถือว่าไม่ยินยอม

อินเทอร์เฟซผู้ใช้ของ Tag Manager สําหรับการตั้งค่าแท็กจะมีตัวเลือกให้ทํางานเสมอ หากแท็กที่เปิด "เริ่มทํางานเสมอ" ใช้ API นี้ ระบบจะถือว่าได้รับความยินยอมและจะแสดงผล true โดยไม่คำนึงถึงสถานะความยินยอมจริง

ตัวอย่างเช่น

const isConsentGranted = require('isConsentGranted');

if (isConsentGranted('ad_storage')) {
  sendFullPixel();
} else {
  sendPixelWithoutCookies();
}

ไวยากรณ์

isConsentGranted(consentType)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
consentType สตริง ประเภทความยินยอมที่จะตรวจสอบสถานะ

สิทธิ์ที่เชื่อมโยง

สิทธิ์ access_consent พร้อมสิทธิ์การอ่านสําหรับประเภทความยินยอม


JSON

แสดงผลออบเจ็กต์ที่มีฟังก์ชัน JSON

ฟังก์ชัน parse() จะแยกวิเคราะห์สตริง JSON เพื่อสร้างค่าหรือออบเจ็กต์ที่อธิบายโดยสตริง หากแยกวิเคราะห์ค่าไม่ได้ (เช่น JSON อยู่ในรูปแบบที่ไม่ถูกต้อง) ฟังก์ชันจะแสดงผล undefined หากค่าอินพุตไม่ใช่สตริง ระบบจะบังคับให้อินพุตเป็นสตริง

ฟังก์ชัน stringify() จะแปลงอินพุตเป็นสตริง JSON หากไม่สามารถแยกวิเคราะห์ค่าได้ (เช่น ออบเจ็กต์มีวงจร) เมธอดจะแสดงผล undefined

ไวยากรณ์

JSON.parse(stringInput)
JSON.stringify(value);

พารามิเตอร์

JSON.parse

พารามิเตอร์ ประเภท คำอธิบาย
stringInput any ค่าที่จะแปลง หากค่าไม่ใช่สตริง ระบบจะบังคับให้อินพุตเป็นสตริง

JSON.stringify

พารามิเตอร์ ประเภท คำอธิบาย
value any ค่าที่จะแปลง

ตัวอย่าง

const JSON = require('JSON');

// The JSON input string is converted to an object.
const object = JSON.parse('{"foo":"bar"}');

// The input object is converted to a JSON string.
const str = JSON.stringify({foo: 'bar'});

localStorage

แสดงผลออบเจ็กต์ที่มีเมธอดสําหรับการเข้าถึงพื้นที่เก็บข้อมูลในเครื่อง

ไวยากรณ์

const localStorage = require('localStorage');

// Requires read access for the key. Returns null if the key does not exist.
localStorage.getItem(key);

// Requires write access for the key. Returns true if successful.
localStorage.setItem(key, value);

// Requires write access for the key.
localStorage.removeItem(key);

สิทธิ์ที่เชื่อมโยง

access_local_storage

ตัวอย่าง

const localStorage = require('localStorage');
if (localStorage) {
  const value = localStorage.getItem('my_key');
  if (value) {
    const success = localStorage.setItem('my_key', 'new_value');
    if (success) {
      localStorage.removeItem('my_key');
    }
  }
}

logToConsole

บันทึกอาร์กิวเมนต์ลงในคอนโซลเบราว์เซอร์

ไวยากรณ์

logToConsole(obj1 [, obj2,... objN])

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
obj1 [, obj2,... objN] any อาร์กิวเมนต์

สิทธิ์ที่เชื่อมโยง

logging


makeInteger

แปลงค่าที่ระบุเป็นตัวเลข (จำนวนเต็ม)

ไวยากรณ์

makeInteger(value)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
value any ค่าที่จะแปลง

สิทธิ์ที่เชื่อมโยง

ไม่มี


makeNumber

แปลงค่าที่ระบุเป็นตัวเลข

ไวยากรณ์

makeNumber(value)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
value any ค่าที่จะแปลง

สิทธิ์ที่เชื่อมโยง

ไม่มี


makeString

แสดงผลค่าที่ระบุเป็นสตริง

ไวยากรณ์

makeString(value)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
value any ค่าที่จะแปลง

สิทธิ์ที่เชื่อมโยง

ไม่มี


makeTableMap

แปลงออบเจ็กต์ตารางแบบง่ายที่มี 2 คอลัมน์เป็น Map ซึ่งใช้เพื่อเปลี่ยนSIMPLE_TABLEฟิลด์เทมเพลตที่มี 2 คอลัมน์ให้เป็นรูปแบบที่จัดการได้ง่ายขึ้น

เช่น ฟังก์ชันนี้อาจแปลงออบเจ็กต์ตาราง

[
  {'key': 'k1', 'value': 'v1'},
  {'key': 'k2', 'value': 'v2'}
]

ลงในแผนที่

{
  'k1': 'v1',
  'k2': 'v2'
}

แสดงผลออบเจ็กต์: Map ที่แปลงแล้วหากมีการเพิ่มคู่คีย์-ค่าเข้าไป หรือ null ในกรณีอื่นๆ

ไวยากรณ์

makeTableMap(tableObj, keyColumnName, valueColumnName)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
tableObj List ออบเจ็กต์ตารางที่จะแปลง นั่นคือรายการแผนที่ที่แต่ละMapแสดงถึงแถวในตาราง ชื่อพร็อพเพอร์ตี้แต่ละรายการในออบเจ็กต์แถวคือชื่อคอลัมน์ และค่าพร็อพเพอร์ตี้คือค่าคอลัมน์ในแถว
keyColumnName สตริง ชื่อคอลัมน์ที่ค่าจะกลายเป็นคีย์ในMapที่แปลงแล้ว
valueColumnName สตริง ชื่อคอลัมน์ที่ค่าจะกลายเป็นค่าในMapที่แปลงแล้ว

สิทธิ์ที่เชื่อมโยง

ไม่มี


Math

ออบเจ็กต์ที่มีฟังก์ชัน Math

ไวยากรณ์

const Math = require('Math');

// Retrieve the absolute value.
const absolute = Math.abs(-3);

// Round the input down to the nearest integer.
const roundedDown = Math.floor(3.6);

// Round the input up to the nearest integer.
const roundedUp = Math.ceil(2.2);

// Round the input to the nearest integer.
const rounded = Math.round(3.1);

// Return the largest argument.
const biggest = Math.max(1, 3);

// Return the smallest argument.
const smallest = Math.min(3, 5);

// Return the first argument raised to the power of the second argument.
const powerful = Math.pow(3, 1);

// Return the square root of the argument.
const unsquared = Math.sqrt(9);

พารามิเตอร์

ระบบจะแปลงพารามิเตอร์ของฟังก์ชันคณิตศาสตร์เป็นตัวเลข

สิทธิ์ที่เชื่อมโยง

ไม่มี


Object

แสดงผลออบเจ็กต์ที่มีเมธอด Object

เมธอด keys() มีลักษณะการทํางานของ Object.keys() ในไลบรารีมาตรฐาน โดยจะแสดงผลอาร์เรย์ของชื่อพร็อพเพอร์ตี้ที่นับได้ของออบเจ็กต์หนึ่งๆ ในลําดับเดียวกับที่ลูป for...in... จะแสดง หากค่าอินพุตไม่ใช่ออบเจ็กต์ ระบบจะบังคับให้ค่าเป็นออบเจ็กต์

เมธอด values() มีลักษณะการทํางานของ Object.values() ในไลบรารีมาตรฐาน โดยจะแสดงผลอาร์เรย์ของค่าพร็อพเพอร์ตี้ที่เอนกประสงค์ของออบเจ็กต์หนึ่งๆ ในลําดับเดียวกับที่ลูป for...in... จะแสดง หากค่าอินพุตไม่ใช่ออบเจ็กต์ ระบบจะบังคับให้ค่าเป็นออบเจ็กต์

เมธอด entries() มีลักษณะการทํางานของ Object.entries() ในไลบรารีมาตรฐาน โดยจะแสดงผลอาร์เรย์ของคู่พร็อพเพอร์ตี้ที่นับได้ของออบเจ็กต์หนึ่งๆ ในลําดับเดียวกับที่ลูป for...in... จะแสดง[key, value] หากค่าอินพุตไม่ใช่ออบเจ็กต์ ระบบจะบังคับให้ค่าเป็นออบเจ็กต์

เมธอด freeze() มีลักษณะการทำงาน Object.freeze() ของไลบรารีมาตรฐาน ออบเจ็กต์ที่หยุดทำงานจะเปลี่ยนแปลงไม่ได้อีกต่อไป การหยุดทำงานของออบเจ็กต์จะป้องกันไม่ให้มีการเพิ่มพร็อพเพอร์ตี้ใหม่ ลบพร็อพเพอร์ตี้ที่มีอยู่ และเปลี่ยนแปลงค่าของพร็อพเพอร์ตี้ที่มีอยู่ freeze() จะแสดงผลออบเจ็กต์เดียวกันกับที่ส่งเข้ามา ระบบจะถือว่าอาร์กิวเมนต์พื้นฐานหรือ Null เป็นออบเจ็กต์ที่หยุดทำงานและจะแสดงผล

เมธอด delete() มีลักษณะการทํางานของโอเปอเรเตอร์ delete ของไลบรารีมาตรฐาน ซึ่งจะนําคีย์ที่ระบุออกจากออบเจ็กต์ เว้นแต่ว่าออบเจ็กต์จะหยุดไว้ เช่นเดียวกับโอเปอเรเตอร์ delete ของไลบรารีมาตรฐาน ฟังก์ชันนี้จะแสดงผล true หากค่าอินพุตแรก (objectInput) เป็นออบเจ็กต์ที่ไม่ได้ตรึงไว้ แม้ว่าค่าอินพุตที่ 2 (keyToDelete) จะระบุคีย์ที่ไม่มีอยู่ก็ตาม และจะแสดงผลเป็น false ในกรณีอื่นๆ ทั้งหมด อย่างไรก็ตาม การดำเนินการนี้จะแตกต่างจากโอเปอเรเตอร์การลบของไลบรารีมาตรฐานดังนี้

  • keyToDelete ต้องไม่เป็นสตริงที่คั่นด้วยจุดซึ่งระบุคีย์ที่ฝังอยู่
  • คุณใช้ delete() เพื่อนำองค์ประกอบออกจากอาร์เรย์ไม่ได้
  • คุณใช้ delete() เพื่อนำพร็อพเพอร์ตี้ออกจากขอบเขตส่วนกลางไม่ได้

ไวยากรณ์

Object.keys(objectInput)
Object.values(objectInput)
Object.entries(objectInput)
Object.freeze(objectInput)
Object.delete(objectInput, keyToDelete)

พารามิเตอร์

Object.keys

พารามิเตอร์ ประเภท คำอธิบาย
objectInput any ออบเจ็กต์ที่มีคีย์ที่จะแจกแจง หากอินพุตไม่ใช่ออบเจ็กต์ ระบบจะบังคับให้เป็นออบเจ็กต์

Object.values

พารามิเตอร์ ประเภท คำอธิบาย
objectInput any ออบเจ็กต์ที่จะแสดงค่า หากอินพุตไม่ใช่ออบเจ็กต์ ระบบจะบังคับให้เป็นออบเจ็กต์

Object.entries

พารามิเตอร์ ประเภท คำอธิบาย
objectInput any ออบเจ็กต์ที่มีคู่คีย์/ค่าที่จะแสดงรายการ หากอินพุตไม่ใช่ออบเจ็กต์ ระบบจะบังคับให้เป็นออบเจ็กต์

Object.freeze

พารามิเตอร์ ประเภท คำอธิบาย
objectInput any วัตถุที่จะหยุด หากอินพุตไม่ใช่ออบเจ็กต์ ระบบจะถือว่าอินพุตนั้นเป็นออบเจ็กต์แบบคงที่

Object.delete

พารามิเตอร์ ประเภท คำอธิบาย
objectInput any ออบเจ็กต์ที่จะลบคีย์
keyToDelete สตริง คีย์ระดับบนสุดที่จะลบ

ตัวอย่าง

const Object = require('Object');

// The keys of an object are enumerated in an array.
const keys = Object.keys({foo: 'bar'});

// The values of an object are enumerated in an array.
const values = Object.values({foo: 'bar'});

// The key/value pairs of an object are enumerated in an array.
const entries = Object.entries({foo: 'bar'});

// The input object is frozen.
const frozen = Object.freeze({foo: 'bar'});

// The key is removed from the input object.
const obj1 = {deleteme: 'value'};
Object.delete(obj1, 'deleteme');
// Only a top-level key can be specified as the key to delete.
const obj2 = {nested: {key: 'value'}};
Object.delete(obj2, 'nested.key'); // This has no effect.
Object.delete(obj2.nested, 'key'); // This deletes the nested key.

parseUrl

แสดงผลออบเจ็กต์ที่มีองค์ประกอบทั้งหมดของ URL ที่ระบุ ซึ่งคล้ายกับออบเจ็กต์ URL

API นี้จะแสดงผล undefined สำหรับ URL ที่มีรูปแบบไม่ถูกต้อง สำหรับ URL ที่มีรูปแบบถูกต้อง ฟิลด์ที่ไม่มีอยู่ในสตริง URL จะมีค่าเป็นสตริงว่าง หรือในกรณีของ searchParams จะเป็นออบเจ็กต์ว่าง

ออบเจ็กต์ที่แสดงผลจะมีฟิลด์ต่อไปนี้

{
  href: string,
  origin: string,
  protocol: string,
  username: string,
  password: string,
  host: string,
  hostname: string,
  port: string,
  pathname: string,
  search: string,
  searchParams: Object<string, (string|Array)>,
  hash: string,
}

ตัวอย่าง

const parseUrl = require('parseUrl');

const urlObject = parseUrl('https://abc:xyz@example.com:8080/foo?param=val%2Cue#bar');

ไวยากรณ์

parseUrl(url);

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
url สตริง URL แบบเต็มที่จะแยกวิเคราะห์

สิทธิ์ที่เชื่อมโยง

ไม่มี


queryPermission

ค้นหาสิทธิ์ที่ได้รับอนุญาตและสิทธิ์ที่แคบลง แสดงผล boolean: true หากได้รับสิทธิ์ false ในกรณีอื่นๆ

ไวยากรณ์

queryPermission(permission, functionArgs*)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
permission สตริง ชื่อสิทธิ์
functionArgs any อาร์กิวเมนต์ของฟังก์ชันจะแตกต่างกันไปตามสิทธิ์ที่ค้นหา ดูอาร์กิวเมนต์ของฟังก์ชันด้านล่าง

อาร์กิวเมนต์ของฟังก์ชัน

sendPixel, injectScript, injectHiddenIframe: พารามิเตอร์ที่ 2 ควรเป็นสตริง URL

writeGlobals, readGlobals: พารามิเตอร์ที่ 2 ควรเป็นคีย์ที่จะเขียนหรืออ่าน

readUrl: ไม่จำเป็นต้องใช้อาร์กิวเมนต์เพิ่มเติมเพื่อสอบถามว่าอ่าน URL ทั้งหมดได้หรือไม่ หากต้องการสอบถามว่าอ่านคอมโพเนนต์หนึ่งๆ ได้หรือไม่ ให้ส่งชื่อคอมโพเนนต์เป็นอาร์กิวเมนต์ที่ 2 ดังนี้

if (queryPermission('readUrl','port')) {
  // read the port
}

หากต้องการตรวจสอบว่าอ่านคีย์การค้นหาที่เฉพาะเจาะจงได้หรือไม่ ให้ส่งคีย์การค้นหาเป็นพารามิเตอร์ที่ 3 ดังนี้

if (queryPermission('readUrl','query','key')) {
  getUrlComponent(...);
}

สิทธิ์ที่เชื่อมโยง

ไม่มี


readCharacterSet

แสดงผลค่าของ document.characterSet

ไวยากรณ์

readCharacterSet()

พารามิเตอร์

ไม่มี

สิทธิ์ที่เชื่อมโยง

read_character_set


readTitle

แสดงผลค่าของ document.title

ไวยากรณ์

readTitle()

พารามิเตอร์

ไม่มี

สิทธิ์ที่เชื่อมโยง

read_title


require

นําเข้าฟังก์ชันในตัวตามชื่อ แสดงผลฟังก์ชันหรือออบเจ็กต์ที่เรียกใช้จากโปรแกรมได้ แสดงผลเป็น undefined เมื่อเบราว์เซอร์ไม่รองรับฟังก์ชันในตัว

ไวยากรณ์

require(name)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
name สตริง ชื่อของฟังก์ชันที่จะนําเข้า

ตัวอย่าง

const getUrl = require('getUrl');
const url = getUrl();

สิทธิ์ที่เชื่อมโยง

ไม่มี


sendPixel

ส่งคําขอ GET ไปยังปลายทาง URL ที่ระบุ

ไวยากรณ์

sendPixel(url, onSuccess, onFailure)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
url สตริง ตำแหน่งที่จะส่งพิกเซล
onSuccess function เรียกใช้เมื่อโหลดพิกเซลสําเร็จ หมายเหตุ: แม้ว่าจะส่งคําขอสําเร็จแล้ว แต่เบราว์เซอร์อาจต้องการการตอบกลับรูปภาพที่ถูกต้องเพื่อเรียกใช้ onSuccess
onFailure function เรียกใช้เมื่อพิกเซลโหลดไม่สําเร็จ หมายเหตุ: แม้ว่าจะส่งคําขอสําเร็จแล้ว onFailure อาจทํางานหากเซิร์ฟเวอร์ไม่แสดงการตอบกลับรูปภาพที่ถูกต้อง

สิทธิ์ที่เชื่อมโยง

send_pixel


setCookie

ตั้งค่าหรือลบคุกกี้ด้วยชื่อ ค่า และตัวเลือกที่ระบุ

ไวยากรณ์

setCookie(name, value[, options, encode])

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
name สตริง ชื่อของคุกกี้
value สตริง ค่าของคุกกี้
options object ระบุแอตทริบิวต์โดเมน, เส้นทาง, หมดอายุ, Max-Age, Secure และ SameSite (ดูตัวเลือกด้านล่าง)
encode บูลีน ควบคุมว่าจะเข้ารหัสค่าคุกกี้ด้วย encodeURIComponent() ของ JavaScript หรือไม่ ค่าเริ่มต้นคือ true

ตัวเลือก

  • โดเมน: ตั้งค่าโดยพร็อพเพอร์ตี้ options['domain'] (หากมี) ตั้งค่านี้เป็น 'auto' เพื่อพยายามเขียนคุกกี้โดยใช้โดเมนที่กว้างที่สุดเท่าที่จะเป็นไปได้ โดยอิงตามตำแหน่งเอกสาร หากไม่สำเร็จ ระบบจะลองใช้โดเมนย่อยที่แคบลงตามลำดับ หากทั้งหมดไม่สําเร็จ ระบบจะพยายามเขียนคุกกี้โดยไม่มีโดเมน หากไม่ได้ตั้งค่าค่าใดๆ ระบบจะพยายามเขียนคุกกี้โดยไม่ระบุโดเมน หมายเหตุ: เมื่อมีการเขียนคุกกี้ที่ไม่มีโดเมนระบุลงใน document.cookie ยูสเอเจนต์จะตั้งค่าโดเมนเริ่มต้นของคุกกี้เป็นโฮสต์ของตำแหน่งเอกสารปัจจุบัน
  • เส้นทาง: กำหนดโดย options['path'] (หากมี) เมื่อมีการเขียนคุกกี้ที่ไม่มีการกำหนดเส้นทางไปยัง document.cookie User Agent จะกำหนดเส้นทางเริ่มต้นของคุกกี้เป็นเส้นทางของตำแหน่งเอกสารปัจจุบัน
  • Max-Age: ตั้งค่าโดย options['max-age'] หากมี
  • หมดอายุ: กำหนดโดย options['expires'] (หากมี) หากมี ต้องเป็นสตริงวันที่รูปแบบ UTC Date.toUTCString() ใช้เพื่อจัดรูปแบบ Date สำหรับพารามิเตอร์นี้ได้
  • ปลอดภัย: ตั้งค่าโดย options['secure'] (หากมี)
  • SameSite: ตั้งค่าโดย options['samesite'] หากมี

สิทธิ์ที่เชื่อมโยง

set_cookies


setDefaultConsentState

พุชการอัปเดตความยินยอมเริ่มต้นไปยังชั้นข้อมูลเพื่อประมวลผลโดยเร็วที่สุดหลังจากเหตุการณ์ปัจจุบันและแท็กที่เรียกให้แสดงเสร็จสิ้นการประมวลผลแล้ว (หรือถึงเวลาหมดอายุการประมวลผลแท็ก) ระบบรับประกันว่าจะประมวลผลการอัปเดตในคอนเทนเนอร์นี้ก่อนรายการใดๆ ที่รออยู่ในชั้นข้อมูล ดูข้อมูลเพิ่มเติมเกี่ยวกับความยินยอม

ตัวอย่างเช่น

const setDefaultConsentState = require('setDefaultConsentState');

setDefaultConsentState({
  'ad_storage': 'denied',
  'analytics_storage': 'granted',
  'third_party_storage': 'denied',
  'region': ['US-CA'],
  'wait_for_update': 500
});

ไวยากรณ์

setDefaultConsentState(consentSettings)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
consentSettings object ออบเจ็กต์ที่กําหนดสถานะเริ่มต้นสําหรับประเภทความยินยอมที่ระบุ

ออบเจ็กต์ consentSettings คือการแมปสตริงประเภทความยินยอมที่กำหนดเองกับ 'granted' หรือ 'denied' โดยรองรับค่าต่อไปนี้

ชื่อคีย์ ประเภท คำอธิบาย
consentType สตริง ค่าสําหรับความยินยอมแต่ละประเภทสามารถตั้งค่าเป็น "granted" หรือ "denied" ได้ ค่าที่ไม่ใช่ "granted" จะถือว่า "denied" การตั้งค่าเป็น "undefined" จะไม่ส่งผลต่อค่าก่อนหน้า
region อาร์เรย์ อาร์เรย์รหัสภูมิภาคที่ไม่บังคับซึ่งระบุภูมิภาคที่จะใช้การตั้งค่าความยินยอม รหัสภูมิภาคจะแสดงโดยใช้ประเทศและ/หรือเขตการปกครองในรูปแบบ ISO 3166-2
wait_for_update number ระบุค่ามิลลิวินาทีเพื่อควบคุมระยะเวลารอก่อนที่จะส่งข้อมูล ใช้กับเครื่องมือขอความยินยอมที่โหลดแบบไม่พร้อมกัน

สิทธิ์ที่เชื่อมโยง

สิทธิ์ access_consent ที่มีสิทธิ์การเขียนสำหรับความยินยอมทุกประเภทในออบเจ็กต์ consentSettings


setInWindow

ตั้งค่าที่ระบุใน window ที่กุญแจที่ระบุ โดยค่าเริ่มต้น วิธีการนี้จะไม่ตั้งค่าใน window หากมีอยู่แล้ว ตั้งค่า overrideExisting เป็น true เพื่อตั้งค่าใน window ไม่ว่าจะมีค่าที่มีอยู่หรือไม่ก็ตาม แสดงผล boolean: true หากตั้งค่าสำเร็จ และ false ในกรณีอื่นๆ

ไวยากรณ์

setInWindow(key, value, overrideExisting)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
key สตริง คีย์ใน window ที่จะใส่ค่า
value * ค่าที่จะตั้งค่าใน window
overrideExisting บูลีน Flag ที่ระบุว่าควรตั้งค่าใน window ไม่ว่าจะมีค่าหรือไม่ก็ตาม

สิทธิ์ที่เชื่อมโยง

access_globals


sha256

คํานวณข้อมูลสรุป SHA-256 ของอินพุตและเรียกใช้การเรียกกลับด้วยข้อมูลสรุปที่เข้ารหัส Base64 เว้นแต่ออบเจ็กต์ options จะระบุการเข้ารหัสเอาต์พุตอื่น

ตัวอย่างเช่น

sha256('inputString', (digest) => {
  sendPixel('https://example.com/collect?id=' + digest);
  data.gtmOnSuccess();
}, data.gtmOnFailure);

sha256('inputString', (digest) => {
  sendPixel('https://example.com/collect?id=' + digest);
  data.gtmOnSuccess();
}, data.gtmOnFailure, {outputEncoding: 'hex'});

ไวยากรณ์

sha256(input, onSuccess, onFailure = undefined, options = undefined)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
input สตริง สตริงที่จะคํานวณแฮช
onSuccess function เรียกใช้ด้วยข้อมูลสรุปที่ได้ซึ่งเข้ารหัสใน Base64 เว้นแต่ออบเจ็กต์ options จะระบุการเข้ารหัสเอาต์พุตอื่น
onFailure function เรียกใช้หากเกิดข้อผิดพลาดขณะคํานวณข้อมูลสรุป หรือหากเบราว์เซอร์ไม่รองรับ sha256 โดยค่าเริ่มต้น ระบบจะเรียกใช้การเรียกกลับด้วยออบเจ็กต์ที่มีชื่อของข้อผิดพลาดและข้อความ
options object ออบเจ็กต์ตัวเลือกไม่บังคับสำหรับระบุการเข้ารหัสเอาต์พุต หากระบุ ออบเจ็กต์ควรมีคีย์ outputEncoding ที่มีค่าเป็น base64 หรือ hex

สิทธิ์ที่เชื่อมโยง

ไม่มี


templateStorage

แสดงผลออบเจ็กต์ที่มีเมธอดสําหรับการเข้าถึงพื้นที่เก็บข้อมูลเทมเพลต พื้นที่เก็บข้อมูลเทมเพลตช่วยให้แชร์ข้อมูลระหว่างการเรียกใช้เทมเพลตเดียวได้ ข้อมูลที่จัดเก็บไว้ในพื้นที่เก็บข้อมูลของเทมเพลตจะยังคงอยู่ตลอดอายุของหน้า

ไวยากรณ์

const templateStorage = require('templateStorage');

templateStorage.getItem(key);

templateStorage.setItem(key, value);

templateStorage.removeItem(key);

// Deletes all stored values for the template.
templateStorage.clear();

สิทธิ์ที่เชื่อมโยง

access_template_storage

ตัวอย่าง

const templateStorage = require('templateStorage');
const sendPixel = require('sendPixel');

// Ensure sendPixel is called only once per page.
if (templateStorage.getItem('alreadyRan')) {
  data.gtmOnSuccess();
  return;
}

templateStorage.setItem('alreadyRan', true);

sendPixel(
  data.oncePerPagePixelUrl,
  data.gtmOnSuccess,
  () => {
    templateStorage.setItem('alreadyRan', false);
    data.gtmOnFailure();
  });

toBase64

toBase64 API ช่วยให้คุณเข้ารหัสสตริงเป็นรูปแบบ Base64 ได้

ไวยากรณ์

toBase64(input)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
input สตริง สตริงที่จะเข้ารหัส

ตัวอย่าง

const toBase64 = require('toBase64');

const base64Hello = toBase64('hello');

สิทธิ์ที่เชื่อมโยง

ไม่มี


updateConsentState

พุชการอัปเดตความยินยอมไปยังชั้นข้อมูลเพื่อประมวลผลโดยเร็วที่สุดหลังจากเหตุการณ์ปัจจุบันและแท็กที่ทริกเกอร์เสร็จสิ้นการประมวลผลแล้ว (หรือถึงเวลาหมดเวลาการประมวลผลแท็ก) ระบบจะรับประกันการประมวลผลการอัปเดตในคอนเทนเนอร์นี้ก่อนรายการใดๆ ที่รออยู่ในชั้นข้อมูล ดูข้อมูลเพิ่มเติมเกี่ยวกับความยินยอม

ตัวอย่างเช่น

const updateConsentState = require('updateConsentState');

updateConsentState({
  'ad_storage': 'granted',
  'analytics_storage': 'denied',
  'third_party_storage': 'granted',
});

ไวยากรณ์

updateConsentState(consentSettings)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
consentSettings object ออบเจ็กต์ที่อัปเดตสถานะสำหรับประเภทความยินยอมที่ระบุ

ออบเจ็กต์ consentSettings คือการแมปสตริงประเภทความยินยอมที่กำหนดเองกับ 'granted' หรือ 'denied' โดยรองรับค่าต่อไปนี้

ชื่อคีย์ ประเภท คำอธิบาย
consentType สตริง ค่าสำหรับความยินยอมแต่ละประเภทสามารถตั้งค่าเป็น "อนุญาต" หรือ "ปฏิเสธ" ค่าอื่นๆ นอกเหนือจาก "granted" จะถือว่า "denied" การตั้งค่าเป็น "ไม่ระบุ" จะไม่ส่งผลต่อค่าก่อนหน้า

สิทธิ์ที่เชื่อมโยง

สิทธิ์ access_consent ที่มีสิทธิ์การเขียนสำหรับความยินยอมทุกประเภทในออบเจ็กต์ consentSettings


Test API

API เหล่านี้ทํางานร่วมกับการทดสอบ JavaScript ในแซนด์บ็อกซ์เพื่อสร้างการทดสอบเทมเพลตที่กําหนดเองใน Google Tag Manager API การทดสอบเหล่านี้ไม่จำเป็นต้องมีrequire() คำสั่ง ดูข้อมูลเพิ่มเติมเกี่ยวกับการทดสอบเทมเพลตที่กำหนดเอง


assertApi

แสดงผลออบเจ็กต์ตัวจับคู่ที่สามารถใช้เพื่อยืนยันเกี่ยวกับ API ที่ระบุได้อย่างราบรื่น

ไวยากรณ์

assertApi(apiName)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
apiName สตริง ชื่อของ API ที่จะตรวจสอบ ซึ่งเป็นสตริงเดียวกับที่ส่งไปยัง require()

ตัวจับคู่

  • Subject.wasCalled()
  • Subject.wasNotCalled()
  • Subject.wasCalledWith(...expected)
  • Subject.wasNotCalledWith(...expected)

ตัวอย่าง

assertApi('sendPixel').wasCalled();
assertApi('getUrl').wasNotCalled();
assertApi('makeNumber').wasCalledWith('8');
assertApi('setInWindow').wasNotCalledWith('myVar', 'theWrongValue');

assertThat

assertThat API สร้างขึ้นตามไลบรารี [Truth] ของ Google โดยจะแสดงผลออบเจ็กต์ที่สามารถใช้เพื่อยืนยันค่าของเรื่องได้อย่างราบรื่น การทดสอบจะหยุดลงทันทีและระบุว่าไม่สําเร็จหากการยืนยันไม่สําเร็จ อย่างไรก็ตาม การทดสอบไม่ผ่านรายการหนึ่งจะไม่ส่งผลต่อเฟรมทดสอบอื่นๆ

ไวยากรณ์

assertThat(actual, opt_message)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
actual any ค่าที่จะใช้ในการตรวจสอบความต่อเนื่อง
opt_message สตริง ข้อความที่ไม่บังคับที่จะพิมพ์หากการยืนยันไม่สำเร็จ

ตัวจับคู่

โปรแกรมจับคู่ คำอธิบาย
isUndefined() ยืนยันว่าเรื่องคือ undefined
isDefined() ยืนยันว่าเรื่องไม่ใช่ undefined
isNull() ยืนยันว่าเรื่องคือ null
isNotNull() ยืนยันว่าเรื่องไม่ใช่ null
isFalse() ยืนยันว่าเรื่องคือ false
isTrue() ยืนยันว่าเรื่องคือ true
isFalsy() ยืนยันว่าเรื่องนั้นเป็นเท็จ ค่าที่เป็นเท็จคือ undefined, null, false, NaN, 0 และ '' (สตริงว่าง)
isTruthy() ยืนยันว่าเรื่องเป็นจริง ค่าที่เป็นเท็จคือ undefined, null, false, NaN, 0 และ '' (สตริงว่าง)
isNaN() ยืนยันว่าเรื่องเป็นค่า NaN
isNotNaN() ยืนยันว่าเรื่องเป็นค่าใดก็ได้ที่ไม่ใช่ NaN
isInfinity() ยืนยันว่าเรื่องเป็นค่าบวกหรือค่าลบ Infinity
isNotInfinity() ยืนยันว่าเรื่องเป็นค่าใดก็ได้ที่ไม่ใช่บวกหรือลบ หรือ Infinity
isEqualTo(expected) ยืนยันว่าเรื่องเท่ากับค่าที่ระบุ การดำเนินการนี้เป็นการคํานวณค่า ไม่ใช่การคํานวณข้อมูลอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์แบบซ้ำ
isNotEqualTo(expected) ยืนยันว่าเรื่องไม่เท่ากับค่าที่ระบุ นี่เป็นเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบข้อมูลอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์แบบซ้ำ
isAnyOf(...expected) ยืนยันว่าเรื่องเท่ากับค่าใดค่าหนึ่งที่กำหนด นี่เป็นเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบข้อมูลอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์แบบซ้ำ
isNoneOf(...expected) ยืนยันว่าเรื่องไม่เท่ากับค่าที่ระบุ การเปรียบเทียบนี้เป็นแบบค่า ไม่ใช่แบบการเปรียบเทียบข้อมูลอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์แบบซ้ำ
isStrictlyEqualTo(expected) ยืนยันว่าเรื่อง (===) เท่ากับค่าที่ระบุอย่างเคร่งครัด
isNotStrictlyEqualTo(expected) ยืนยันว่าเรื่องไม่เท่ากับ (!==) ค่าที่ระบุอย่างเคร่งครัด
isGreaterThan(expected) ยืนยันว่าเรื่องมากกว่า (>) ค่าที่ระบุในการเปรียบเทียบแบบจัดลำดับ
isGreaterThanOrEqualTo(expected) ยืนยันว่าเรื่องมากกว่าหรือเท่ากับ (>=) ค่าที่ระบุในการเปรียบเทียบแบบจัดลำดับ
isLessThan(expected) ยืนยันว่าเรื่องน้อยกว่า (<) ค่าที่ระบุในการเปรียบเทียบแบบเรียงลำดับ
isLessThanOrEqualTo(expected) ยืนยันว่าเรื่องมีค่าน้อยกว่าหรือเท่ากับ (<=) ค่าที่ระบุในการเปรียบเทียบแบบจัดลำดับ
contains(...expected) ยืนยันว่าเรื่องเป็นอาร์เรย์หรือสตริงที่มีค่าที่ระบุทั้งหมดตามลำดับใดก็ได้ การเปรียบเทียบนี้เป็นแบบค่า ไม่ใช่แบบข้อมูลอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์แบบย้อนกลับ
doesNotContain(...expected) ยืนยันว่าเรื่องเป็นอาร์เรย์หรือสตริงที่ไม่มีค่าที่ระบุ การเปรียบเทียบนี้เป็นแบบค่า ไม่ใช่แบบการเปรียบเทียบข้อมูลอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์แบบซ้ำ
containsExactly(...expected) ยืนยันว่าเรื่องเป็นอาร์เรย์ที่มีค่าที่ระบุทั้งหมดตามลำดับใดก็ได้และไม่มีค่าอื่นๆ การเปรียบเทียบนี้เป็นแบบค่า ไม่ใช่แบบการเปรียบเทียบข้อมูลอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์แบบย้อนกลับ
doesNotContainExactly(...expected) ยืนยันว่าเรื่องเป็นอาร์เรย์ที่มีชุดค่าที่แตกต่างจากค่าที่ระบุในลำดับใดก็ได้ การเปรียบเทียบนี้เป็นแบบค่า ไม่ใช่แบบการเปรียบเทียบข้อมูลอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์แบบซ้ำ
hasLength(expected) ยืนยันว่าเรื่องเป็นอาร์เรย์หรือสตริงที่มีความยาวที่ระบุ การยืนยันจะดำเนินการไม่สําเร็จเสมอหากค่าไม่ใช่อาร์เรย์หรือสตริง
isEmpty() ยืนยันว่าเรื่องเป็นอาร์เรย์หรือสตริงที่ว่างเปล่า (ความยาว = 0) การยืนยันจะดำเนินการไม่สําเร็จเสมอหากค่าไม่ใช่อาร์เรย์หรือสตริง
isNotEmpty() ยืนยันว่าเรื่องเป็นอาร์เรย์หรือสตริงที่ไม่ใช่สตริงว่าง (ความยาว > 0) การยืนยันจะดำเนินการไม่สำเร็จเสมอหากค่าไม่ใช่อาร์เรย์หรือสตริง
isArray() ยืนยันว่าประเภทของเรื่องเป็นอาร์เรย์
isBoolean() ยืนยันว่าประเภทของเรื่องเป็นบูลีน
isFunction() ยืนยันว่าประเภทของเรื่องคือฟังก์ชัน
isNumber() ยืนยันว่าประเภทของเรื่องเป็นตัวเลข
isObject() ยืนยันว่าประเภทของเรื่องคือออบเจ็กต์
isString() ยืนยันว่าประเภทของเรื่องคือสตริง

ตัวอย่าง

assertThat(undefined).isUndefined();
assertThat(id, 'ID must be defined').isDefined();
assertThat(null).isNull();
assertThat(undefined).isNotNull();
assertThat(true).isTrue();
assertThat(false).isFalse();
assertThat(1).isTruthy();
assertThat('').isFalsy();
assertThat(1/0).isInfinity();
assertThat(0).isNotInfinity();
assertThat(-'foo').isNaN();
assertThat(100).isNotNaN();
assertThat(sentUrl).isEqualTo('https://endpoint.example.com/?account=12345');
assertThat(category).isNotEqualTo('premium');
assertThat(5).isAnyOf(1, 2, 3, 4, 5);
assertThat(42).isNoneOf('the question', undefined, 41.9);
assertThat('value').isStrictlyEqualTo('value');
assertThat('4').isNotStrictlyEqualTo(4);
assertThat(['a', 'b', 'c']).contains('a', 'c');
assertThat(['x', 'y', 'z']).doesNotContain('f');
assertThat(['1', '2', '3']).containsExactly('3', '2', '1');
assertThat(['4', '5']).doesNotContainExactly('4');
assertThat('a string').hasLength(8);
assertThat([]).isEmpty();
assertThat('another string').isNotEmpty();

fail

ทดสอบปัจจุบันไม่สําเร็จทันทีและพิมพ์ข้อความที่ระบุไว้ (หากระบุ)

ไวยากรณ์

fail(opt_message);

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
opt_message สตริง ข้อความแสดงข้อผิดพลาดแบบไม่บังคับ

ตัวอย่าง

fail('This test has failed.');

mock

mock API ช่วยให้คุณลบล้างลักษณะการทํางานของ API ใน Sandbox ได้ Mock API ใช้งานได้อย่างปลอดภัยในโค้ดเทมเพลต แต่จะทํางานได้เฉพาะในโหมดทดสอบเท่านั้น ระบบจะรีเซ็ตการจำลองก่อนทำการทดสอบแต่ละครั้ง

ไวยากรณ์

mock(apiName, returnValue);

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
apiName สตริง ชื่อของ API ที่จะจำลอง ซึ่งจะเป็นสตริงเดียวกับที่ส่งไปยัง require()
returnValue any ค่าที่จะแสดงผลสำหรับ API หรือฟังก์ชันที่เรียกแทน API หาก returnValue เป็นฟังก์ชัน ระบบจะเรียกใช้ฟังก์ชันนั้นแทน API ที่อยู่ในแซนด์บ็อกซ์ หาก returnValue ไม่ใช่ฟังก์ชัน ระบบจะแสดงผลค่านั้นแทน API ที่อยู่ในแซนด์บ็อกซ์

ตัวอย่าง

mock('encodeUri', "https://endpoint.example.com/?account=12345");
mock('sendPixel', function(url, onSuccess, onFailure) {
    onSuccess();
});

mockObject

mockObject API ช่วยให้คุณลบล้างลักษณะการทํางานของ API ในแซนด์บ็อกซ์ที่แสดงผลออบเจ็กต์ API นี้ใช้งานได้อย่างปลอดภัยในโค้ดเทมเพลต แต่จะใช้งานได้ในโหมดทดสอบเท่านั้น ระบบจะรีเซ็ตการจำลองก่อนทำการทดสอบแต่ละครั้ง

ไวยากรณ์

mockObject(apiName, objectMock);

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
apiName สตริง ชื่อของ API ที่จะจำลอง ซึ่งจะเป็นสตริงเดียวกับที่ส่งไปยัง require()
objectMock object ค่าที่จะแสดงผลสำหรับ API หรือฟังก์ชันที่เรียกแทน API ต้องเป็นออบเจ็กต์

ตัวอย่าง

const storage = {};
mockObject('localStorage', {
  setItem: (key, value) => {storage[key] = value;},
  getItem: (key) => storage[key],
});

runCode

เรียกใช้โค้ดของเทมเพลต ซึ่งก็คือเนื้อหาของแท็บโค้ดในสภาพแวดล้อมการทดสอบปัจจุบันด้วยออบเจ็กต์ข้อมูลอินพุตที่ระบุ

ไวยากรณ์

runCode(data)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
data object ออบเจ็กต์ข้อมูลที่จะใช้ในการทดสอบ

ผลลัพธ์

แสดงค่าของตัวแปรสำหรับเทมเพลตตัวแปร และแสดง undefined สำหรับเทมเพลตประเภทอื่นๆ ทั้งหมด

ตัวอย่าง

runCode({field1: 123, field2: 'value'});