เอกสารนี้สรุป API สําหรับการติดแท็กฝั่งเซิร์ฟเวอร์
addEventCallback
ลงทะเบียนฟังก์ชัน Callback ที่จะเรียกใช้เมื่อสิ้นสุดเหตุการณ์ ระบบจะเรียกใช้ Callback เมื่อแท็กทั้งหมดสำหรับเหตุการณ์ทำงานแล้ว ระบบจะส่งค่า 2 ค่าไปยัง Callback ได้แก่ รหัสของคอนเทนเนอร์ที่เรียกใช้ฟังก์ชันและออบเจ็กต์ที่มีข้อมูลเกี่ยวกับเหตุการณ์
เมื่อใช้ API นี้ในแท็ก ระบบจะเชื่อมโยง 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 |
Array |
อาร์เรย์ของออบเจ็กต์ข้อมูลแท็ก แท็กทุกรายการที่เริ่มทำงานระหว่างเหตุการณ์จะมีรายการในอาร์เรย์นี้ ออบเจ็กต์ข้อมูลแท็กประกอบด้วยรหัสของแท็ก (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.
});
สิทธิ์ที่เกี่ยวข้อง
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 หรือฟังก์ชัน runContainer onComplete)
ไคลเอ็นต์ควรอ้างสิทธิ์คำขอโดยใช้ 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 |
string | โดเมนหรือ 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` (ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่) ระบบจะไม่สนใจอักขระอื่นๆ ทั้งหมดโดยไม่มีการแจ้งเตือน |
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
เวอร์ชันฉบับรูปภาพขั้นต่ำ
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 |
string |
คอมโพเนนต์ 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 ต้องกำหนดค่าสิทธิ์เพื่ออนุญาตให้เข้าถึงอย่างน้อยรายการต่อไปนี้
bodyquery 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 ต้องกำหนดค่าสิทธิ์เพื่ออนุญาตให้เข้าถึงอย่างน้อยรายการต่อไปนี้
bodyquery 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();
สิทธิ์ที่เกี่ยวข้อง
getAnonymizedIpAddress
แสดงผลสตริงที่ลบข้อมูลระบุตัวบุคคลซึ่งแสดงที่อยู่ IP ที่ส่งคำขอ
สำหรับที่อยู่ IPv4 อ็อกเท็ตสุดท้ายจะถูกมาสก์เป็น 0 (เช่น 198.51.100.42 จะกลายเป็น 198.51.100.0) สำหรับที่อยู่ IPv6 บิต 80 ตัวสุดท้ายจะถูกมาสก์เป็น 0 โดยคงบิต 48 ตัวแรกไว้ (เช่น 2001:db8:cafe:1234:5678:90ab:cdef:1234 จะกลายเป็น 2001:db8:cafe::)
แสดงผล "::" หากที่อยู่ IP ไม่ถูกต้องหรือจับคู่ข้อมูลไม่ได้ ดังนั้นผลลัพธ์จึงปลอดภัยที่จะใช้เป็น ip_override เสมอ
ตัวอย่าง
const getAnonymizedIpAddress = require('getAnonymizedIpAddress');
const anonymizedIp = getAnonymizedIpAddress();
ไวยากรณ์
getAnonymizedIpAddress();
สิทธิ์ที่เกี่ยวข้อง
getClientName
แสดงผลสตริงที่มีชื่อของไคลเอ็นต์ปัจจุบัน
ไวยากรณ์
getClientName();
สิทธิ์ที่เกี่ยวข้อง
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();
สิทธิ์ที่เกี่ยวข้อง
getCookieValues
แสดงผลอาร์เรย์ที่มีค่าของคุกกี้ทั้งหมดที่มีชื่อที่ระบุ
ตัวอย่าง
const getCookieValues = require('getCookieValues');
const lastVisit = getCookieValues('lastVisit')[0];
if (lastVisit) {
// ...
}
ไวยากรณ์
getCookieValues(name[, noDecode]);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
name |
string | ชื่อของคุกกี้ |
noDecode |
บูลีน |
หากเป็น true ระบบจะไม่ถอดรหัสค่าคุกกี้ก่อนที่จะแสดงผล ค่าเริ่มต้นคือ false
|
สิทธิ์ที่เกี่ยวข้อง
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);
สิทธิ์ที่เกี่ยวข้อง
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 |
ระยะหมดเวลาของคำขอเป็นมิลลิวินาที ระบบจะไม่สนใจค่าที่ไม่ใช่ค่าบวก หากคำขอหมดเวลา ระบบจะเรียกใช้ Callback โดยมี 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();
สิทธิ์ที่เกี่ยวข้อง
getRequestHeader
แสดงผลค่าของส่วนหัวของคำขอที่ระบุเป็นสตริง หากมี หรือแสดงผลเป็น undefined หากไม่มี หากส่วนหัวซ้ำกัน ค่าที่แสดงผลจะรวมเข้ากับ ', '
ตัวอย่าง
const getRequestHeader = require('getRequestHeader');
const host = getRequestHeader('host');
ไวยากรณ์
getRequestHeader(headerName);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
headerName |
string | ชื่อส่วนหัว ค่านี้ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ |
สิทธิ์ที่เกี่ยวข้อง
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();
สิทธิ์ที่เกี่ยวข้อง
getRequestQueryParameter
แสดงผลค่าที่ถอดรหัสแล้วของพารามิเตอร์สตริงการค้นหาที่ตั้งชื่อเป็น string หรือ undefined หากไม่มีพารามิเตอร์ หากพารามิเตอร์ซ้ำในสตริงการค้นหา ระบบจะแสดงผลค่าแรกที่ปรากฏในสตริงการค้นหา
ตัวอย่าง
const getRequestQueryParameter = require('getRequestQueryParameter');
const query = getRequestQueryParameter('query');
if (query) {
// Process query here.
}
ไวยากรณ์
getRequestQueryParameter(name);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
name |
string | ชื่อพารามิเตอร์การค้นหา |
สิทธิ์ที่เกี่ยวข้อง
getRequestQueryParameters
แสดงผลพารามิเตอร์การค้นหาของคำขอ HTTP ขาเข้าเป็นออบเจ็กต์ที่แมปชื่อพารามิเตอร์การค้นหากับค่าที่เกี่ยวข้อง ชื่อและค่าของพารามิเตอร์จะได้รับการถอดรหัส
ตัวอย่าง
const getRequestQueryParameters = require('getRequestQueryParameters');
const queryParameters = getRequestQueryParameters();
if (queryParameters['search']) {
// Handle the search query here.
const maxResults = queryParameters['max_results'];
}
ไวยากรณ์
getRequestQueryParameters();
สิทธิ์ที่เกี่ยวข้อง
getRequestQueryString
แสดงผลคำค้นหาของคำขอเป็นสตริง โดยไม่มีเครื่องหมายคำถามนำหน้า หรือสตริงว่างหาก URL ของคำขอไม่มีสตริงคำค้นหา
ตัวอย่าง
const getRequestQueryString = require('getRequestQueryString');
const queryString = getRequestQueryString();
if (queryString !== '') {
// Handle the query string.
}
ไวยากรณ์
getRequestQueryString();
สิทธิ์ที่เกี่ยวข้อง
getTimestamp
เลิกใช้งานแล้ว แนะนำให้ใช้ getTimestampMillis
แสดงผลตัวเลขที่แสดงเวลาปัจจุบันในหน่วยมิลลิวินาทีนับตั้งแต่ Unix Epoch ตามที่ Date.now() แสดงผล
ไวยากรณ์
getTimestamp();
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
getTimestampMillis
แสดงผลตัวเลขที่แสดงเวลาปัจจุบันในหน่วยมิลลิวินาทีนับตั้งแต่ Unix Epoch ตามที่ Date.now() แสดงผล
ไวยากรณ์
getTimestampMillis();
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
getType
แสดงผลสตริงที่อธิบายประเภทของค่าที่ระบุ
| ประเภทอินพุต | ค่าที่แสดงผล |
|---|---|
| string | 'string' |
| number | 'number' |
| บูลีน | 'boolean' |
| null | 'null' |
| undefined | '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
|
string | รหัสคีย์จากไฟล์คีย์ JSON ที่อ้างอิงถึงคีย์ที่จะใช้ |
options
|
object | การกำหนดค่า API ที่ไม่บังคับ (ดูตัวเลือกด้านล่าง) |
ตัวเลือก
| ตัวเลือก | ประเภท | คำอธิบาย |
|---|---|---|
outputEncoding
|
string | ระบุรูปแบบการเข้ารหัสสำหรับค่าที่แสดงผล รูปแบบที่รองรับคือ hex, base64 หรือ base64url ค่าเริ่มต้นจะเป็น base64url หากไม่ได้ระบุไว้ |
สิทธิ์ที่เกี่ยวข้อง
เวอร์ชันฉบับรูปภาพขั้นต่ำ
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 รายการ ซึ่งแต่ละรายการจะแปลงเป็นสตริง (หากจำเป็น) และบันทึกลงในคอนโซล
สิทธิ์ที่เกี่ยวข้อง
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 |
string |
ชื่อคอลัมน์ที่ค่าจะกลายเป็นค่าใน 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
เรียกใช้ตรรกะคอนเทนเนอร์ (ตัวแปร ทริกเกอร์ แท็ก) ในขอบเขตของเหตุการณ์ หากมีการเรียก 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 | Callback ที่เรียกใช้ทันทีก่อนที่แท็กจะเริ่มทํางาน |
สิทธิ์ที่เกี่ยวข้อง
sendEventToGoogleAnalytics
ส่งเหตุการณ์เดียวโดยใช้ข้อมูลเหตุการณ์ทั่วไปไปยัง Google Analytics และแสดงผล promise ที่แปลงเป็นออบเจ็กต์ที่มีคีย์ 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 ไว้และคำขอหมดเวลา ระบบจะปฏิเสธ Promise ด้วยข้อความ {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 |
string | ส่วนหัวของคำขอเพิ่มเติม |
timeout
|
number | ระยะหมดเวลาเป็นมิลลิวินาทีก่อนที่คำขอจะถูกยกเลิก ค่าเริ่มต้นคือ 15000 |
authorization
|
object | ออบเจ็กต์การให้สิทธิ์ที่ไม่บังคับจากการเรียกใช้ getGoogleAuth เพื่อรวมส่วนหัวการให้สิทธิ์เมื่อส่งคำขอไปยัง googleapis.com |
สิทธิ์ที่เกี่ยวข้อง
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 |
string | ส่วนหัวของคำขอเพิ่มเติม |
method |
object | เมธอดคำขอ ค่าเริ่มต้นคือ GET |
timeout
|
number | ระยะหมดเวลาเป็นมิลลิวินาทีก่อนที่คำขอจะถูกยกเลิก ค่าเริ่มต้นคือ 15000 |
authorization
|
object | ออบเจ็กต์การให้สิทธิ์ที่ไม่บังคับจากการเรียกใช้ getGoogleAuth เพื่อรวมส่วนหัวการให้สิทธิ์เมื่อส่งคำขอไปยัง googleapis.com |
สิทธิ์ที่เกี่ยวข้อง
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 ที่จะส่งไปยังเบราว์เซอร์ |
สิทธิ์ที่เกี่ยวข้อง
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
|
domain: โฮสต์ที่จะส่งคุกกี้ไป หากกำหนดเป็นค่าพิเศษ "อัตโนมัติ" ระบบจะคำนวณโฮสต์โดยอัตโนมัติโดยใช้กลยุทธ์ต่อไปนี้
- eTLD+1 ของส่วนหัว
Forwarded(หากมี) - eTLD+1 ของส่วนหัว
X-Forwarded-Host(หากมี) - eTLD+1 ของส่วนหัว
Host
- eTLD+1 ของส่วนหัว
expires: อายุการใช้งานสูงสุดของคุกกี้ ซึ่งต้องเป็นสตริงวันที่ที่จัดรูปแบบเป็น UTC เช่น "Sat, 26 Oct 1985 08:21:00 GMT" หากตั้งค่าทั้ง
expiresและmax-ageไว้max-ageจะมีความสำคัญเหนือกว่าhttpOnly: ห้ามไม่ให้ JavaScript เข้าถึงคุกกี้หากเป็น
truemax-age: จำนวนวินาทีจนกว่าคุกกี้จะหมดอายุ ตัวเลขที่เป็นศูนย์หรือติดลบจะทำให้คุกกี้หมดอายุทันที หากตั้งค่าทั้ง
expiresและmax-ageไว้max-ageจะมีความสำคัญเหนือกว่าpath: เส้นทางที่ต้องมีอยู่ใน URL ที่ขอ ไม่เช่นนั้นเบราว์เซอร์จะไม่ส่งส่วนหัว Cookie
secure: หากตั้งค่าเป็น
trueระบบจะส่งคุกกี้ไปยังเซิร์ฟเวอร์เมื่อมีการส่งคำขอจากปลายทางhttps:เท่านั้นsameSite: ยืนยันว่าต้องไม่ส่งคุกกี้พร้อมกับคำขอแบบข้ามต้นทาง ต้องเป็น
'strict','lax'หรือ'none'
สิทธิ์ที่เกี่ยวข้อง
setPixelResponse
ตั้งค่าเนื้อหาการตอบกลับเป็น GIF ขนาด 1x1, ตั้งค่าส่วนหัว Content-Type เป็น "image/gif", ตั้งค่าส่วนหัวการแคชเพื่อให้ User Agent ไม่แคชการตอบกลับ และตั้งค่าสถานะการตอบกลับเป็น 200
โปรดทราบว่าต้องเรียกใช้ returnResponse เพื่อส่งคำตอบกลับไปยังไคลเอ็นต์
ไวยากรณ์
setPixelResponse();
สิทธิ์ที่เกี่ยวข้อง
ต้องมีสิทธิ์ access_response ต้องกำหนดค่าสิทธิ์เพื่ออนุญาตให้เข้าถึงอย่างน้อยรายการต่อไปนี้
headers- ต้องอนุญาตคีย์ต่อไปนี้content-typecache-controlexpirespragma
bodystatus
setResponseBody
ตั้งค่าเนื้อหาการตอบกลับเป็นอาร์กิวเมนต์
โปรดทราบว่าต้องเรียกใช้ returnResponse เพื่อส่งคำตอบกลับไปยังไคลเอ็นต์
ไวยากรณ์
setResponseBody(body[, encoding]);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
body |
string | ค่าที่จะตั้งเป็นเนื้อหาการตอบกลับ |
encoding |
string |
การเข้ารหัสอักขระของเนื้อหาการตอบกลับ (ค่าเริ่มต้นคือ 'utf8') ค่าที่รองรับ ได้แก่ 'ascii', 'utf8', 'utf16le', 'ucs2', 'base64', 'latin1', 'binary' และ 'hex'
|
สิทธิ์ที่เกี่ยวข้อง
ต้องมีสิทธิ์ access_response ต้องกำหนดค่าสิทธิ์เพื่ออนุญาตให้เข้าถึงอย่างน้อยรายการต่อไปนี้
body
setResponseHeader
ตั้งค่าส่วนหัวในการตอบกลับที่จะแสดงผล หาก API นี้เคยตั้งค่าส่วนหัวที่มีชื่อนี้ (ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) ไว้ก่อนหน้านี้ การเรียกใช้ในภายหลังจะเขียนทับหรือล้างค่าที่ตั้งไว้โดยผู้เรียกใช้ก่อนหน้า
โปรดทราบว่าต้องเรียกใช้ returnResponse เพื่อส่งคำตอบกลับไปยังไคลเอ็นต์
ไวยากรณ์
setResponseHeader(name, value);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
name |
string | ชื่อส่วนหัว ชื่อส่วนหัว HTTP ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ดังนั้นชื่อส่วนหัวจะเป็นตัวพิมพ์เล็ก |
value |
string undefined | ค่าของส่วนหัว หากเป็น 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);
});
สิทธิ์ที่เกี่ยวข้อง
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 |
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 รายการ ดังนี้
|
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);
สิทธิ์ที่เกี่ยวข้อง
Firestore
แสดงผลออบเจ็กต์ที่มีฟังก์ชัน Firestore
API นี้รองรับเฉพาะ Firestore ในโหมดเนทีฟ ไม่รองรับ Firestore ในโหมด Datastore นอกจากนี้ API ยังรองรับเฉพาะการใช้ฐานข้อมูลเริ่มต้นเท่านั้น
Firestore.read
ฟังก์ชัน Firestore.read จะอ่านข้อมูลจากเอกสาร Firestore และแสดงผล promise ที่แปลงเป็นออบเจ็กต์ที่มีคีย์ 2 รายการ ได้แก่ id และ data หากไม่มีเอกสาร ระบบจะปฏิเสธสัญญาด้วยออบเจ็กต์ที่มีคีย์ reason เท่ากับ not_found
ไวยากรณ์
Firestore.read(path[, options]);
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
path |
string | เส้นทางไปยังเอกสารหรือคอลเล็กชัน ต้องไม่ขึ้นต้นหรือลงท้ายด้วย "/" |
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 |
string | เส้นทางไปยังเอกสารหรือคอลเล็กชัน ต้องไม่ขึ้นต้นหรือลงท้ายด้วย "/" |
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 |
Array | อาร์เรย์ของเงื่อนไขการค้นหา การค้นหาแต่ละรายการจะอยู่ในรูปแบบอาร์เรย์ที่มี 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 |
string | ไม่บังคับ ค่าที่ดึงมาจาก 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
สิทธิ์ที่เกี่ยวข้อง
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 (โดยปกติจะใช้แท็ก) ระบบจะเรียกใช้ Callback แบบซิงโครนัส ระบบจะเรียกใช้ Callback โดยใช้พารามิเตอร์ 2 รายการ ได้แก่
messageType:stringmessage:Object
หากเพิ่ม Callback ในไคลเอ็นต์ 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 ที่จะเรียกใช้เมื่อมีการส่งข้อความประเภทที่เกี่ยวข้อง หาก 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() ของไลบรารีมาตรฐาน โดยจะแสดงผลอาร์เรย์ของชื่อพร็อพเพอร์ตี้ที่แจกแจงได้ของออบเจ็กต์ที่ระบุในลำดับเดียวกับที่ลูป for...in... จะแสดง หากค่าอินพุตไม่ใช่ออบเจ็กต์ ระบบจะบังคับให้เป็นออบเจ็กต์
เมธอด values() มีลักษณะการทำงานของ Object.values() ของ Standard Library โดยจะแสดงผลอาร์เรย์ของค่าพร็อพเพอร์ตี้ที่แจกแจงได้ของออบเจ็กต์ที่ระบุในลำดับเดียวกับที่ลูป for...in... จะทำ หากค่าอินพุตไม่ใช่ออบเจ็กต์ ระบบจะบังคับให้เป็นออบเจ็กต์
เมธอด entries() มีลักษณะการทำงานของ Standard Library Object.entries() โดยจะแสดงผลอาร์เรย์ของคู่ [key, value] ของพร็อพเพอร์ตี้ที่แจกแจงได้ของออบเจ็กต์ที่ระบุในลำดับเดียวกับที่ลูป for...in... จะแสดง หากค่าอินพุตไม่ใช่ออบเจ็กต์ ระบบจะบังคับให้เป็นออบเจ็กต์
เมธอด freeze() จะให้ลักษณะการทำงาน Object.freeze() ของไลบรารีมาตรฐาน ออบเจ็กต์ที่ถูกตรึงจะไม่สามารถเปลี่ยนแปลงได้อีก การตรึงออบเจ็กต์จะป้องกันไม่ให้มีการเพิ่มพร็อพเพอร์ตี้ใหม่ลงในออบเจ็กต์ ป้องกันไม่ให้นำพร็อพเพอร์ตี้ที่มีอยู่ออก และป้องกันไม่ให้เปลี่ยนแปลงค่าของพร็อพเพอร์ตี้ที่มีอยู่ freeze() จะแสดงผลออบเจ็กต์เดียวกับที่ส่งเข้ามา ระบบจะถือว่าอาร์กิวเมนต์พื้นฐานหรืออาร์กิวเมนต์ Null เป็นออบเจ็กต์ที่ถูกตรึง และจะแสดงผลอาร์กิวเมนต์ดังกล่าว
เมธอด delete() จะให้ลักษณะการทำงานของโอเปอเรเตอร์ delete ของ Standard Library โดยจะนำคีย์ที่ระบุออกจากออบเจ็กต์ เว้นแต่ออบเจ็กต์จะถูกตรึงไว้
เช่นเดียวกับโอเปอเรเตอร์ 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()- จัดการทั้งเคสที่ได้รับการแก้ไขและถูกปฏิเสธ โดยจะใช้ Callback 2 รายการเป็นพารามิเตอร์ ได้แก่ รายการหนึ่งสำหรับกรณีที่สำเร็จ และอีกรายการหนึ่งสำหรับกรณีที่ล้มเหลว.catch()- จัดการเฉพาะเคสที่ถูกปฏิเสธเท่านั้น ใช้ Callback 1 รายการเป็นพารามิเตอร์.finally()- มีวิธีให้โค้ดทำงานไม่ว่าสัญญาจะได้รับการแก้ไขหรือถูกปฏิเสธ ใช้ Callback 1 รายการเป็นพารามิเตอร์ที่เรียกใช้โดยไม่มีอาร์กิวเมนต์
ตัวแปรที่แสดงผล Promise จะเท่ากับค่าที่ได้รับการแก้ไขของ Promise หรือ false หาก Promise ปฏิเสธ
ตัวอย่าง
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
สร้างสัญญาที่เทียบเท่ากับสัญญา 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()
});
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
ทดสอบ API
API เหล่านี้ทำงานร่วมกับการทดสอบ JavaScript ในแซนด์บ็อกซ์เพื่อสร้างการทดสอบสำหรับเทมเพลตที่กำหนดเองใน Google Tag Manager API ทดสอบเหล่านี้ไม่จำเป็นต้องมีคำสั่ง require() [ดูข้อมูลเพิ่มเติมเกี่ยวกับการทดสอบเทมเพลตที่กำหนดเอง]
assertApi
แสดงผลออบเจ็กต์ Matcher ที่ใช้เพื่อสร้างการยืนยันเกี่ยวกับ API ที่ระบุได้อย่างราบรื่น
ไวยากรณ์
assertApi(apiName)
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
apiName |
string | ชื่อของ 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
API assertThat ได้รับการออกแบบตามไลบรารี [Truth] ของ Google โดยจะแสดงผลออบเจ็กต์ที่ใช้เพื่อทำการยืนยันเกี่ยวกับค่าของเรื่องได้อย่างราบรื่น การยืนยันที่ล้มเหลวจะหยุดการทดสอบทันทีและทำเครื่องหมายว่าไม่สำเร็จ อย่างไรก็ตาม การทดสอบที่ไม่ผ่านรายการหนึ่งจะไม่ส่งผลต่อกรอบการทดสอบอื่นๆ
ไวยากรณ์
assertThat(actual, opt_message)
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
actual |
any | ค่าที่จะใช้ในการตรวจสอบความคล่องแคล่ว |
opt_message |
string | ข้อความที่ไม่บังคับให้พิมพ์หากการยืนยันไม่สำเร็จ |
ตัวจับคู่
| 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) |
ยืนยันว่าเรื่องมากกว่าหรือเท่ากับ (>=) ค่าที่ระบุในการเปรียบเทียบแบบเรียงลำดับ |
isLessThan(expected) |
ยืนยันว่าเรื่องน้อยกว่า (<) ค่าที่ระบุในการเปรียบเทียบแบบเรียงลำดับ |
isLessThanOrEqualTo(expected) |
ยืนยันว่าเรื่องน้อยกว่าหรือเท่ากับ (<=) ค่าที่ระบุในการเปรียบเทียบแบบเรียงลำดับ |
contains(...expected) |
ยืนยันว่าเรื่องเป็นอาร์เรย์หรือสตริงที่มีค่าทั้งหมดที่ระบุในลำดับใดก็ได้ นี่เป็นการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบการอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์ซ้ำๆ |
doesNotContain(...expected) |
ยืนยันว่าเรื่องเป็นอาร์เรย์หรือสตริงที่ไม่มีค่าที่ระบุ นี่เป็นการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบการอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์ซ้ำๆ |
containsExactly(...expected) |
ยืนยันว่าเรื่องเป็นอาร์เรย์ที่มีค่าที่ระบุทั้งหมดในลำดับใดก็ได้และไม่มีค่าอื่นๆ นี่เป็นการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบการอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์ซ้ำๆ |
doesNotContainExactly(...expected) |
ยืนยันว่าเรื่องเป็นอาร์เรย์ที่มีชุดค่าที่แตกต่างจากค่าที่ระบุในลำดับใดก็ได้ นี่เป็นการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบการอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์ซ้ำๆ |
hasLength(expected) |
ยืนยันว่าเรื่องเป็นอาร์เรย์หรือสตริงที่มีความยาวที่ระบุ การยืนยันจะล้มเหลวเสมอหากค่าไม่ใช่อาร์เรย์หรือสตริง |
isEmpty() |
ยืนยันว่าเรื่องเป็นอาร์เรย์หรือสตริงที่ว่างเปล่า (ความยาว = 0) การยืนยันจะล้มเหลวเสมอหากค่าไม่ใช่อาร์เรย์หรือสตริง |
isNotEmpty() |
ยืนยันว่าเรื่องเป็นอาร์เรย์หรือสตริงที่ไม่ว่างเปล่า (ความยาว > 0) การยืนยันจะล้มเหลวเสมอหากค่าไม่ใช่ Array หรือสตริง |
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 |
string | ข้อความแสดงข้อผิดพลาดที่ไม่บังคับ |
ตัวอย่าง
fail('This test has failed.');
mock
mock API ช่วยให้คุณลบล้างลักษณะการทำงานของ API ที่อยู่ในแซนด์บ็อกซ์ได้ API จำลองนี้ปลอดภัยที่จะใช้ในโค้ดเทมเพลต แต่จะทำงานในโหมดทดสอบเท่านั้น
ระบบจะรีเซ็ตการจำลองก่อนการทดสอบแต่ละครั้ง
ไวยากรณ์
mock(apiName, returnValue);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
apiName |
string | ชื่อของ 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
API mockObject ช่วยให้คุณลบล้างลักษณะการทำงานของ API ที่อยู่ในแซนด์บ็อกซ์ซึ่งแสดงผลออบเจ็กต์ได้ API นี้ปลอดภัยที่จะใช้ในโค้ดเทมเพลต แต่จะทำงานในโหมดทดสอบเท่านั้น ระบบจะรีเซ็ตการจำลองก่อนการทดสอบแต่ละครั้ง
ไวยากรณ์
mockObject(apiName, objectMock);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
apiName |
string | ชื่อของ 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'});