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

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


addEventCallback

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

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

ไวยากรณ์

const addEventCallback = require('addEventCallback');

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

พารามิเตอร์

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

ออบเจ็กต์ 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 function ฟังก์ชันที่จะเรียกใช้

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

ไม่มี


claimRequest

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

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

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

ตัวอย่าง

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

สร้างอินสแตนซ์นิพจน์ทั่วไปใหม่และแสดงผลโดยรวมไว้ในออบเจ็กต์ คุณไม่สามารถ เข้าถึงนิพจน์ทั่วไปได้โดยตรง อย่างไรก็ตาม คุณสามารถส่งผ่านไปยัง 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 string ข้อความของนิพจน์ทั่วไป
flags string สตริงที่ไม่บังคับซึ่งมีแฟล็กสำหรับนิพจน์ทั่วไปที่สร้างขึ้น ระบบรองรับ `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 string 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 string 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 string องค์ประกอบของ 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

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

ไวยากรณ์

fromBase64(base64EncodedString);

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
base64EncodedString string สตริงที่เข้ารหัส 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 number ค่าที่เป็นไปได้ขั้นต่ำของจำนวนเต็มที่แสดงผล (รวม)
max number ค่าที่เป็นไปได้สูงสุดของจำนวนเต็มที่แสดงผล (รวม)

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

ไม่มี


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 string ชื่อคุกกี้
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 any เส้นทางของคีย์จะมีจุดคั่นระหว่างคอมโพเนนต์เส้นทาง ซึ่งอาจเป็นคีย์ในออบเจ็กต์หรือดัชนีในอาร์เรย์ก็ได้ หาก keyPath ไม่ใช่สตริง ระบบจะบังคับให้เป็นสตริง

ไวยากรณ์

getEventData(keyPath);

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

read_event_data


getGoogleAuth

แสดงผลออบเจ็กต์การให้สิทธิ์ที่เมื่อใช้กับ sendHttpGet หรือ sendHttpRequest จะรวมส่วนหัวการให้สิทธิ์สำหรับ Google Cloud API 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 Array อาร์เรย์ของขอบเขต Google API ของ OAuth 2.0 เพื่อขอสิทธิ์เข้าถึง

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

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


getGoogleScript

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

Promise จะแปลงเป็นออบเจ็กต์ที่มีคีย์ 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 string ชื่อสคริปต์ สคริปต์ที่รองรับ ได้แก่ '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 object ตัวเลือกคำขอที่ไม่บังคับ ดูตัวเลือกที่รองรับได้ที่ด้านล่าง

ตัวเลือก

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

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

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

ต้องได้รับสิทธิ์จาก send_http ต้องกำหนดค่าสิทธิ์เพื่ออนุญาต การเข้าถึงอย่างน้อย

  • อนุญาต Google Domains

getRemoteAddress

แสดงผลสตริงที่แสดงที่อยู่ 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

แสดงผลค่าของส่วนหัวของคำขอที่มีชื่อเป็น string หากมี หรือ 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 string ชื่อพารามิเตอร์การค้นหา

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

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

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

ไวยากรณ์

getTimestamp();

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

ไม่มี


getTimestampMillis

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

ไวยากรณ์

getTimestampMillis();

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

ไม่มี


getType

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

ประเภทอินพุต ค่าที่แสดงผล
สตริง 'string'
number 'number'
boolean 'boolean'
null 'null'
ไม่ได้กำหนด 'undefined'
Array '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 any ค่าอินพุต

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

ไม่มี


hmacSha256

คำนวณลายเซ็นที่เข้ารหัสโดยใช้รหัสการตรวจสอบสิทธิ์ข้อความแบบแฮช (HMAC) ด้วย SHA-256 ค่าเริ่มต้นคือการเข้ารหัส base64url

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

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

ค่าคือคีย์ HMAC ที่เข้ารหัส base64 ข้อความ JSON ต้องไม่ขึ้นต้นด้วยเครื่องหมายลำดับไบต์

ตัวอย่าง

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 string ข้อมูลที่จะใช้คำนวณค่า HMAC
keyId สตริง รหัสคีย์จากไฟล์คีย์ JSON ที่อ้างอิงถึงคีย์ที่จะใช้
options object การกำหนดค่า API ที่ไม่บังคับ (ดูตัวเลือกด้านล่าง)

ตัวเลือก

ตัวเลือก ประเภท คำอธิบาย
outputEncoding string ระบุรูปแบบการเข้ารหัสสำหรับ ค่าที่ส่งคืน รูปแบบที่รองรับคือ 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 จาก Logs 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

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

ไวยากรณ์

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 string ชื่อคอลัมน์ที่มีค่าจะกลายเป็นคีย์ในที่แปลงแล้ว 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 string URL แบบเต็มที่จะได้รับการแยกวิเคราะห์

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

ไม่มี


returnResponse

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

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

ไวยากรณ์

returnResponse();

ตัวอย่าง

ดูตัวอย่าง runContainer

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

return_response


runContainer

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

Callback 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 object พารามิเตอร์เหตุการณ์
onComplete function Callback ที่เรียกใช้หลังจากแท็กทั้งหมดเริ่มทำงานเสร็จแล้ว
onStart function การเรียกกลับที่เรียกใช้ทันทีก่อนที่แท็กจะเริ่มทํางาน

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

run_container


sendEventToGoogleAnalytics

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

ระบบจะตั้งค่าฟิลด์ location เป็นส่วนหัว location หากมี

ตัวอย่าง

const logToConsole = require('logToConsole');
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();
}).catch((error) => {
  logToConsole(error.reason);
  setResponseStatus(500);
  data.gtmOnFailure();
});

ไวยากรณ์

sendEventToGoogleAnalytics(event);

พารามิเตอร์

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

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

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

  • อนุญาต Google Domains

sendHttpGet

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

ผลลัพธ์ที่แก้ไขแล้วคือออบเจ็กต์ที่มีคีย์ 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 string URL ที่ขอ
options object ตัวเลือกคำขอไม่บังคับ (ดูตัวเลือกด้านล่าง)

ตัวเลือก

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

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

send_http


sendHttpRequest

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

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

ตัวเลือก

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

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

send_http


sendPixelFromBrowser

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

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

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

const sendPixelFromBrowser = require('sendPixelFromBrowser');

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

ไวยากรณ์

sendPixelFromBrowser(url)

พารามิเตอร์

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

ตัวเลือก

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

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

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

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

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

  • 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 สตริง ไม่ระบุ ค่าของส่วนหัว หากเป็น Null หรือไม่ได้กำหนดไว้ ระบบจะล้างส่วนหัวที่มีชื่อจากการตอบกลับที่จะแสดงผล

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

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

  • headers

setResponseStatus

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

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

ไวยากรณ์

setResponseStatus(statusCode);

พารามิเตอร์

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

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

ต้องได้รับสิทธิ์จาก access_response ต้องกำหนดค่าสิทธิ์เพื่ออนุญาตให้เข้าถึงอย่างน้อยรายการต่อไปนี้

  • status

sha256

คำนวณไดเจสต์ SHA-256 ของอินพุตและเรียกใช้ Callback ด้วยไดเจสต์ที่เข้ารหัสใน 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 string สตริงที่จะแฮช
onSuccess function เรียกใช้ด้วยไดเจสต์ที่ได้ ซึ่งเข้ารหัสใน Base64 เว้นแต่ว่าออบเจ็กต์ options จะระบุการเข้ารหัสเอาต์พุตอื่น
options object ออบเจ็กต์ตัวเลือกไม่บังคับเพื่อระบุการเข้ารหัสเอาต์พุต หากระบุ ออบเจ็กต์ควรมีคีย์ 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 string สตริงที่จะแฮช
options object ออบเจ็กต์ตัวเลือกไม่บังคับเพื่อระบุการเข้ารหัสเอาต์พุต หากระบุ ออบเจ็กต์ควรมีคีย์ 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

ทดสอบสตริงกับนิพจน์ทั่วไปที่สร้างผ่าน createRegex API แสดงผล 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 string สตริงที่จะเข้ารหัส
options object การกำหนดค่า API ที่ไม่บังคับ (ดูตัวเลือกด้านล่าง)

ตัวเลือก

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

ตัวอย่าง

const toBase64 = require('toBase64');

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

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

ไม่มี


BigQuery

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

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

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

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

ไวยากรณ์

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

พารามิเตอร์

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

ตัวเลือก

พารามิเตอร์ ประเภท คำอธิบาย
ignoreUnknownValues บูลีน หากตั้งค่าเป็น true ระบบจะยอมรับแถวที่มีค่าที่ไม่ตรงกับสคีมา ระบบจะไม่สนใจค่าที่ไม่รู้จัก ค่าเริ่มต้นคือ false
skipInvalidRows บูลีน หากตั้งค่าเป็น 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 นอกจากนี้ API ยังรองรับเฉพาะการใช้ฐานข้อมูลเริ่มต้นเท่านั้น

Firestore.read

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

ไวยากรณ์

Firestore.read(path[, options]);

พารามิเตอร์

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

ตัวเลือก

พารามิเตอร์ ประเภท คำอธิบาย
projectId string ไม่บังคับ รหัสโปรเจ็กต์ Google Cloud Platform หากไม่ระบุ ระบบจะดึงข้อมูล projectId จากตัวแปรสภาพแวดล้อม GOOGLE_CLOUD_PROJECT ตราบใดที่การตั้งค่ากลุ่มสิทธิ์ access_firestore สำหรับรหัสโปรเจ็กต์ตั้งค่าเป็น * หรือ GOOGLE_CLOUD_PROJECT หากคอนเทนเนอร์ของเซิร์ฟเวอร์ทำงานใน Google Cloud ระบบจะตั้งค่า GOOGLE_CLOUD_PROJECT เป็นรหัสของโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google Cloud อยู่แล้ว
disableCache บูลีน ไม่บังคับ กำหนดว่าจะปิดใช้แคชหรือไม่ ระบบจะเปิดใช้การแคชโดยค่าเริ่มต้น ซึ่งจะแคชผลลัพธ์ตามระยะเวลาของคำขอ
transaction string ไม่บังคับ ค่าที่ดึงมาจาก 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 นี้จะแสดงผล Promise ที่แก้ไขเป็นรหัสของเอกสารที่เพิ่มหรือแก้ไข หากใช้ตัวเลือกธุรกรรม API จะยังคงแสดงผล Promise แต่จะไม่มีรหัสเนื่องจากมีการเขียนแบบกลุ่ม

ไวยากรณ์

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

พารามิเตอร์

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

ตัวเลือก

พารามิเตอร์ ประเภท คำอธิบาย
projectId string ไม่บังคับ รหัสโปรเจ็กต์ Google Cloud Platform หากไม่ระบุ ระบบจะดึงข้อมูล projectId จากตัวแปรสภาพแวดล้อม GOOGLE_CLOUD_PROJECT ตราบใดที่การตั้งค่ากลุ่มสิทธิ์ access_firestore สำหรับรหัสโปรเจ็กต์ตั้งค่าเป็น * หรือ GOOGLE_CLOUD_PROJECT หากคอนเทนเนอร์ของเซิร์ฟเวอร์ทำงานใน Google Cloud GOOGLE_CLOUD_PROJECT จะตั้งค่าเป็น รหัสของโปรเจ็กต์ Google Cloud อยู่แล้ว
merge บูลีน ไม่บังคับ หากตั้งค่าเป็น true ให้ผสานคีย์จากอินพุตลงในเอกสาร ไม่เช่นนั้นเมธอดจะลบล้างทั้งเอกสาร ค่าเริ่มต้นคือ false
transaction string ไม่บังคับ ค่าที่ดึงมาจาก 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 จะค้นหาคอลเล็กชันที่ระบุและแสดงผล Promise ที่แก้ไขเป็นอาร์เรย์ของเอกสาร Firestore ที่ตรงกับเงื่อนไขการค้นหา ออบเจ็กต์เอกสาร Firestore จะเหมือนกับที่ระบุไว้ข้างต้นใน Firestore.read หากไม่มีเอกสารที่ตรงกับเงื่อนไขการค้นหา สัญญาที่ส่งคืนจะเปลี่ยนเป็นอาร์เรย์ว่าง

ไวยากรณ์

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

พารามิเตอร์

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

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

ตัวเลือก

พารามิเตอร์ ประเภท คำอธิบาย
projectId string ไม่บังคับ รหัสโปรเจ็กต์ของ Google Cloud Platform หากไม่ระบุ ระบบจะดึงข้อมูล projectId จากตัวแปรสภาพแวดล้อม GOOGLE_CLOUD_PROJECT ตราบใดที่การตั้งค่ากลุ่มสิทธิ์ access_firestore สำหรับรหัสโปรเจ็กต์ตั้งค่าเป็น * หรือ GOOGLE_CLOUD_PROJECT หากคอนเทนเนอร์ของเซิร์ฟเวอร์ทำงานใน Google Cloud ระบบจะตั้งค่า GOOGLE_CLOUD_PROJECT เป็นรหัสโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google Cloud อยู่แล้ว
disableCache บูลีน ไม่บังคับ กำหนดว่าจะปิดใช้แคชหรือไม่ ระบบจะเปิดใช้การแคชโดยค่าเริ่มต้น ซึ่งจะแคชผลลัพธ์ตามระยะเวลาของคำขอ
limit number ไม่บังคับ เปลี่ยนจำนวนผลลัพธ์สูงสุดที่คำค้นหาแสดง โดยค่าเริ่มต้นคือ 5
transaction สตริง ไม่บังคับ ค่าที่ดึงมาจาก 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 นี้จะแสดงผล Promise ที่แปลงเป็นอาร์เรย์ของรหัสเอกสารสำหรับการดำเนินการเขียนแต่ละครั้ง หากธุรกรรมสำเร็จ และจะปฏิเสธพร้อมข้อผิดพลาดหากไม่สำเร็จ

ไวยากรณ์

Firestore.runTransaction(callback[, options]);

พารามิเตอร์

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

ตัวเลือก

พารามิเตอร์ ประเภท คำอธิบาย
projectId string ไม่บังคับ รหัสโปรเจ็กต์ 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

หากเพิ่ม Callback ในไคลเอ็นต์ Callback จะได้รับข้อความในเหตุการณ์ทั้งหมดที่ไคลเอ็นต์สร้างขึ้น หากการเรียกกลับควรรับข้อความจากเหตุการณ์หนึ่งๆ เท่านั้น ให้เชื่อมโยง 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 string ประเภทข้อความที่จะฟัง หากค่าไม่ใช่สตริง ระบบจะ บังคับให้เป็นสตริง
callback function การเรียกกลับที่จะเรียกใช้เมื่อมีการส่งข้อความประเภทที่เกี่ยวข้อง หาก Callback ไม่ใช่ฟังก์ชัน 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 string ประเภทข้อความที่จะส่ง หากค่าไม่ใช่สตริง ระบบจะบังคับให้เป็นสตริง
message object ข้อความที่จะส่ง หากข้อความไม่ใช่ออบเจ็กต์ API จะไม่ดำเนินการใดๆ

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

ต้องมีสิทธิ์ use_message ต้องกำหนดค่าสิทธิ์เพื่ออนุญาต อย่างน้อย

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

Object

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

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

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

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

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

delete() method provides the Standard Library delete operator behavior. โดยจะนำคีย์ที่ระบุออกจากออบเจ็กต์ เว้นแต่ออบเจ็กต์จะถูกตรึงไว้ เช่นเดียวกับโอเปอเรเตอร์ delete ของ Standard Library ฟังก์ชันนี้จะแสดงผล true หากค่าอินพุตแรก (objectInput) เป็นออบเจ็กต์ที่ไม่ได้ถูกตรึงไว้ แม้ว่าค่าอินพุตที่ 2 (keyToDelete) จะระบุคีย์ที่ไม่มีอยู่ก็ตาม และจะแสดง false ในกรณีอื่นๆ ทั้งหมด อย่างไรก็ตาม ตัวดำเนินการนี้แตกต่างจากตัวดำเนินการลบของ Standard Library ดังนี้

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

ไวยากรณ์

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

พารามิเตอร์

Object.keys

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

Object.values

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

Object.entries

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

Object.freeze

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

Object.delete

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

ตัวอย่าง

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

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

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

  • .then() - จัดการทั้งเคสที่แก้ไขแล้วและเคสที่ถูกปฏิเสธ โดยจะใช้การเรียกกลับ 2 รายการเป็นพารามิเตอร์ ได้แก่ รายการหนึ่งสำหรับกรณีที่สำเร็จและอีกรายการหนึ่งสำหรับกรณีที่ล้มเหลว
  • .catch() - จัดการเฉพาะเคสที่ถูกปฏิเสธเท่านั้น ใช้ Callback 1 รายการเป็นพารามิเตอร์
  • .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 ที่มีลักษณะอย่างใดอย่างหนึ่งต่อไปนี้

  • จะได้รับการแก้ไขเมื่ออินพุตทั้งหมดได้รับการแก้ไข หรือ
  • ปฏิเสธเมื่ออินพุตใดๆ ปฏิเสธ

ไวยากรณ์

Promise.all(inputs);

พารามิเตอร์

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

ตัวอย่าง

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

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

ไวยากรณ์

Promise.create(resolver);

พารามิเตอร์

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

ตัวอย่าง

const Promise = require('Promise');

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

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

ไม่มี

Test API

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


assertApi

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

ไวยากรณ์

assertApi(apiName)

พารามิเตอร์

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

Matchers

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

ตัวอย่าง

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

assertThat

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

ไวยากรณ์

assertThat(actual, opt_message)

พารามิเตอร์

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

เครื่องมือจับคู่

Matcher คำอธิบาย
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() ยืนยันว่าเรื่องนี้เป็นค่าใดก็ได้นอกเหนือจากค่าบวกหรือค่าลบ Infinity
isEqualTo(expected) ยืนยันว่าเรื่องเท่ากับค่าที่กำหนด ซึ่งเป็นการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบการอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์ซ้ำๆ
isNotEqualTo(expected) ยืนยันว่าเรื่องไม่เท่ากับค่าที่ระบุ นี่เป็นการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบการอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และ อาร์เรย์แบบเรียกซ้ำ
isAnyOf(...expected) ยืนยันว่าเรื่องเท่ากับค่าใดค่าหนึ่งที่ระบุ นี่คือ การเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบการอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และ อาร์เรย์แบบเรียกซ้ำ
isNoneOf(...expected) ยืนยันว่าเรื่องไม่เท่ากับค่าที่ระบุ นี่ คือการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบการอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์ซ้ำๆ
isStrictlyEqualTo(expected) ยืนยันว่าเรื่องเท่ากับ (===) ค่าที่ระบุอย่างเคร่งครัด
isNotStrictlyEqualTo(expected) ยืนยันว่าเรื่องไม่เท่ากับ (!==) ค่าที่ระบุอย่างเคร่งครัด
isGreaterThan(expected) ยืนยันว่าเรื่องนั้นมากกว่า (>) ค่าที่กำหนด ในการเปรียบเทียบที่เรียงลำดับ
isGreaterThanOrEqualTo(expected) ยืนยันว่า Subject มากกว่าหรือเท่ากับ (>=) ค่าที่ระบุในการเปรียบเทียบที่เรียงลำดับ
isLessThan(expected) ยืนยันว่าเรื่องน้อยกว่า (<) ค่าที่ระบุในการเปรียบเทียบแบบเรียงลำดับ
isLessThanOrEqualTo(expected) ยืนยันว่าเรื่องน้อยกว่าหรือเท่ากับ (<=) ค่าที่ระบุในการเปรียบเทียบแบบเรียงลำดับ
contains(...expected) ยืนยันว่าออบเจ็กต์เป็นอาร์เรย์หรือสตริงที่มีค่าที่กำหนดทั้งหมด ตามลำดับใดก็ได้ นี่เป็นการเปรียบเทียบมูลค่า ไม่ใช่การเปรียบเทียบ การอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์ซ้ำๆ
doesNotContain(...expected) ยืนยันว่าเรื่องเป็นอาร์เรย์หรือสตริงที่ไม่มีค่าใดๆ ของค่าที่กำหนด นี่เป็นการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบการอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์ซ้ำๆ
containsExactly(...expected) ยืนยันว่า Subject เป็นอาร์เรย์ที่มีค่าทั้งหมดที่ระบุ ตามลำดับใดก็ได้ และไม่มีค่าอื่นๆ นี่เป็นการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบการอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์ซ้ำๆ
doesNotContainExactly(...expected) ยืนยันว่าออบเจ็กต์เป็นอาร์เรย์ที่มีชุดค่าที่แตกต่างกัน จากค่าที่ระบุในลำดับใดก็ได้ นี่เป็นการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบการอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์ซ้ำๆ
hasLength(expected) ยืนยันว่าเรื่องเป็นอาร์เรย์หรือสตริงที่มีความยาวที่ระบุ การยืนยันจะล้มเหลวเสมอหากค่าไม่ใช่อาร์เรย์หรือสตริง
isEmpty() ยืนยันว่าเรื่องเป็นอาร์เรย์หรือสตริงที่ว่างเปล่า (ความยาว = 0) การยืนยันจะล้มเหลวเสมอหากค่าไม่ใช่อาร์เรย์หรือสตริง
isNotEmpty() ยืนยันว่าเรื่องเป็นอาร์เรย์หรือสตริงที่ไม่ว่าง (ความยาว > 0) การยืนยันจะล้มเหลวเสมอหากค่าไม่ใช่ Array หรือสตริง
isArray() ยืนยันว่าประเภทของ Subject เป็นอาร์เรย์
isBoolean() ยืนยันว่าประเภทของเรื่องเป็นบูลีน
isFunction() ยืนยันว่าประเภทของเรื่องเป็นฟังก์ชัน
isNumber() ยืนยันว่าประเภทของเรื่องคือตัวเลข
isObject() ยืนยันว่าประเภทของ Subject เป็นออบเจ็กต์
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 any ค่าที่จะแสดงผลสำหรับ API หรือการเรียกใช้ฟังก์ชันแทน API หาก returnValue เป็นฟังก์ชัน ระบบจะเรียกใช้ฟังก์ชันนั้นแทน API ที่ใช้แซนด์บ็อกซ์ หาก returnValue เป็นสิ่งอื่นที่ไม่ใช่ฟังก์ชัน ระบบจะแสดงผลค่านั้นแทน API ที่ใช้แซนด์บ็อกซ์

ตัวอย่าง

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

mockObject

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

ไวยากรณ์

mockObject(apiName, objectMock);

พารามิเตอร์

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

ตัวอย่าง

const storage = {};
let firestoreId = 1;

function asTestPromise(result) {
  return {
    then: (callback) => callback(result)
  };
}

mockObject('Firestore', {
  write: (collection, input) => {
    storage[collection + '/' + (++firestoreId)] = input;
    return asTestPromise(firestoreId);
  },
  read: (document) => asTestPromise({data: storage[document]})
});

runCode

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

ไวยากรณ์

runCode(data)

พารามิเตอร์

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

ค่าที่ส่งคืน

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

ตัวอย่าง

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