API การติดแท็กฝั่งเซิร์ฟเวอร์

เอกสารนี้ระบุ API สำหรับการติดแท็กฝั่งเซิร์ฟเวอร์


addEventCallback

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

เมื่อใช้ API นี้ในแท็ก API นั้นจะเชื่อมโยงกับเหตุการณ์ปัจจุบัน เมื่อใช้ API นี้ในไคลเอ็นต์ จะต้องมีการเชื่อมโยง API กับเหตุการณ์ที่เฉพาะเจาะจงโดยใช้ฟังก์ชัน bindToEvent ของ runContainer API ดูรายละเอียดเพิ่มเติมได้ในตัวอย่าง

ไวยากรณ์

const addEventCallback = require('addEventCallback');

addEventCallback((containerId, eventData) => {
  // Take some action based on the event data.
});

พารามิเตอร์

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

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

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

ในไคลเอ็นต์:

const addEventCallback = require('addEventCallback');
const claimRequest = require('claimRequest');
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const logToConsole = require('logToConsole');
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');

claimRequest();

const events = extractEventsFromMpv1();
let eventsCompleted = 0;
events.forEach((evt, i) => {
  runContainer(evt, /* onComplete= */ (bindToEvent) => {
    bindToEvent(addEventCallback)((containerId, eventData) => {
      logToConsole('Event Number: ' + i);
      eventData.tags.forEach((tag) => {
        logToConsole('Tag ID: ' + tag.id);
        logToConsole('Tag Status: ' + tag.status);
        logToConsole('Tag Execution Time: ' + tag.executionTime);
      });
    });
    if (events.length === ++eventsCompleted) {
      returnResponse();
    }
  });
});

ในแท็ก:

const addEventCallback = require('addEventCallback');

addEventCallback((containerId, eventData) => {
  // This will be called at the end of the current event.
});

สิทธิ์ที่เกี่ยวข้อง

read_event_metadata


callLater

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

ตัวอย่าง

const callLater = require('callLater');
const logToConsole = require('logToConsole');

callLater(() => {
  logToConsole('Logged asynchronously');
});

ไวยากรณ์

callLater(function)

พารามิเตอร์

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

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


claimRequest

ใช้ API นี้ในไคลเอ็นต์เพื่ออ้างสิทธิ์คำขอ เมื่ออ้างสิทธิ์แล้ว คอนเทนเนอร์จะไม่เรียกใช้ไคลเอ็นต์เพิ่มเติม

API นี้จะมีข้อยกเว้นหากมีการเรียกในแท็กหรือตัวแปร API นี้จะมีข้อยกเว้นหากมีการเรียกหลังจากที่ไคลเอ็นต์กลับมา (เช่น หากมีการเรียกในการเรียกกลับแบบไม่พร้อมกัน เช่น ใน callLater หรือฟังก์ชัน runContainer onComplete)

ไคลเอ็นต์ควรอ้างสิทธิ์คำขอโดยใช้ API นี้ก่อนเรียกใช้ runContainer API

ตัวอย่าง

const claimRequest = require('claimRequest');

claimRequest();

ไวยากรณ์

claimRequest();

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


computeEffectiveTldPlusOne

แสดงผลโดเมนระดับบนสุดที่มีประสิทธิภาพ + 1 (eTLD+1) ของโดเมนหรือ URL ที่ระบุ eTLD+1 คำนวณโดยการประเมินโดเมนเทียบกับกฎรายการคำต่อท้ายสาธารณะ โดยทั่วไป eTLD+1 เป็นโดเมนระดับสูงสุดที่คุณสามารถตั้งค่าคุกกี้ได้

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

ตัวอย่าง

const computeEffectiveTldPlusOne = require('computeEffectiveTldPlusOne');

// Returns 'example.co.uk'
computeEffectiveTldPlusOne('analytics.example.co.uk');

// Returns 'example.co.uk'
computeEffectiveTldPlusOne('https://analytics.example.co.uk/path');

ไวยากรณ์

computeEffectiveTldPlusOne(domainOrUrl);

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
domainOrUrl สตริง โดเมนหรือ URL ที่จะประมวลผล eTLD+1

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


createRegex

สร้างอินสแตนซ์นิพจน์ทั่วไปใหม่แล้วส่งคืนอินสแตนซ์ที่รวมไว้ในออบเจ็กต์ โดยคุณจะเข้าถึงนิพจน์ทั่วไปโดยตรงไม่ได้ แต่คุณจะส่งผ่าน API ไปยัง testRegex API, String.replace(), String.match() และ String.search() ได้

แสดงผล null หากนิพจน์ทั่วไปไม่ถูกต้องหรือ Re2 ไม่พร้อมใช้งานบนเซิร์ฟเวอร์

API นี้ใช้การใช้งาน Re2 อิมเมจ Docker ของเซิร์ฟเวอร์ต้องเป็นเวอร์ชัน 2.0.0 ขึ้นไป

ตัวอย่าง

const createRegex = require('createRegex');

const domainRegex = createRegex('\\w+\\.com', 'i');

// Returns '/foobar'
'example.com/foobar'.replace(domainRegex, '');

ไวยากรณ์

createRegex(pattern, flags);

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
pattern สตริง ข้อความของนิพจน์ทั่วไป
flags สตริง สตริงที่ไม่บังคับซึ่งมีแฟล็กสำหรับนิพจน์ทั่วไปที่สร้าง รองรับ "g" (ส่วนกลาง) และ "i" (ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) ระบบจะละเว้นอักขระอื่นๆ ทั้งหมด

สิทธิ์ที่เกี่ยวข้อง

ไม่มี

เวอร์ชันรูปภาพขั้นต่ำ

2.0.0


decodeUri

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

ตัวอย่าง

const decodeUri = require('decodeUri');

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

ไวยากรณ์

decodeUri(encoded_uri);

พารามิเตอร์

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

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


decodeUriComponent

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

ตัวอย่าง

const decodeUriComponent = require('decodeUriComponent');

const decodedQuery = decodeUriComponent(data.query);
if (decodedQuery) {
  // ...
}

ไวยากรณ์

decodeUriComponent(encoded_uri_component);

พารามิเตอร์

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

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


encodeUri

แสดงผล Uniform Resource Identifier (URI) ที่เข้ารหัสโดยซ่อนสัญลักษณ์พิเศษ แสดงผลสตริงที่แสดงถึงสตริงที่ให้ไว้ซึ่งเข้ารหัสเป็น URI

ตัวอย่าง

const encodeUri = require('encodeUri');
const sendHttpGet = require('sendHttpGet');

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

ไวยากรณ์

encodeUri(uri);

พารามิเตอร์

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

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


encodeUriComponent

แสดงผล Uniform Resource Identifier (URI) ที่เข้ารหัสโดยซ่อนสัญลักษณ์พิเศษ แสดงผลสตริงที่แสดงถึงสตริงที่ให้ไว้ซึ่งเข้ารหัสเป็น URI

ตัวอย่าง

const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');

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

ไวยากรณ์

encodeUriComponent(str);

พารามิเตอร์

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

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


extractEventsFromMpv1

แปลคำขอ Measurement Protocol V1 ที่เข้ามาใหม่เป็นรายการเหตุการณ์ในรูปแบบสคีมาแบบรวม แสดงผลรายการเหตุการณ์ที่ดึงมา จะแสดงข้อผิดพลาดหาก คำขอไม่อยู่ในรูปแบบที่ถูกต้อง

ตัวอย่าง

const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const isRequestMpv1 = require('isRequestMpv1');

if (isRequestMpv1()) {
  const events = extractEventsFromMpv1();
  for (let i = 0; i < events.length; ++i) {
    const event = events[i];
    // Process event.
  }
}

ไวยากรณ์

extractEventsFromMpv1();

สิทธิ์ที่เกี่ยวข้อง

ต้องมีสิทธิ์ read_request ต้องกำหนดค่าสิทธิ์ให้ อนุญาตการเข้าถึงเป็นอย่างน้อย

  • body
  • query parameters

extractEventsFromMpv2

แปลคำขอ Measurement Protocol V2 ที่ส่งเข้ามาเป็นรายการเหตุการณ์ในรูปแบบสคีมาแบบรวม แสดงผลรายการเหตุการณ์ที่ดึงมา จะแสดงข้อผิดพลาดหาก คำขอไม่อยู่ในรูปแบบที่ถูกต้อง

ตัวอย่าง

const extractEventsFromMpv2 = require('extractEventsFromMpv2');
const isRequestMpv2 = require('isRequestMpv2');

if (isRequestMpv2()) {
  const events = extractEventsFromMpv2();
  for (let i = 0; i < events.length; ++i) {
    const event = events[i];
    // Process event.
  }
}

ไวยากรณ์

extractEventsFromMpv2();

สิทธิ์ที่เกี่ยวข้อง

ต้องมีสิทธิ์ read_request ต้องกำหนดค่าสิทธิ์ให้ อนุญาตการเข้าถึงเป็นอย่างน้อย

  • body
  • query parameters

fromBase64

ถอดรหัสสตริงที่เข้ารหัสฐาน 64 แสดงผล undefined หากอินพุตไม่ถูกต้อง

ไวยากรณ์

fromBase64(base64EncodedString);

พารามิเตอร์

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

ตัวอย่าง

const fromBase64 = require('fromBase64');

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

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


generateRandom

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

ตัวอย่าง

const generateRandom = require('generateRandom');

const randomValue = generateRandom(0, 10000000);

ไวยากรณ์

generateRandom(min, max);

พารามิเตอร์

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

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


getAllEventData

แสดงผลสำเนาข้อมูลเหตุการณ์

ไวยากรณ์

getAllEventData();

สิทธิ์ที่เกี่ยวข้อง

read_event_data


getClientName

แสดงผลสตริงที่มีชื่อไคลเอ็นต์ปัจจุบัน

ไวยากรณ์

getClientName();

สิทธิ์ที่เกี่ยวข้อง

read_container_data


getContainerVersion

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

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

ตัวอย่าง

const getContainerVersion = require('getContainerVersion');

const containerVersion = getContainerVersion();
const containerId = containerVersion['containerId'];
const isDebug = containerVersion['debugMode'];

ไวยากรณ์

getContainerVersion();

สิทธิ์ที่เกี่ยวข้อง

read_container_data


getCookieValues

แสดงผลอาร์เรย์ที่มีค่าของคุกกี้ทั้งหมดที่มีชื่อตามที่ระบุ

ตัวอย่าง

const getCookieValues = require('getCookieValues');

const lastVisit = getCookieValues('lastVisit')[0];
if (lastVisit) {
  // ...
}

ไวยากรณ์

getCookieValues(name[, noDecode]);

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
name สตริง ชื่อของคุกกี้
noDecode boolean หากเป็น true ระบบจะไม่ถอดรหัสค่าคุกกี้ก่อนแสดงผล ค่าเริ่มต้นคือ false

สิทธิ์ที่เกี่ยวข้อง

get_cookies


getEventData

แสดงผลสำเนาของค่าในเส้นทางที่ระบุไว้ในข้อมูลเหตุการณ์ แสดงผล undefined หากไม่มีข้อมูลเหตุการณ์หรือไม่มีค่าในเส้นทางที่ระบุ

ตัวอย่าง

const getEventData = require('getEventData');

const campaignId = getEventData('campaign.id');
const itemId = getEventData('items.0.id');
const referrer = getEventData('page_referrer');

พารามิเตอร์

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

ไวยากรณ์

getEventData(keyPath);

สิทธิ์ที่เกี่ยวข้อง

read_event_data


getGoogleAuth

แสดงผลออบเจ็กต์การให้สิทธิ์ซึ่งเมื่อใช้กับ sendHttpGet หรือ sendHttpRequest จะรวมส่วนหัวการให้สิทธิ์สำหรับ Google Cloud APIs API นี้ใช้ข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชันเพื่อค้นหาข้อมูลเข้าสู่ระบบจากสภาพแวดล้อมของเซิร์ฟเวอร์โดยอัตโนมัติ

ตัวอย่าง

const getGoogleAuth = require('getGoogleAuth');
const logToConsole = require('logToConsole');
const sendHttpGet = require('sendHttpGet');

const auth = getGoogleAuth({
  scopes: ['https://www.googleapis.com/auth/datastore']
});

sendHttpGet(
  'https://firestore.googleapis.com/v1/projects/my-project/databases/(default)/documents/collection/document',
  {authorization: auth}
).then((result) => {
  if (result.statusCode >= 200 && result.statusCode < 300) {
    logToConsole('Result: ' + result.body);
    data.gtmOnSuccess();
  } else {
    data.gtmOnFailure();
  }
});

ไวยากรณ์

getGoogleAuth(scopes);

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
scopes อาร์เรย์ อาร์เรย์ของขอบเขต Google API ของ OAuth 2.0 เพื่อขอสิทธิ์เข้าถึง

สิทธิ์ที่เกี่ยวข้อง

ต้องมีสิทธิ์ use_google_credentials สิทธิ์ดังกล่าวต้องมีการกำหนดค่าด้วยขอบเขตที่อนุญาตอย่างน้อย 1 ขอบเขต


getGoogleScript

เรียกทรัพยากรจากชุดสคริปต์ Google ที่กำหนดไว้ล่วงหน้าและแสดงผลสัญญาที่มีสคริปต์และข้อมูลเมตาการแคชที่เกี่ยวข้อง

คำสัญญาจะกำหนดเป็นออบเจ็กต์ที่มี 2 คีย์: script และ metadata หากคำขอไม่สำเร็จ สัญญาจะปฏิเสธด้วยคีย์ reason

ออบเจ็กต์ metadata จะมีข้อมูลเมตาการแคชต่อไปนี้ตามส่วนหัวการตอบสนองของทรัพยากร ช่องแต่ละช่องจะมีอยู่ก็ต่อเมื่อส่วนหัวที่เกี่ยวข้องปรากฏในการตอบสนองของทรัพยากร

{
  'cache-control': string,
  'expires': string,
  'last-modified': string,
}

ตัวอย่าง

const getGoogleScript = require('getGoogleScript');

getGoogleScript('ANALYTICS').then((result) => {
  // Operate on result.script and result.metadata here.
});

ไวยากรณ์

getGoogleScript(script[, options]);

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
script สตริง ชื่อของสคริปต์ สคริปต์ที่รองรับคือ 'ANALYTICS', 'GTAG' และ 'GTM'

ตัวเลือก 'ANALYTICS' จะดึงสคริปต์ Google Analytics จาก https://www.google-analytics.com/analytics.js

ตัวเลือก 'GTAG' จะดึงสคริปต์แท็กที่ติดทั่วเว็บไซต์ (gtag.js) จาก https://www.googletagmanager.com/gtag/js

ตัวเลือก 'GTM' จะดึงสคริปต์ Google Tag Manager จาก https://www.googletagmanager.com/gtm.js
options ออบเจ็กต์ ตัวเลือกคำขอที่ไม่บังคับ โปรดดูตัวเลือกที่รองรับด้านล่าง

ตัวเลือก

ตัวเลือก ประเภท คำอธิบาย
id สตริง ใช้ได้กับ 'GTAG' ที่มีรหัสการวัด gtag และ 'GTM' ที่มีรหัสคอนเทนเนอร์เว็บ (เช่น GTM-XXXX)
debug ทั้งหมด หากเชื่อถือได้ ให้ส่งคำขอและแสดงผลสคริปต์การวัดผลเวอร์ชันแก้ไขข้อบกพร่อง
timeout ตัวเลข คำขอจะหมดเวลาเป็นมิลลิวินาที โดยระบบจะไม่สนใจค่าที่ไม่เป็นบวก หากคำขอหมดเวลา ระบบจะเรียกใช้โค้ดเรียกกลับด้วย undefined สำหรับค่าสคริปต์ และ {} สำหรับออบเจ็กต์ข้อมูลเมตา

ระบบจะไม่สนใจคีย์ตัวเลือกที่ไม่รู้จัก

สิทธิ์ที่เกี่ยวข้อง

ต้องมีสิทธิ์ send_http คุณต้องกำหนดค่าสิทธิ์ให้อนุญาต การเข้าถึงสิ่งต่อไปนี้เป็นอย่างน้อย

  • อนุญาต Google Domains

getRemoteAddress

แสดงผลการแสดง string ของที่อยู่ IP ที่เป็นที่มาของคำขอ เช่น 12.345.67.890 สำหรับ IPv4 หรือ 2001:0db8:85a3:0:0:8a2e:0370:7334 สำหรับ IPv6 โดยอ่านส่วนหัวของคำขอ เช่น Forwarded และ X-Forwarded-For หมายเหตุ: API นี้จะพยายามอย่างสุดความสามารถเพื่อค้นหา IP ต้นทาง แต่ไม่สามารถรับประกันได้ว่าผลลัพธ์จะถูกต้อง

ไวยากรณ์

getRemoteAddress();

สิทธิ์ที่เกี่ยวข้อง

ต้องมีสิทธิ์ read_request ต้องกำหนดค่าสิทธิ์ให้ อนุญาตการเข้าถึงเป็นอย่างน้อย

  • ส่วนหัว Forwarded และ X-Forwarded-For
  • ที่อยู่ IP ระยะไกล

getRequestBody

แสดงผลเนื้อหาของคำขอเป็นสตริง (หากมี) หรือ undefined ในกรณีอื่นๆ

ไวยากรณ์

getRequestBody();

สิทธิ์ที่เกี่ยวข้อง

read_request


getRequestHeader

แสดงผลค่าของส่วนหัวของคำขอที่มีชื่อเป็นสตริง (หากมี) หรือแสดง undefined ในกรณีอื่นๆ หากส่วนหัวซ้ำกัน ระบบจะรวมค่าที่ส่งคืนเข้ากับ ', '

ตัวอย่าง

const getRequestHeader = require('getRequestHeader');

const host = getRequestHeader('host');

ไวยากรณ์

getRequestHeader(headerName);

พารามิเตอร์

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

สิทธิ์ที่เกี่ยวข้อง

read_request


getRequestMethod

แสดงผลเมธอดคำขอ เช่น 'GET' หรือ 'POST' เป็นสตริง

ตัวอย่าง

const getRequestMethod = require('getRequestMethod');

if (getRequestMethod() === 'POST') {
  // Handle the POST request here.
}

ไวยากรณ์

getRequestMethod();

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


getRequestPath

แสดงผลเส้นทางคำขอโดยไม่มีสตริงการค้นหา เช่น หาก URL คือ '/foo?id=123' ค่านี้จะส่งคืนเป็น '/foo' นำคำนำหน้า URL ของคอนเทนเนอร์เซิร์ฟเวอร์ออกจากเส้นทางโดยอัตโนมัติ เช่น หาก URL ของคอนเทนเนอร์เซิร์ฟเวอร์คือ https://example.com/analytics และเส้นทางคำขอคือ '/analytics/foo' ระบบจะแสดงผลลัพธ์เป็น '/foo'

ตัวอย่าง

const getRequestPath = require('getRequestPath');

const requestPath = getRequestPath();
if (requestPath === '/') {
  // Handle a request for the root path.
}

ไวยากรณ์

getRequestPath();

สิทธิ์ที่เกี่ยวข้อง

read_request


getRequestQueryParameter

แสดงผลค่าที่ถอดรหัสของพารามิเตอร์สตริงคำค้นหาที่มีชื่อเป็นสตริงหรือ undefined หากไม่มีพารามิเตอร์ หากมีพารามิเตอร์ซ้ำกันในสตริงคำค้นหา ระบบจะแสดงผลค่าแรกที่ปรากฏในสตริงคำค้นหา

ตัวอย่าง

const getRequestQueryParameter = require('getRequestQueryParameter');

const query = getRequestQueryParameter('query');
if (query) {
  // Process query here.
}

ไวยากรณ์

getRequestQueryParameter(name);

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
name สตริง ชื่อพารามิเตอร์การค้นหา

สิทธิ์ที่เกี่ยวข้อง

read_request


getRequestQueryParameters

แสดงผลพารามิเตอร์การค้นหาของคำขอ HTTP ขาเข้าเป็นออบเจ็กต์ที่แมปชื่อพารามิเตอร์การค้นหากับค่าที่ตรงกัน ชื่อและค่าของพารามิเตอร์จะถูกถอดรหัส

ตัวอย่าง

const getRequestQueryParameters = require('getRequestQueryParameters');

const queryParameters = getRequestQueryParameters();
if (queryParameters['search']) {
  // Handle the search query here.
  const maxResults = queryParameters['max_results'];
}

ไวยากรณ์

getRequestQueryParameters();

สิทธิ์ที่เกี่ยวข้อง

read_request


getRequestQueryString

แสดงผลคำค้นหาคำขอเป็นสตริงโดยไม่มีเครื่องหมายคำถามนำหน้า หรือสตริงว่างเปล่าหาก URL ของคำขอไม่มีสตริงคำค้นหา

ตัวอย่าง

const getRequestQueryString = require('getRequestQueryString');

const queryString = getRequestQueryString();
if (queryString !== '') {
  // Handle the query string.
}

ไวยากรณ์

getRequestQueryString();

สิทธิ์ที่เกี่ยวข้อง

read_request


getTimestamp

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

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

ไวยากรณ์

getTimestamp();

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


getTimestampMillis

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

ไวยากรณ์

getTimestampMillis();

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


getType

แสดงผลสตริงที่อธิบายประเภทของค่าที่ระบุ

ประเภทอินพุต ค่าที่ส่งคืน
สตริง 'string'
ตัวเลข 'number'
boolean 'boolean'
ค่าว่าง 'null'
ไม่ระบุ 'undefined'
อาร์เรย์ 'array'
ออบเจ็กต์ 'object'
การทำงาน 'function'

ตัวอย่าง

const getType = require('getType');

const type = getType(value);
if (type === 'string') {
  // Handle string input.
} else if (type === 'number') {
  // Handle numeric input.
} else {
  logToConsole('Unsupported input type: ', type);
}

ไวยากรณ์

getType(value);

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
value ทั้งหมด ค่าที่ป้อน

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


hmacSha256

คำนวณลายเซ็นที่เข้ารหัสโดยใช้ Hash-based Message Authentication Code (HMAC) กับ SHA-256 ค่าเริ่มต้นคือการเข้ารหัส base64url

หากต้องการใช้ API นี้ ให้ตั้งค่าตัวแปรสภาพแวดล้อม SGTM_CREDENTIALS บนเซิร์ฟเวอร์เป็นเส้นทางของไฟล์คีย์ JSON ที่เข้ารหัส UTF-8 โดยใช้รูปแบบต่อไปนี้

{
  "key1": "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5",
  "key2": "OTg3NjU0MzIxMHp5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2Jh",
  ...
}

ค่าจะเป็นคีย์ HMAC ที่เข้ารหัสฐาน 64

ตัวอย่าง

const hmacSha256 = require('hmacSha256');
const toBase64 = require('toBase64');

const header = toBase64('{"alg":"HS256","typ":"JWT"}', {urlEncoding: true});
const claim = toBase64('{"sub":"1234567890","iat":1698164946}', {urlEncoding: true});
const signature = hmacSha256(header + '.' + claim, 'key1');

const jwt = header + "." + claim + '.' + signature;

ไวยากรณ์

hmacSha256(data, keyId, options)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
data สตริง ข้อมูลที่ใช้คำนวณค่า HMAC
keyId สตริง รหัสคีย์จากไฟล์คีย์ JSON ที่อ้างถึงคีย์ที่จะใช้
options ออบเจ็กต์ การกำหนดค่า API ไม่บังคับ (ดูตัวเลือกด้านล่าง)

ตัวเลือก

ตัวเลือก ประเภท คำอธิบาย
outputEncoding สตริง ระบุรูปแบบการเข้ารหัสสำหรับค่าการแสดงผล รูปแบบที่รองรับคือ hex, base64 หรือ base64url ค่าเริ่มต้นจะเป็น base64url หากไม่ได้ระบุไว้

สิทธิ์ที่เกี่ยวข้อง

use_custom_private_keys

เวอร์ชันรูปภาพขั้นต่ำ

1.0.0


isRequestMpv1

แสดงผล true หากคำขอขาเข้าเป็นคำขอ Measurement Protocol V1 หรือ false ในกรณีอื่นๆ

ตัวอย่าง

const isRequestMpv1 = require('isRequestMpv1');

if (isRequestMpv1()) {
  // Handle Measurement Protocol V1 request.
  const events = extractEventsFromMpv1();
}

ไวยากรณ์

isRequestMpv1();

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


isRequestMpv2

แสดงผล true หากคำขอขาเข้าเป็นคำขอ Measurement Protocol V2 หรือ false ในกรณีอื่นๆ

ตัวอย่าง

const isRequestMpv2 = require('isRequestMpv2');

if (isRequestMpv2()) {
  // Handle Measurement Protocol V2 request.
  const events = extractEventsFromMpv2();
}

ไวยากรณ์

isRequestMpv2();

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


logToConsole

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

บันทึกเหล่านี้จะปรากฏภายใน Logs Explorer ใน Google Cloud Console จาก Logging Explorer ให้เรียกใช้การค้นหา logName =~ "stdout" เพื่อดูรายการบันทึกที่ API นี้สร้างขึ้น

ตัวอย่าง

const logToConsole = require('logToConsole');

const that = 123;
const those = { ... };
logToConsole('that is: ', that, ' and those is: ', those);

ไวยากรณ์

logToConsole(argument1[, argument2, ...]);

พารามิเตอร์

API จะใช้อาร์กิวเมนต์อย่างน้อย 1 รายการ ซึ่งแต่ละรายการจะแปลงเป็นสตริง (หากจำเป็น) และบันทึกลงคอนโซล

สิทธิ์ที่เกี่ยวข้อง

logging


makeInteger

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

ไวยากรณ์

makeInteger(value);

พารามิเตอร์

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

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


makeNumber

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

ไวยากรณ์

makeNumber(value);

พารามิเตอร์

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

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


makeString

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

ไวยากรณ์

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

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


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 แบบเต็มที่จะถูกแยกวิเคราะห์

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


returnResponse

ล้างคำตอบที่เทมเพลตอื่นๆ เคยกำหนดไว้โดยใช้ API ที่แก้ไขการตอบกลับ ซึ่งรวมถึง setCookie, setPixelResponse, setResponseBody, setResponseHeader และ setResponseStatus ค่าเริ่มต้นจะเป็นรหัสสถานะ HTTP 200 เนื้อหาว่างเปล่า และไม่มีส่วนหัว

ขอแนะนำให้ใช้ API นี้จากเทมเพลตไคลเอ็นต์

ไวยากรณ์

returnResponse();

ตัวอย่าง

ดูตัวอย่าง runContainer

สิทธิ์ที่เกี่ยวข้อง

return_response


runContainer

เรียกใช้ตรรกะคอนเทนเนอร์ (ตัวแปร ทริกเกอร์ แท็ก) ในขอบเขตของเหตุการณ์ หากมีการเรียก API นี้ระหว่างการดำเนินการของคอนเทนเนอร์ คอนเทนเนอร์จะทำงานอีกครั้ง

โค้ดเรียกกลับ onComplete และ onStart จะได้รับฟังก์ชันที่เรียกว่า bindToEvent ใช้ bindToEvent เพื่อเรียกใช้ API ในบริบทของเหตุการณ์ ดูรายละเอียดเพิ่มเติมในตัวอย่าง addEventCallback

ขอแนะนำให้ใช้ API นี้จากเทมเพลตไคลเอ็นต์

const returnResponse = require('returnResponse');
const runContainer = require('runContainer');

// Runs the container with a simple pageview event and then returns a response.
runContainer({'event_name': 'pageview'}, () => returnResponse());

ไวยากรณ์

runContainer(event, onComplete, onStart);

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
event ออบเจ็กต์ พารามิเตอร์เหตุการณ์
onComplete ของ Google มีการเรียกใช้หลังจากแท็กทั้งหมดเริ่มทํางานเสร็จสิ้น
onStart ของ Google มีการเรียกกลับทันที ก่อนที่แท็กจะเริ่มเริ่มทำงาน

สิทธิ์ที่เกี่ยวข้อง

run_container


sendEventToGoogleAnalytics

ส่งเหตุการณ์เดียวโดยใช้ข้อมูลเหตุการณ์ทั่วไปไปยัง Google Analytics และแสดงผลสัญญาที่แปลค่าเป็นออบเจ็กต์ที่มีคีย์ location หรือปฏิเสธออบเจ็กต์ที่มีคีย์ reason ปลายทางหรือ Universal Analytics หรือ Google Analytics 4 จะอิงตามรหัสการวัดในข้อมูลเหตุการณ์

ช่อง location ตั้งค่าไว้เป็นส่วนหัว location หากมี

ตัวอย่าง

const sendEventToGoogleAnalytics = require('sendEventToGoogleAnalytics');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');

// Sends an event to Google Analytics and returns failure if the request did not
// succeed. Additionally, if the request resulted in a redirect request, the
// code nominates a redirect response to be returned.
sendEventToGoogleAnalytics(event).then((response) => {
  if (response.location) {
    setResponseHeader('location', response.location);
    setResponseStatus(302);
  } else {
    setResponseStatus(200);
  }
  data.gtmOnSuccess();
}, (err) => {
  setResponseStatus(500);
  data.gtmOnFailure();
});

ไวยากรณ์

sendEventToGoogleAnalytics(event);

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
event ออบเจ็กต์ เหตุการณ์ในรูปแบบสคีมาแบบรวม

สิทธิ์ที่เกี่ยวข้อง

ต้องมีสิทธิ์ send_http คุณต้องกำหนดค่าสิทธิ์ให้อนุญาต การเข้าถึงสิ่งต่อไปนี้เป็นอย่างน้อย

  • อนุญาต Google Domains

sendHttpGet

สร้างคำขอ HTTP GET ไปยัง URL ที่ระบุและส่งคืนสัญญาที่จะแก้ไขด้วยผลลัพธ์เมื่อคำขอเสร็จสมบูรณ์หรือหมดเวลา

ผลลัพธ์ที่แก้ไขแล้วคือออบเจ็กต์ที่มีคีย์ 3 คีย์ ได้แก่ statusCode, headers และ body หากคำขอล้มเหลว (เช่น URL ไม่ถูกต้อง ไม่มีเส้นทางไปยังโฮสต์ การเจรจา SSL ล้มเหลว ฯลฯ) สัญญาจะปฏิเสธด้วย: {reason: 'failed'} หากตั้งค่าตัวเลือก timeout ไว้และคำขอหมดเวลา สัญญาจะปฏิเสธด้วย {reason: 'timed_out'}

ตัวอย่าง

const sendHttpGet = require('sendHttpGet');

// Returns the response body as the value for a variable.
return sendHttpGet('https://example.com/item/' + data.itemId, {
  headers: {key: 'value'},
  timeout: 500,
}).then((result) => result.body, () => undefined);

ไวยากรณ์

sendHttpGet(url[, options]);

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
url สตริง URL ที่ขอ
options ออบเจ็กต์ ตัวเลือกคำขอไม่บังคับ (ดูตัวเลือกด้านล่าง)

ตัวเลือก

ตัวเลือก ประเภท คำอธิบาย
headers สตริง ส่วนหัวของคำขอเพิ่มเติม
timeout ตัวเลข การหมดเวลาเป็นมิลลิวินาทีก่อนที่คำขอจะล้มเลิก ค่าเริ่มต้นคือ 15000
authorization ออบเจ็กต์ ไม่บังคับจากการเรียกไปยัง getGoogleAuth เพื่อใส่ส่วนหัวการให้สิทธิ์เมื่อส่งคำขอไปยัง googleapis.com

สิทธิ์ที่เกี่ยวข้อง

send_http


sendHttpRequest

ส่งคำขอ HTTP ไปยัง URL ที่ระบุและส่งคืนสัญญาที่จะแก้ไขด้วยการตอบกลับเมื่อคำขอเสร็จสมบูรณ์หรือหมดเวลา

ผลลัพธ์ที่แก้ไขแล้วคือออบเจ็กต์ที่มีคีย์ 3 คีย์ ได้แก่ statusCode, headers และ body หากคำขอล้มเหลว (เช่น URL ไม่ถูกต้อง ไม่มีเส้นทางไปยังโฮสต์ การเจรจา SSL ล้มเหลว ฯลฯ) สัญญาจะปฏิเสธด้วย: {reason: 'failed'} หากตั้งค่าตัวเลือก timeout ไว้และคำขอหมดเวลา สัญญาจะปฏิเสธด้วย {reason: 'timed_out'}

ตัวอย่าง

const sendHttpRequest = require('sendHttpRequest');
const setResponseBody = require('setResponseBody');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');

const postBody = 'interaction=click&campaign=promotion&medium=email';
// Sends a POST request and nominates response based on the response to the POST
// request.
sendHttpRequest('https://example.com/collect', {
  headers: {key: 'value'},
  method: 'POST',
  timeout: 500,
}, postBody).then((result) => {
  setResponseStatus(result.statusCode);
  setResponseBody(result.body);
  setResponseHeader('cache-control', result.headers['cache-control']);
});

ไวยากรณ์

sendHttpRequest(url[, options[, body]]);

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
url สตริง URL ที่ขอ
options ออบเจ็กต์ ตัวเลือกคำขอไม่บังคับ (ดูตัวเลือกด้านล่าง)
body สตริง เนื้อหาคำขอไม่บังคับ

ตัวเลือก

ตัวเลือก ประเภท คำอธิบาย
headers สตริง ส่วนหัวของคำขอเพิ่มเติม
method ออบเจ็กต์ เมธอดคำขอ ค่าเริ่มต้นคือ GET
timeout ตัวเลข การหมดเวลาเป็นมิลลิวินาทีก่อนที่คำขอจะล้มเลิก ค่าเริ่มต้นคือ 15000
authorization ออบเจ็กต์ ไม่บังคับจากการเรียกไปยัง getGoogleAuth เพื่อใส่ส่วนหัวการให้สิทธิ์เมื่อส่งคำขอไปยัง googleapis.com

สิทธิ์ที่เกี่ยวข้อง

send_http


sendPixelFromBrowser

ส่งคำสั่งไปยังเบราว์เซอร์เพื่อโหลด URL ที่ระบุเป็นแท็ก <img> โปรโตคอลคำสั่งนี้ใช้ได้ในแท็กเว็บแท็ก Google สำหรับ GA4 และ Google Analytics: เหตุการณ์ GA คุณต้องกำหนดค่า URL ของคอนเทนเนอร์เซิร์ฟเวอร์ ดูรายละเอียดเพิ่มเติมได้ในวิธีการ

API นี้จะแสดง false หากคำขอที่เข้ามาใหม่ไม่รองรับโปรโตคอลคำสั่งหรือหากการตอบกลับถูกล้างแล้ว มิเช่นนั้น API นี้จะแสดง true

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

const sendPixelFromBrowser = require('sendPixelFromBrowser');

sendPixelFromBrowser('https://example.com/?id=123');

ไวยากรณ์

sendPixelFromBrowser(url)

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
url สตริง URL ที่จะส่งไปยังเบราว์เซอร์

สิทธิ์ที่เกี่ยวข้อง

send_pixel_from_browser


setCookie

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

หากต้องการลบคุกกี้ ผู้ใช้ต้องตั้งค่าคุกกี้ด้วยเส้นทางและโดเมนเดียวกันกับที่ใช้สร้างคุกกี้ และกําหนดค่าที่หมดอายุซึ่งเป็นเวลาในอดีต เช่น "Thu, 01 Jan 1970 00:00:00 GMT"

โปรดทราบว่าต้องมีการเรียก returnResponse เพื่อให้ส่งคำตอบกลับไปยังไคลเอ็นต์

ตัวอย่าง

const setCookie = require('setCookie');

// Sets an httpOnly cookie with a max-age of 3600.
setCookie('cookieName', 'cookieValue', {'max-age': 3600, httpOnly: true});

ไวยากรณ์

setCookie(name, value[, options[, noEncode]]);

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
name สตริง ชื่อคุกกี้ ชื่อจะไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
value สตริง ค่าของคุกกี้
options ออบเจ็กต์ แอตทริบิวต์คุกกี้ที่ไม่บังคับ ได้แก่ domain, expires, fallbackDomain,httpOnly, max- age, path, secure, และ sameSite (ดูตัวเลือกด้านล่าง)
noEncode boolean หากจริง ค่าของคุกกี้จะไม่ได้รับการเข้ารหัส ค่าเริ่มต้นคือ false

  • domain: โฮสต์ที่จะส่งคุกกี้ไป หากตั้งค่าเป็นค่าพิเศษ "อัตโนมัติ" แล้ว ระบบจะคำนวณโฮสต์โดยอัตโนมัติโดยใช้กลยุทธ์ต่อไปนี้

    • eTLD+1 ของส่วนหัว Forwarded หากมี
    • eTLD+1 ของส่วนหัว X-Forwarded-Host หากมี
    • eTLD+1 ของส่วนหัว Host
  • expires: อายุการใช้งานสูงสุดของคุกกี้ โดยต้องเป็นสตริงวันที่ในรูปแบบ UTC เช่น "Sat, 26 ตุลาคม 1985 08:21:00 GMT" หากตั้งค่าทั้ง expires และ max-age ไว้ max-age จะมีลำดับความสำคัญเหนือกว่า

  • httpOnly: ห้ามไม่ให้ JavaScript เข้าถึงคุกกี้ถ้า true

  • max-age: จำนวนวินาทีที่คุกกี้จะหมดอายุ เลขศูนย์หรือจำนวนลบ จะหมดอายุคุกกี้ทันที หากตั้งค่าทั้ง expires และ max-age ไว้ max-age จะมีลำดับความสำคัญเหนือกว่า

  • path: เส้นทางที่ต้องอยู่ใน URL ที่ขอ มิฉะนั้นเบราว์เซอร์จะไม่ส่งส่วนหัวของคุกกี้

  • secure: หากตั้งค่าเป็น true ระบบจะส่งคุกกี้ไปยังเซิร์ฟเวอร์เมื่อมีการส่งคำขอจากปลายทาง https: เท่านั้น

  • sameSite: ยืนยันว่าต้องไม่ส่งคุกกี้ไปพร้อมกับคำขอแบบข้ามต้นทาง ต้องเป็น 'strict', 'lax' หรือ 'none'

สิทธิ์ที่เกี่ยวข้อง

set_cookie


setPixelResponse

ตั้งค่าเนื้อหาการตอบกลับเป็น GIF ขนาด 1x1, ตั้งค่าส่วนหัว Content-Type เป็น "image/gif", ตั้งค่าส่วนหัวการแคชที่ User Agent จะไม่แคชการตอบกลับ และตั้งค่าสถานะการตอบกลับเป็น 200

โปรดทราบว่าต้องมีการเรียก returnResponse เพื่อให้ส่งคำตอบกลับไปยังไคลเอ็นต์

ไวยากรณ์

setPixelResponse();

สิทธิ์ที่เกี่ยวข้อง

ต้องมีสิทธิ์ access_response ต้องกำหนดค่าสิทธิ์ให้ อนุญาตการเข้าถึงเป็นอย่างน้อย

  • headers - ต้องอนุญาตคีย์ต่อไปนี้
    • content-type
    • cache-control
    • expires
    • pragma
  • body
  • status

setResponseBody

ตั้งค่าเนื้อหาการตอบกลับเป็นอาร์กิวเมนต์

โปรดทราบว่าต้องมีการเรียก returnResponse เพื่อให้ส่งคำตอบกลับไปยังไคลเอ็นต์

ไวยากรณ์

setResponseBody(body[, encoding]);

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
body สตริง ค่าที่จะตั้งเป็นเนื้อหาการตอบสนอง
encoding สตริง การเข้ารหัสอักขระของเนื้อหาการตอบกลับ (ค่าเริ่มต้นคือ 'utf8') ค่าที่รองรับ ได้แก่ 'ascii', 'utf8', 'utf16le', 'ucs2', 'base64', 'latin1', 'binary' และ 'hex'

สิทธิ์ที่เกี่ยวข้อง

ต้องมีสิทธิ์ access_response ต้องกำหนดค่าสิทธิ์ให้ อนุญาตการเข้าถึงเป็นอย่างน้อย

  • body

setResponseHeader

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

โปรดทราบว่าต้องมีการเรียก returnResponse เพื่อให้ส่งคำตอบกลับไปยังไคลเอ็นต์

ไวยากรณ์

setResponseHeader(name, value);

พารามิเตอร์

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

สิทธิ์ที่เกี่ยวข้อง

ต้องมีสิทธิ์ access_response ต้องกำหนดค่าสิทธิ์ให้ อนุญาตการเข้าถึงเป็นอย่างน้อย

  • headers

setResponseStatus

ตั้งรหัสสถานะ HTTP ของการตอบกลับที่จะแสดง

โปรดทราบว่าต้องมีการเรียก returnResponse เพื่อให้ส่งคำตอบกลับไปยังไคลเอ็นต์

ไวยากรณ์

setResponseStatus(statusCode);

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
statusCode ตัวเลข รหัสสถานะ HTTP ที่จะแสดง

สิทธิ์ที่เกี่ยวข้อง

ต้องมีสิทธิ์ access_response ต้องกำหนดค่าสิทธิ์ให้ อนุญาตการเข้าถึงเป็นอย่างน้อย

  • status

sha256

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

ลายเซ็นและลักษณะการทํางานของ API นี้ตรงกับ API ของ sha256 สําหรับคอนเทนเนอร์เว็บ อย่างไรก็ตาม เทมเพลตที่กําหนดเองในคอนเทนเนอร์เซิร์ฟเวอร์ควรใช้ API sha256Sync เพื่อให้โค้ดง่ายขึ้น

ตัวอย่าง

const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
const sha256 = require('sha256');

sha256('inputString', (digest) => {
  sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digest));
});

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

ไวยากรณ์

sha256(input, onSuccess, options = undefined);

พารามิเตอร์

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

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


sha256Sync

คำนวณและแสดงผลไดเจสต์ SHA-256 ของอินพุตที่เข้ารหัสใน base64 เว้นแต่ออบเจ็กต์ options จะระบุการเข้ารหัสเอาต์พุตอื่น

ตัวอย่าง

const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
const sha256Sync = require('sha256Sync');

const digestBase64 = sha256Sync('inputString');
const digestHex = sha256Sync('inputString', {outputEncoding: 'hex'});
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digestBase64));
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digestHex));

ไวยากรณ์

sha256Sync(input, options = undefined);

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
input สตริง สตริงที่จะแฮช
options ออบเจ็กต์ ออบเจ็กต์ตัวเลือกไม่บังคับสำหรับระบุการเข้ารหัสเอาต์พุต หากระบุไว้ ออบเจ็กต์ควรมีคีย์ outputEncoding ซึ่งมีค่าเป็น base64 หรือ hex

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


templateDataStorage

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

"data" ในชื่อ "templateDataStorage" หมายถึงข้อเท็จจริงที่ว่าเฉพาะข้อมูลประเภทธรรมดาที่ไม่ใช่ฟังก์ชันเท่านั้นที่สามารถจัดเก็บโดยใช้ API นี้ได้ ระบบจะเก็บฟังก์ชันหรือการอ้างอิงไปยังฟังก์ชันที่ส่งไปยัง API เป็น null แทน

ไวยากรณ์

const templateDataStorage = require('templateDataStorage');

// Returns a copy of the value stored for the given key, or null if nothing
// is stored with that key.
templateDataStorage.getItemCopy(key);

// Stores a copy of the value for the given key (or removes the data stored
// for the given key if the input value is null).
templateDataStorage.setItemCopy(key, value);

// Removes the value stored for the given key, if present.
templateDataStorage.removeItem(key);

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

ตัวอย่าง

const sendHttpGet = require('sendHttpGet');
const setResponseBody = require('setResponseBody');
const setResponseStatus = require('setResponseStatus');
const templateDataStorage = require('templateDataStorage');

// Check to see if the item is in the cache.
const cachedBody = templateDataStorage.getItemCopy(data.key);
if (cachedBody) {
  setResponseBody(cachedBody);
  data.gtmOnSuccess();
  return;
}

sendHttpGet(data.url).then((result) => {
  if (result.statusCode >= 200 && result.statusCode < 300) {
    setResponseBody(result.body);
    templateDataStorage.setItemCopy(data.key, result.body);
    data.gtmOnSuccess();
  } else {
    data.gtmOnFailure();
  }
  setResponseStatus(result.statusCode);
});

สิทธิ์ที่เกี่ยวข้อง

access_template_storage


testRegex

ทดสอบสตริงกับนิพจน์ทั่วไปที่สร้างผ่าน API ของ createRegex แสดงผล true หากนิพจน์ทั่วไปตรงกัน แสดงผล false หากไม่เป็นเช่นนั้น

นิพจน์ทั่วไปที่สร้างด้วยแฟล็กส่วนกลางจะเป็นแบบเก็บสถานะ โปรดดูรายละเอียดในเอกสารประกอบ RegExp

ตัวอย่าง

const createRegex = require('createRegex');
const testRegex = require('testRegex');

const domainRegex = createRegex('\\w+\\.com', 'i');

// createRegex returns null if the regex is invalid or Re2 is not available.
if (domainRegex === null) return;

// Returns true
testRegex(domainRegex, 'example.com/foobar');

ไวยากรณ์

testRegex(regex, string);

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
regex ออบเจ็กต์ นิพจน์ทั่วไปที่จะทดสอบ แสดงผลจาก createRegex API
string สตริง ทดสอบสตริงเพื่อทดสอบ

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


toBase64

เข้ารหัสสตริงเป็น base64 หรือ base64url ค่าเริ่มต้นคือการเข้ารหัส base64

ไวยากรณ์

toBase64(input, options);

พารามิเตอร์

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

ตัวเลือก

ตัวเลือก ประเภท คำอธิบาย เวอร์ชันขั้นต่ำ
urlEncoding boolean หาก "จริง" ผลลัพธ์จะเข้ารหัสโดยใช้รูปแบบ base64url 1.0.0

ตัวอย่าง

const toBase64 = require('toBase64');

const base64Hello = toBase64('hello');
const base64UrlHello = toBase64('hello', {urlEncoding: true});

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


BigQuery

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

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

เมื่อการแทรกสําเร็จ คำสัญญาจะจบลงโดยไม่มีอาร์กิวเมนต์

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

ไวยากรณ์

BigQuery.insert(connectionInfo, rows[, options]);

พารามิเตอร์ ประเภท คำอธิบาย
connectionInfo ออบเจ็กต์ กำหนดข้อมูลที่จำเป็นเพื่อเชื่อมต่อกับตาราง BigQuery มีพารามิเตอร์ที่ไม่บังคับ 1 รายการและพารามิเตอร์ที่จําเป็น 2 รายการ ได้แก่
  • projectId - ไม่บังคับ รหัสโปรเจ็กต์ Google Cloud Platform หากไม่ระบุ ระบบจะดึง projectId จากตัวแปรสภาพแวดล้อม GOOGLE_CLOUD_PROJECT ตราบใดที่การตั้งค่าสิทธิ์ access_bigquery สำหรับรหัสโปรเจ็กต์เป็น * หรือ GOOGLE_CLOUD_PROJECT หากคอนเทนเนอร์เซิร์ฟเวอร์กำลังทำงานอยู่บน Google Cloud ระบบจะตั้งค่า GOOGLE_CLOUD_PROJECT เป็นรหัสของโปรเจ็กต์ Google Cloud อยู่แล้ว
  • datasetId - รหัสชุดข้อมูล BigQuery
  • tableId - รหัสตาราง BigQuery
rows อาร์เรย์ แถวที่จะแทรกในตาราง
options ออบเจ็กต์ ตัวเลือกคำขอที่ไม่บังคับ ตัวเลือกที่รองรับ ได้แก่ ignoreUnknownValues และ skip invalidRows ระบบจะไม่สนใจคีย์ตัวเลือกที่ไม่รู้จัก (ดูตัวเลือกด้านล่าง)

พารามิเตอร์ ประเภท คำอธิบาย
ignoreUnknownValues boolean หากตั้งค่าเป็น true ให้ยอมรับแถวที่มีค่าซึ่งไม่ตรงกับสคีมา ระบบจะไม่สนใจค่าที่ไม่รู้จัก ค่าเริ่มต้นคือ false
skipInvalidRows boolean หากตั้งค่าเป็น true ให้แทรกแถวที่ถูกต้องทั้งหมดของคำขอ แม้ว่าจะมีแถวที่ไม่ถูกต้องอยู่ก็ตาม ค่าเริ่มต้นคือ false

ตัวอย่างข้อผิดพลาด

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

โดยทั่วไป ข้อผิดพลาดที่ไม่ใช่การแทรกจะมีออบเจ็กต์ข้อผิดพลาด 1 รายการซึ่งมีคีย์ reason ดังนี้

[{reason: 'invalid'}]

ข้อผิดพลาดในการแทรกอาจมีออบเจ็กต์ข้อผิดพลาดหลายรายการที่มีอาร์เรย์ errors และออบเจ็กต์ row ต่อไปนี้คือตัวอย่างการตอบสนองข้อผิดพลาดจากการแทรก 2 แถวที่มีข้อผิดพลาดเพียงแถวเดียว

[
  {
    "errors": [
      {
        "reason":"invalid"
      }
    ],
    "row": {
      "string_col":"otherString",
      "number_col":-3,
      "bool_col":3
    }
  },
  {
    "errors": [
      {
        "reason":"stopped"
      }
    ],
    "row": {
      "string_col":"stringValue",
      "number_col":5,
      "bool_col:false
    }
  }
]

ตัวอย่าง

const BigQuery = require('BigQuery');

const connectionInfo = {
  'projectId': 'gcp-cloud-project-id',
  'datasetId': 'destination-dataset',
  'tableId': 'destination-table',
};

const rows = [{
  'column1': 'String1',
  'column2': 1234,
}];

const options = {
  'ignoreUnknownValues': true,
  'skipInvalidRows': false,
};

BigQuery.insert(connectionInfo, rows, options)
  .then(data.gtmOnSuccess, data.gtmOnFailure);

สิทธิ์ที่เกี่ยวข้อง

access_bigquery


Firestore

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

API นี้รองรับเฉพาะ Firestore ในโหมดเนทีฟ ไม่ใช่ Firestore ในโหมด Datastore

Firestore.read

ฟังก์ชัน Firestore.read จะอ่านข้อมูลจากเอกสาร Firestore และแสดงผลสัญญาที่แปลงไปยังออบเจ็กต์ที่มี 2 คีย์ ได้แก่ id และ data หากไม่มีเอกสารอยู่ คำสัญญาจะปฏิเสธด้วยออบเจ็กต์ที่มีคีย์ reason เท่ากับ not_found

ไวยากรณ์

Firestore.read(path[, options]);

พารามิเตอร์ ประเภท คำอธิบาย
path สตริง เส้นทางไปยังเอกสารหรือคอลเล็กชัน ต้องไม่ขึ้นต้นหรือลงท้ายด้วย "/"
options ออบเจ็กต์ ตัวเลือกคำขอไม่บังคับ ตัวเลือกที่รองรับ ได้แก่ projectId, disableCache และ transaction ระบบจะละเว้นคีย์ตัวเลือกที่ไม่รู้จัก (ดูตัวเลือกด้านล่าง)

พารามิเตอร์ ประเภท คำอธิบาย
projectId สตริง Optional รหัสโปรเจ็กต์ Google Cloud Platform หากไม่ระบุ ระบบจะดึง projectId จากตัวแปรสภาพแวดล้อม GOOGLE_CLOUD_PROJECT ตราบใดที่การตั้งค่าสิทธิ์ access_firestore สำหรับรหัสโปรเจ็กต์เป็น * หรือ GOOGLE_CLOUD_PROJECT หากคอนเทนเนอร์เซิร์ฟเวอร์กำลังทำงานอยู่บน Google Cloud ระบบจะตั้งค่า GOOGLE_CLOUD_PROJECT เป็นรหัสของโปรเจ็กต์ Google Cloud อยู่แล้ว
disableCache boolean Optional กำหนดว่าจะปิดใช้งานแคชหรือไม่ การแคชจะเปิดใช้โดยค่าเริ่มต้น ซึ่งจะแคชผลลัพธ์ตามระยะเวลาของคำขอ
transaction สตริง Optional ค่าที่ดึงมาจาก Firestore.runTransaction() ทำเครื่องหมายการดำเนินการที่จะใช้ภายในธุรกรรม

ตัวอย่าง

const Firestore = require('Firestore');

return Firestore.read('collection/document', {
  projectId: 'gcp-cloud-project-id',
}).then((result) => result.data.key, () => undefined);

Firestore.write

ฟังก์ชัน Firestore.write จะเขียนข้อมูลไปยังเอกสารหรือคอลเล็กชัน Firestore หากเป็นเส้นทางไปยังคอลเล็กชัน ระบบจะสร้างเอกสารด้วยรหัสที่สร้างขึ้นแบบสุ่ม หากเส้นทางไปยังเอกสารไม่มีอยู่ ระบบจะสร้างเส้นทางนั้นขึ้นมา โดย API นี้จะคืนค่าสัญญาที่แปลงไปเป็นรหัสของเอกสารที่มีการเพิ่มหรือแก้ไข หากใช้ตัวเลือกธุรกรรม API จะยังคงแสดงคำสัญญา แต่จะไม่มีรหัสเนื่องจากการเขียนเป็นกลุ่มๆ

ไวยากรณ์

Firestore.write(path, input[, options]);

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
path สตริง เส้นทางไปยังเอกสารหรือคอลเล็กชัน ต้องไม่ขึ้นต้นหรือลงท้ายด้วย "/"
input ออบเจ็กต์ ค่าที่จะเขียนลงในเอกสาร หากตั้งค่าตัวเลือกการรวมไว้ API จะรวมคีย์จากอินพุตลงในเอกสาร
options ออบเจ็กต์ ตัวเลือกคำขอไม่บังคับ ตัวเลือกที่รองรับ ได้แก่ projectId, merge และ transaction ระบบจะไม่สนใจคีย์ตัวเลือกที่ไม่รู้จัก (ดูตัวเลือกด้านล่าง)

พารามิเตอร์ ประเภท คำอธิบาย
projectId สตริง Optional รหัสโปรเจ็กต์ Google Cloud Platform หากไม่ระบุ ระบบจะดึง projectId จากตัวแปรสภาพแวดล้อม GOOGLE_CLOUD_PROJECT ตราบใดที่การตั้งค่าสิทธิ์ access_firestore สำหรับรหัสโปรเจ็กต์เป็น * หรือ GOOGLE_CLOUD_PROJECT หากคอนเทนเนอร์เซิร์ฟเวอร์กำลังทำงานอยู่บน Google Cloud ระบบจะตั้งค่า GOOGLE_CLOUD_PROJECT เป็นรหัสของโปรเจ็กต์ Google Cloud อยู่แล้ว
merge boolean Optional หากตั้งค่าเป็น true ให้ผสานคีย์จากอินพุตเข้ากับเอกสาร มิเช่นนั้น เมธอดจะลบล้างทั้งเอกสาร ค่าเริ่มต้นคือ false
transaction สตริง Optional ค่าที่ดึงมาจาก Firestore.runTransaction() ทำเครื่องหมายการดำเนินการที่จะใช้ภายในธุรกรรม

ตัวอย่าง

const Firestore = require('Firestore');

const input = {key1: 'value1', key2: 12345};

Firestore.write('collection/document', input, {
  projectId: 'gcp-cloud-project-id',
  merge: true,
}).then((id) => {
  data.gtmOnSuccess();
}, data.gtmOnFailure);

Firestore.query

ฟังก์ชัน Firestore.query จะค้นหาคอลเล็กชันที่ระบุและแสดงผลสัญญาที่แก้ไขเป็นอาร์เรย์ของเอกสาร Firestore ที่ตรงกับเงื่อนไขการค้นหา ออบเจ็กต์เอกสารของ Firestore เหมือนกับที่ระบุไว้ข้างต้นใน Firestore.read หากไม่มีเอกสารที่ตรงกับเงื่อนไขการค้นหา คำสัญญาที่แสดงจะแสดงค่าเป็นอาร์เรย์เปล่า

ไวยากรณ์

Firestore.query(collection, queryConditions[, options]);

พารามิเตอร์ ประเภท คำอธิบาย
collection สตริง เส้นทางไปยังคอลเล็กชัน ต้องไม่ขึ้นต้นหรือลงท้ายด้วย "/"
queryConditions อาร์เรย์ อาร์เรย์ของเงื่อนไขการค้นหา การค้นหาแต่ละรายการจะอยู่ในรูปของอาร์เรย์ที่มีค่า 3 ค่า ได้แก่ key, operator และ expectedValue E.g.: [[‘id’, ‘<’, ‘5’], [‘state’, ‘==’, ‘CA’]]

เงื่อนไขต่างๆ จะใช้ AND ร่วมกันเพื่อสร้างผลการค้นหา โปรดดู โอเปอเรเตอร์การค้นหาของ Firestore เพื่อดูรายการโอเปอเรเตอร์การค้นหาที่เข้ากันได้
options ออบเจ็กต์ ตัวเลือกคำขอไม่บังคับ ตัวเลือกที่รองรับ ได้แก่ projectId, disableCache, limit และ transaction ระบบจะละเว้นคีย์ตัวเลือกที่ไม่รู้จัก (ดูตัวเลือกด้านล่าง)

พารามิเตอร์ ประเภท คำอธิบาย
projectId สตริง Optional รหัสโปรเจ็กต์ Google Cloud Platform หากไม่ระบุ ระบบจะดึง projectId จากตัวแปรสภาพแวดล้อม GOOGLE_CLOUD_PROJECT ตราบใดที่การตั้งค่าสิทธิ์ access_firestore สำหรับรหัสโปรเจ็กต์เป็น * หรือ GOOGLE_CLOUD_PROJECT หากคอนเทนเนอร์เซิร์ฟเวอร์กำลังทำงานอยู่บน Google Cloud ระบบจะตั้งค่า GOOGLE_CLOUD_PROJECT เป็นรหัสของโปรเจ็กต์ Google Cloud อยู่แล้ว
disableCache boolean Optional กำหนดว่าจะปิดใช้งานแคชหรือไม่ การแคชจะเปิดใช้โดยค่าเริ่มต้น ซึ่งจะแคชผลลัพธ์ตามระยะเวลาของคำขอ
limit ตัวเลข Optional เปลี่ยนจำนวนสูงสุดของผลลัพธ์ที่แสดงจากคำค้นหา โดยค่าเริ่มต้นเป็น 5
transaction สตริง Optional ค่าที่ดึงมาจาก Firestore.runTransaction() ทำเครื่องหมายการดำเนินการที่จะใช้ภายในธุรกรรม

ตัวอย่าง

const Firestore = require('Firestore');

const queries = const queries = [['id', '==', '5']];

return Firestore.query('collection', queries, {
  projectId: 'gcp-cloud-project-id',
  limit: 1,
}).then((documents) => documents[0].data.key, () => undefined);

Firestore.runTransaction

ฟังก์ชัน Firestore.runTransaction ช่วยให้ผู้ใช้อ่านและเขียนจาก Firestore ได้โดยอัตโนมัติ หากเกิดข้อขัดแย้งในการเขียนพร้อมกันหรือธุรกรรมอื่น ระบบจะลองทำธุรกรรมอีกครั้งสูงสุด 2 ครั้ง หากดำเนินการไม่สำเร็จหลังจากพยายามครบ 3 ครั้ง API จะปฏิเสธโดยมีข้อผิดพลาด โดย API นี้จะส่งคืนสัญญาที่แปลงไปเป็นอาร์เรย์ของรหัสเอกสารสำหรับการดำเนินการเขียนแต่ละครั้ง หากธุรกรรมดำเนินการสำเร็จ และจะปฏิเสธโดยมีข้อผิดพลาดหากดำเนินการไม่สำเร็จ

ไวยากรณ์

Firestore.runTransaction(callback[, options]);

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
callback ของ Google โค้ดเรียกกลับที่มีการเรียกใช้ด้วยรหัสธุรกรรมสตริง คุณส่งรหัสธุรกรรมไปในการเรียก API แบบอ่าน/เขียน/ค้นหาได้ ฟังก์ชันเรียกกลับนี้ต้องแสดงผลสัญญา โค้ดเรียกกลับอาจทำงานสูงสุด 3 ครั้งก่อนล้มเหลว
options ออบเจ็กต์ ตัวเลือกคำขอไม่บังคับ ตัวเลือกที่รองรับเท่านั้นคือ projectId ระบบจะไม่สนใจคีย์ตัวเลือกที่ไม่รู้จัก (ดูตัวเลือกด้านล่าง)

พารามิเตอร์ ประเภท คำอธิบาย
projectId สตริง Optional รหัสโปรเจ็กต์ Google Cloud Platform หากไม่ระบุ ระบบจะดึง projectId จากตัวแปรสภาพแวดล้อม GOOGLE_CLOUD_PROJECT ตราบใดที่การตั้งค่าสิทธิ์ access_firestore สำหรับรหัสโปรเจ็กต์เป็น * หรือ GOOGLE_CLOUD_PROJECT หากคอนเทนเนอร์เซิร์ฟเวอร์กำลังทำงานอยู่บน Google Cloud ระบบจะตั้งค่า GOOGLE_CLOUD_PROJECT เป็นรหัสของโปรเจ็กต์ Google Cloud อยู่แล้ว

ตัวอย่าง

const Firestore = require('Firestore');

const path = 'collection/document';
const projectId = 'gcp-cloud-project-id';

Firestore.runTransaction((transaction) => {
  const transactionOptions = {
    projectId: projectId,
    transaction: transaction,
  };
  // Must return a promise.
  return Firestore.read(path, transactionOptions).then((result) => {
    const newInputCount = result.data.inputCount + 1;
    const input = {key1: 'value1', inputCount: newInputCount};
    return Firestore.write(path, input, transactionOptions);
  });
}, {
  projectId: projectId
}).then((ids) => {
  data.gtmOnSuccess();
}, data.gtmOnFailure);

ตัวอย่างข้อผิดพลาด

ข้อผิดพลาดที่มีในฟังก์ชัน Firestore แต่ละรายการจะถูกปฏิเสธเมื่อใช้ออบเจ็กต์ที่มีคีย์ reason ดังนี้

Firestore.read(...).then(onSuccess, (error) => {
  if (error.reason === 'unknown') {
    // Handle the unknown error here.
  }
});

สาเหตุของข้อผิดพลาดอาจมีแต่ไม่จำกัดเพียงรหัสข้อผิดพลาดของ Firestore REST API

สิทธิ์ที่เกี่ยวข้อง

access_firestore


JSON

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

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

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

ตัวอย่าง

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

ไวยากรณ์

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

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


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

พารามิเตอร์

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

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


Messages

API ต่อไปนี้ทำงานร่วมกันเพื่อให้ส่งข้อความระหว่างส่วนต่างๆ ของคอนเทนเนอร์ได้


addMessageListener

เพิ่มฟังก์ชันที่ฟังข้อความประเภทหนึ่งๆ เมื่อมีการส่งข้อความประเภทนั้นโดยใช้ sendMessage API (โดยปกติจะเป็นแท็ก) การเรียกกลับจะทำงานพร้อมกัน โค้ดเรียกกลับจะทำงานโดยมีพารามิเตอร์ 2 ตัวดังนี้

  1. messageType:string
  2. message:Object

หากมีการเพิ่มโค้ดเรียกกลับในไคลเอ็นต์ โค้ดเรียกกลับจะได้รับข้อความในเหตุการณ์ทั้งหมดที่ไคลเอ็นต์สร้างขึ้น หากโค้ดเรียกกลับควรได้รับข้อความจากบางเหตุการณ์ ให้เชื่อมโยง API นี้กับเหตุการณ์โดยใช้ bindToEvent ในฟังก์ชัน onStart ของ runContainer API ดูตัวอย่าง

ไวยากรณ์

const addMessageListener = require('addMessageListener');

addMessageListener('send_pixel', (messageType, message) => {
  // This will be run whenever something sends a 'send_pixel' message.
});

พารามิเตอร์

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

ตัวอย่าง

const addMessageListener = require('addMessageListener');
const claimRequest = require('claimRequest');
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');

claimRequest();
addMessageListener('send_pixel', (messageType, message) => {
  // This will be run whenever a tag sends a 'send_pixel' message.
});

const events = extractEventsFromMpv1();
let eventsCompleted = 0;
events.forEach((event, i) => {
  runContainer(events[i], /* onComplete= */ () => {
    if (events.length === ++eventsCompleted) {
      returnResponse();
    }
  }, /* onStart= */ (bindToEvent) => {
    if (i === 0) {
      bindToEvent(addMessageListener)('send_pixel', (messageType, message) => {
        // This will be called whenever a tag for the first event sends a
        // 'send_pixel' message.
      });
    }
  });
});

สิทธิ์ที่เกี่ยวข้อง

ต้องมีสิทธิ์ use_message สิทธิ์จะต้องได้รับการกำหนดค่าดังต่อไปนี้

  • ประเภทข้อความที่มี Usage จาก listen หรือ listen_and_send

hasMessageListener

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

ไวยากรณ์

const hasMessageListener = require('hasMessageListener');

hasMessageListener('send_pixel');

สิทธิ์ที่เกี่ยวข้อง

ไม่มี


sendMessage

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

ไวยากรณ์

const sendMessage = require('sendMessage');

sendMessage('send_pixel', {url: 'https://analytics.example.com/collect'});

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
messageType สตริง ประเภทข้อความที่จะส่ง หากค่าไม่ใช่สตริง ระบบจะเปลี่ยนค่าเป็นสตริง
message ออบเจ็กต์ ข้อความที่จะส่ง หากข้อความไม่ใช่ออบเจ็กต์ API จะไม่ดำเนินการใดๆ

สิทธิ์ที่เกี่ยวข้อง

ต้องมีสิทธิ์ use_message สิทธิ์จะต้องได้รับการกำหนดค่าดังต่อไปนี้

  • ประเภทข้อความที่มี Usage จาก listen_and_send หรือ send

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) เป็นออบเจ็กต์ที่ไม่ตรึงแม้ว่าค่าอินพุตที่สอง (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.

Promise

แสดงผลออบเจ็กต์ที่ระบุเมธอดสำหรับการโต้ตอบกับคำสัญญา

คำสัญญามีฟังก์ชันการทำงานเทียบเท่ากับคำสัญญา JavaScript แต่ละอินสแตนซ์จะมี 3 วิธีที่แสดงผลเป็น "คำสัญญา" ซึ่งจะอนุญาตให้ดำเนินการต่อไปได้เมื่อคำสัญญาตกลงเรียบร้อยแล้ว ดังนี้

  • .then() - จัดการทั้งกรณีที่ได้รับการแก้ไขและถูกปฏิเสธ จะมีการเรียกกลับ 2 รายการเป็นพารามิเตอร์ รายการหนึ่งสำหรับกรณีสำเร็จและอีกรายการหนึ่งสำหรับกรณีล้มเหลว
  • .catch() - จัดการเคสที่ถูกปฏิเสธเท่านั้น ใช้โค้ดเรียกกลับ เป็นพารามิเตอร์
  • .finally() - ระบุวิธีเรียกใช้โค้ดไม่ว่าสัญญาจะได้รับการแก้ไขหรือปฏิเสธ ใช้โค้ดเรียกกลับ 1 รายการเป็นพารามิเตอร์ที่ถูกเรียกใช้โดยไม่มีอาร์กิวเมนต์

ตัวแปรที่แสดงผลสัญญาจะเท่ากับค่าที่แปลงแล้วของคำมั่นสัญญา หรือ false หากคำสัญญาปฏิเสธ

ตัวอย่าง

promise.then((resolvedValue) => {
    // Handles when promise resolves.
  }, (rejectedValue) => {
    // Handles when promise rejects.
  });
promise.catch((rejectedValue) => {
    // Handles when promise rejects.
  });
promise.finally(() => {
    // Runs regardless of whether or not the previous promise resolves or
    // rejects.
  });

Promise.all

จะแสดงคำมั่นสัญญาที่

  • แก้ไขเมื่ออินพุตทั้งหมดแก้ไขปัญหาแล้ว หรือ
  • ปฏิเสธเมื่ออินพุตใดก็ตามปฏิเสธ

ไวยากรณ์

Promise.all(inputs);

พารามิเตอร์

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

ตัวอย่าง

const Promise = require('Promise');
const sendHttpGet = require('sendHttpGet');

return Promise.all(['a', sendHttpGet('https://example.com')])
  .then((results) => {
    // results will equal: ['a', {statusCode: 200, headers: {}, body: ''}]
  });

สิทธิ์ที่เกี่ยวข้อง

ไม่มี

Promise.create

สร้างคำสัญญาที่มีฟังก์ชันการทำงานเทียบเท่ากับคำสัญญา JavaScript

ไวยากรณ์

Promise.create(resolver);

พารามิเตอร์

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

ตัวอย่าง

const Promise = require('Promise');

return Promise.create((resolve, reject) => {
  // Do asynchronous work that eventually calls resolve() or reject()
});

สิทธิ์ที่เกี่ยวข้อง

ไม่มี

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

ไวยากรณ์

mock(apiName, returnValue);

พารามิเตอร์

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

ตัวอย่าง

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

runCode

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

ไวยากรณ์

runCode(data)

พารามิเตอร์

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

ผลลัพธ์

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

ตัวอย่าง

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