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

API หลัก

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

const myAPI = require('myAPI');

addConsentListener

ลงทะเบียนฟังก์ชัน Listener เพื่อดำเนินการเมื่ออยู่ในสถานะความยินยอมที่ระบุ ประเภทการเปลี่ยนแปลง

ระบบจะเรียกใช้ 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 ฟังก์ชัน ฟังก์ชันที่จะเรียกใช้เมื่อสถานะของประเภทความยินยอมที่ระบุ การเปลี่ยนแปลง

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

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

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

สิทธิ์ access_consent ที่มีสิทธิ์อ่านสำหรับประเภทความยินยอม


addEventCallback

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

ไวยากรณ์

addEventCallback(callback)

พารามิเตอร์

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

ออบเจ็กต์ 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 ด้วยแอตทริบิวต์ อาร์กิวเมนต์และแสดงผลค่า หากไม่สามารถจับคู่ประเภทผลลัพธ์โดยตรง ระบบจะแสดงผล undefined เป็นประเภทที่รองรับใน JavaScript ที่ทำแซนด์บ็อกซ์ 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 ฟังก์ชัน ฟังก์ชันที่จะเรียก

copyFromDataLayer

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

ไวยากรณ์

copyFromDataLayer(key[, dataLayerVersion])

พารามิเตอร์

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

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

read_data_layer


copyFromWindow

คัดลอกตัวแปรจากออบเจ็กต์ window หากต้องไม่มีค่าใน window แมปโดยตรงกับประเภทที่ JavaScript ที่ทำแซนด์บ็อกซ์รองรับโดยตรง undefined จะ ส่งคืนแล้ว JavaScript ที่ทำแซนด์บ็อกซ์มี 8 ประเภทที่รองรับ ได้แก่ 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 ที่ระบุ ส่งคืน string ที่แสดงถึงคอมโพเนนต์ 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) ที่เข้ารหัสโดยการ Escape แบบพิเศษ อักขระ แสดงผลสตริงที่แสดงถึงสตริงที่ให้ไว้ซึ่งเข้ารหัสเป็น URI แสดงผล undefined เมื่อมีอินพุตที่ไม่ถูกต้อง (ตัวแทนแบบเดี่ยว)

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

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

ไวยากรณ์

encodeUri(uri)

พารามิเตอร์

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

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

ไม่มี


encodeUriComponent

แสดง Uniform Resource Identifier (URI) ที่เข้ารหัสโดยการ Escape แบบพิเศษ อักขระ แสดงผลสตริงที่แสดงถึงสตริงที่ให้ไว้ซึ่งเข้ารหัสเป็น 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

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

ไวยากรณ์

generateRandom(min, max)

พารามิเตอร์

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

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

ไม่มี


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 บูลีน ควบคุมว่าจะถอดรหัสค่าคุกกี้ด้วยหรือไม่ JavaScript decodeURIComponent() ค่าเริ่มต้นคือ 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 ที่มาแทน URL ปัจจุบัน แสดงค่าแรกหรือค่า พารามิเตอร์ทั้งหมดสำหรับ queryKey ของผู้บอกต่อที่ระบุ แสดงค่าแรก จาก 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 ที่มาแบบเต็ม

ไวยากรณ์

getReferrerUrl([component])

พารามิเตอร์

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

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

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


getTimestamp

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

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

ไวยากรณ์

getTimestamp();

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

ไม่มี


getTimestampMillis

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

ไวยากรณ์

getTimestampMillis();

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

ไม่มี


getType

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

ไวยากรณ์

getType(data.someField)

หมายเหตุ

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

ค่าอินพุต ผลลัพธ์
undefined "undefined"
null "null"
true "บูลีน"
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 ไปยังชั้นข้อมูลเพื่อให้ประมวลผลทันที เป็นไปได้หลังจากเหตุการณ์ปัจจุบันและแท็กที่ทริกเกอร์นั้นเสร็จแล้ว การประมวลผล (หรือถึงระยะหมดเวลาประมวลผลแท็กแล้ว) รับประกันการอัปเดต ที่จะประมวลผลในคอนเทนเนอร์นี้ก่อนรายการที่อยู่ในคิวในชั้นข้อมูล คิว

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

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

const gtagSet = require('gtagSet');

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

ไวยากรณ์

gtagSet(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 ฟังก์ชันที่เรียกผ่านเบราว์เซอร์ได้

ไวยากรณ์

injectHiddenIframe(url, onSuccess)

พารามิเตอร์

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

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

inject_hidden_iframe


injectScript

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

ไวยากรณ์

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

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
url สตริง ที่อยู่ของสคริปต์ที่จะแทรก
onSuccess ฟังก์ชัน เรียกใช้เมื่อสคริปต์โหลดสำเร็จแล้ว
onFailure ฟังก์ชัน มีการเรียกใช้เมื่อโหลดสคริปต์ไม่สำเร็จ
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 ใดก็ได้ ค่าที่จะแปลง หากค่าไม่ใช่สตริง อินพุตจะเป็น แปลงเป็นสตริง

JSON.stringify

พารามิเตอร์ ประเภท คำอธิบาย
value ใดก็ได้ ค่าที่จะแปลง

ตัวอย่าง

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] ใดก็ได้ อาร์กิวเมนต์

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

logging


makeInteger

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

ไวยากรณ์

makeInteger(value)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
value ใดก็ได้ ค่าที่จะแปลง

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

ไม่มี


makeNumber

แปลงค่าที่ระบุเป็น number

ไวยากรณ์

makeNumber(value)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
value ใดก็ได้ ค่าที่จะแปลง

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

ไม่มี


makeString

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

ไวยากรณ์

makeString(value)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
value ใดก็ได้ ค่าที่จะแปลง

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

ไม่มี


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 สตริง ชื่อคอลัมน์ที่ค่าจะกลายเป็นคีย์ใน Conversion Map
valueColumnName สตริง ชื่อคอลัมน์ที่ค่าจะกลายเป็นค่าใน Conversion 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() พฤติกรรมของคุณ แสดงผลอาร์เรย์ของพร็อพเพอร์ตี้ที่แจกแจงได้ของออบเจ็กต์ที่กำหนด [key, value] จับคู่ในลำดับเดียวกับที่ for...in... จะวนซ้ำ หาก ค่าที่ป้อนไม่ใช่วัตถุ แต่จะถูกเปลี่ยนเป็นวัตถุ

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

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

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

ไวยากรณ์

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

พารามิเตอร์

Object.keys

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

Object.values

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

Object.entries

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

Object.freeze

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

Object.delete

พารามิเตอร์ ประเภท คำอธิบาย
objectInput ใดก็ได้ ออบเจ็กต์ที่มีคีย์ที่จะลบ
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

ค้นหาสิทธิ์ที่อนุญาตและที่จํากัด แสดงบูลีน: true หาก ได้รับอนุญาต false

ไวยากรณ์

queryPermission(permission, functionArgs*)

พารามิเตอร์

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

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

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 ฟังก์ชัน มีการเรียกเมื่อโหลดพิกเซลสำเร็จ หมายเหตุ: แม้ว่าคำขอ ส่งสำเร็จแล้ว เบราว์เซอร์อาจต้องการการตอบกลับรูปภาพที่ถูกต้อง ที่ประสบความสำเร็จ
onFailure ฟังก์ชัน มีการเรียกใช้เมื่อโหลดพิกเซลไม่สำเร็จ หมายเหตุ: แม้ว่าคำขอ ส่งสำเร็จแล้ว onFailure อาจทำงานหากเซิร์ฟเวอร์ไม่ส่งกลับ การตอบกลับรูปภาพที่ถูกต้อง

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

send_pixel


setCookie

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

ไวยากรณ์

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

พารามิเตอร์

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

  • โดเมน: ตั้งค่าโดยพร็อพเพอร์ตี้ options['domain'] หากมี ตั้งค่านี้ ถึง 'auto' เพื่อพยายามเขียนคุกกี้โดยใช้โดเมนที่กว้างที่สุดที่เป็นไปได้ ตามตำแหน่งเอกสาร หากไม่ได้ผล ก็จะพยายามแก้ไขไปเรื่อยๆ โดเมนย่อยที่แคบลง หากคุกกี้ทั้งหมดล้มเหลว ระบบจะพยายามเขียนคุกกี้ โดยไม่มีโดเมน หากไม่ได้ตั้งค่า ระบบจะพยายามเขียนคุกกี้ ที่ไม่ได้ระบุโดเมน หมายเหตุ: เมื่อคุกกี้ที่ไม่ได้ระบุโดเมน เขียนเป็น document.cookie แล้ว User Agent จะกำหนดโดเมนของคุกกี้เป็นค่าเริ่มต้น กับโฮสต์ของตำแหน่งเอกสารปัจจุบัน
  • เส้นทาง: ตั้งค่าโดย 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 ออบเจ็กต์ ออบเจ็กต์ที่กำหนดสถานะเริ่มต้นสำหรับความยินยอมที่ระบุ ประเภทต่างๆ

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

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

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

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


setInWindow

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

ไวยากรณ์

setInWindow(key, value, overrideExisting)

พารามิเตอร์

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

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

access_globals


sha256

คำนวณไดเจสต์ SHA-256 ของอินพุตและเรียก Callback ที่มีเมธอด ไดเจสต์ที่เข้ารหัสใน 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 ฟังก์ชัน เรียกใช้ด้วยไดเจสต์ผลลัพธ์ ซึ่งเข้ารหัสใน base64 นอกเสียจากว่า ออบเจ็กต์ options ระบุการเข้ารหัสเอาต์พุตที่แตกต่างกัน
onFailure ฟังก์ชัน เรียกใช้หากเกิดข้อผิดพลาดขณะคำนวณไดเจสต์ หรือหาก เบราว์เซอร์ไม่มีการสนับสนุนในตัวสำหรับ SHA256 Callback เรียกว่า ด้วยออบเจ็กต์ที่มีชื่อข้อผิดพลาดและข้อความ
options ออบเจ็กต์ ไม่บังคับเป็นออบเจ็กต์ตัวเลือกเพื่อระบุการเข้ารหัสเอาต์พุต ถ้า ที่ระบุ ออบเจ็กต์ควรมีคีย์ 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 ออบเจ็กต์ ออบเจ็กต์ที่อัปเดตสถานะสำหรับประเภทความยินยอมที่ระบุ

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

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

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

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


ทดสอบ 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 โดยจะแสดงค่า ที่สามารถใช้ยืนยันคุณค่าของหัวข้อหนึ่งๆ ได้อย่างคล่องแคล่ว CANNOT TRANSLATE การยืนยันล้มเหลวจะหยุดการทดสอบทันทีและทำเครื่องหมายว่าล้มเหลว อย่างไรก็ตาม ความล้มเหลวในการทดสอบครั้งหนึ่งจะไม่มีผลต่อกรอบการทดสอบอื่นๆ

ไวยากรณ์

assertThat(actual, opt_message)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
actual ใดก็ได้ ค่าที่จะใช้ในการตรวจสอบความคล่องแคล่ว
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() ยืนยันว่าเนื้อหาเป็นเรื่องของอินฟินิตี้เชิงบวกหรือเชิงลบ
isNotInfinity() รับรองว่าเนื้อหามีค่านอกเหนือจากค่าบวกหรือค่าลบ อนันต์
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() รับรองว่าเรื่องเป็นอาร์เรย์หรือสตริงที่ไม่ว่างเปล่า (length > 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 ช่วยให้คุณลบล้างลักษณะการทำงานของ Sandboxed API ได้ ตัวอย่าง API ใช้งานได้อย่างปลอดภัยในโค้ดเทมเพลต แต่จะทำงานในโหมดทดสอบเท่านั้น ระบบจะรีเซ็ตการจำลองก่อนที่จะทำการทดสอบแต่ละครั้ง

ไวยากรณ์

mock(apiName, returnValue);

พารามิเตอร์

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

ตัวอย่าง

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

mockObject

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

ไวยากรณ์

mockObject(apiName, objectMock);

พารามิเตอร์

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

ตัวอย่าง

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

runCode

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

ไวยากรณ์

runCode(data)

พารามิเตอร์

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

มูลค่าการคืนสินค้า

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

ตัวอย่าง

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