เอกสารนี้ระบุ API สำหรับการติดแท็กฝั่งเซิร์ฟเวอร์
addEventCallback
ลงทะเบียนฟังก์ชัน Callback ที่จะเรียกใช้เมื่อสิ้นสุดเหตุการณ์ ระบบจะเรียกใช้ Callback เมื่อแท็กทั้งหมดสำหรับเหตุการณ์ทำงาน ระบบจะส่งคืนการเรียกกลับ 2 ค่า ได้แก่ รหัสของคอนเทนเนอร์ที่เรียกใช้ฟังก์ชัน และออบเจ็กต์ที่มีข้อมูลเกี่ยวกับเหตุการณ์
เมื่อใช้ API นี้ในแท็ก ก็จะเชื่อมโยงกับเหตุการณ์ปัจจุบัน เมื่อมีการใช้ API นี้ในไคลเอ็นต์ API ดังกล่าวจะต้องผูกกับเหตุการณ์ที่เฉพาะเจาะจงโดยใช้ฟังก์ชัน bindToEvent
ของ runContainer
API ดูตัวอย่างสำหรับรายละเอียดเพิ่มเติม
ไวยากรณ์
const addEventCallback = require('addEventCallback');
addEventCallback((containerId, eventData) => {
// Take some action based on the event data.
});
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
callback |
ฟังก์ชัน | ฟังก์ชันที่จะเรียกใช้เมื่อสิ้นสุดเหตุการณ์ |
ออบเจ็กต์ 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.
});
สิทธิ์ที่เชื่อมโยง
callLater
กำหนดเวลาการเรียกฟังก์ชันให้เกิดขึ้นแบบไม่พร้อมกัน ระบบจะเรียกใช้ฟังก์ชันหลังจากที่โค้ดปัจจุบันกลับมาแล้ว ซึ่งเทียบเท่ากับ setTimeout(<function>, 0)
ตัวอย่าง
const callLater = require('callLater');
const logToConsole = require('logToConsole');
callLater(() => {
logToConsole('Logged asynchronously');
});
ไวยากรณ์
callLater(function)
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
function |
ฟังก์ชัน | ฟังก์ชันที่จะเรียก |
สิทธิ์ที่เชื่อมโยง
ไม่มี
claimRequest
ใช้ API นี้ในไคลเอ็นต์เพื่ออ้างสิทธิ์คำขอ เมื่ออ้างสิทธิ์คำขอแล้ว คอนเทนเนอร์จะไม่เรียกใช้ไคลเอ็นต์เพิ่มเติม
API นี้มีข้อยกเว้นหากเรียกใช้ในแท็กหรือตัวแปร โดย API นี้จะมีข้อยกเว้นหากมีการเรียกหลังจากที่ไคลเอ็นต์กลับมา (เช่น หากมีการเรียกในการเรียกกลับแบบไม่พร้อมกัน เช่น ใน callLater
หรือฟังก์ชัน onComplete
ของ runContainer
)
ไคลเอ็นต์ควรอ้างสิทธิ์คำขอโดยใช้ API นี้ก่อนเรียกใช้ runContainer
API
ตัวอย่าง
const claimRequest = require('claimRequest');
claimRequest();
ไวยากรณ์
claimRequest();
สิทธิ์ที่เชื่อมโยง
ไม่มี
computeEffectiveTldPlusOne
แสดงผลโดเมนระดับบนสุดที่มีผล + 1 (eTLD+1) ของโดเมนหรือ URL ที่ระบุ eTLD+1 จะคำนวณโดยการประเมินโดเมนเทียบกับกฎรายการคำต่อท้ายสาธารณะ โดยปกติ eTLD+1 จะเป็นโดเมนระดับสูงสุดที่คุณตั้งคุกกี้ได้
ถ้าอาร์กิวเมนต์เป็น Null หรือไม่ได้ระบุ ค่าอาร์กิวเมนต์จะถูกส่งคืนโดยไม่มีการเปลี่ยนแปลง มิฉะนั้น อาร์กิวเมนต์จะถูกเปลี่ยนเป็นสตริง หากอาร์กิวเมนต์ไม่ใช่โดเมนหรือ URL ที่ถูกต้อง ระบบจะแสดงผลสตริงว่าง หากเซิร์ฟเวอร์ดึงข้อมูลรายการคำต่อท้ายสาธารณะไม่ได้ ค่าอาร์กิวเมนต์จะส่งกลับโดยไม่มีการเปลี่ยนแปลง
ตัวอย่าง
const computeEffectiveTldPlusOne = require('computeEffectiveTldPlusOne');
// Returns 'example.co.uk'
computeEffectiveTldPlusOne('analytics.example.co.uk');
// Returns 'example.co.uk'
computeEffectiveTldPlusOne('https://analytics.example.co.uk/path');
ไวยากรณ์
computeEffectiveTldPlusOne(domainOrUrl);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
domainOrUrl |
สตริง | โดเมนหรือ URL ที่จะคำนวณ eTLD+1 |
สิทธิ์ที่เชื่อมโยง
ไม่มี
createRegex
สร้างอินสแตนซ์นิพจน์ทั่วไปใหม่และแสดงผลอินสแตนซ์ที่อยู่ในออบเจ็กต์ โดยคุณจะเข้าถึงนิพจน์ทั่วไปโดยตรงไม่ได้ แต่คุณจะส่งเข้าไปใน testRegex
API, String.replace()
, String.match()
และ String.search()
ได้
แสดงผล null
หากนิพจน์ทั่วไปไม่ถูกต้องหรือ Re2 ไม่พร้อมใช้งานบนเซิร์ฟเวอร์
API นี้ใช้การติดตั้งใช้งาน Re2 อิมเมจ Docker ของเซิร์ฟเวอร์ต้องเป็นเวอร์ชัน 2.0.0 ขึ้นไป
ตัวอย่าง
const createRegex = require('createRegex');
const domainRegex = createRegex('\\w+\\.com', 'i');
// Returns '/foobar'
'example.com/foobar'.replace(domainRegex, '');
ไวยากรณ์
createRegex(pattern, flags);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
pattern |
สตริง | ข้อความของนิพจน์ทั่วไป |
flags |
สตริง | สตริงที่ไม่บังคับที่มีแฟล็กสำหรับนิพจน์ทั่วไปที่กำลังสร้าง รองรับ "g" (ทั่วโลก) และ "i" (ไม่คำนึงถึงตัวพิมพ์ใหญ่/เล็ก) ระบบจะละเว้นอักขระอื่นๆ ทั้งหมดโดยไม่มีการแจ้งเตือน |
สิทธิ์ที่เชื่อมโยง
ไม่มี
เวอร์ชันอิมเมจขั้นต่ำ
decodeUri
ถอดรหัสอักขระที่เข้ารหัสใน URI ที่ระบุ แสดงผลสตริงที่
แสดง URI ที่ถอดรหัสแล้ว แสดงผล undefined
เมื่อมีอินพุตที่ไม่ถูกต้อง
ตัวอย่าง
const decodeUri = require('decodeUri');
const decodedUrl = decodeUri(data.encodedUrl);
if (decodedUrl) {
// ...
}
ไวยากรณ์
decodeUri(encoded_uri);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
encoded_uri |
สตริง |
URI ที่เข้ารหัสโดย encodeUri() หรือด้วยวิธีอื่นๆ
|
สิทธิ์ที่เชื่อมโยง
ไม่มี
decodeUriComponent
ถอดรหัสอักขระที่เข้ารหัสในคอมโพเนนต์ URI ที่ระบุ แสดงผลสตริงที่แสดงถึงคอมโพเนนต์ URI ที่ถอดรหัสแล้ว แสดงผล undefined
เมื่อ
ป้อนข้อมูลที่ไม่ถูกต้อง
ตัวอย่าง
const decodeUriComponent = require('decodeUriComponent');
const decodedQuery = decodeUriComponent(data.query);
if (decodedQuery) {
// ...
}
ไวยากรณ์
decodeUriComponent(encoded_uri_component);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
encoded_uri_component |
สตริง |
คอมโพเนนต์ URI ที่เข้ารหัสโดย encodeUriComponent() หรือด้วยวิธีอื่น
|
สิทธิ์ที่เชื่อมโยง
ไม่มี
encodeUri
แสดงผล Uniform Resource Identifier (URI) ที่เข้ารหัสโดยการ Escape อักขระพิเศษ แสดงผลสตริงที่แสดงถึงสตริงที่ให้ไว้ซึ่งเข้ารหัสเป็น URI
ตัวอย่าง
const encodeUri = require('encodeUri');
const sendHttpGet = require('sendHttpGet');
sendHttpGet('https://www.example.com/' + encodeUri(pathInput));
ไวยากรณ์
encodeUri(uri);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
uri |
สตริง | URI ที่สมบูรณ์ |
สิทธิ์ที่เชื่อมโยง
ไม่มี
encodeUriComponent
แสดงผล Uniform Resource Identifier (URI) ที่เข้ารหัสโดยการ Escape อักขระพิเศษ แสดงผลสตริงที่แสดงสตริงที่ระบุซึ่งเข้ารหัสเป็น URI
ตัวอย่าง
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
sendHttpGet('https://www.example.com/?' + encodeUriComponent(queryInput));
ไวยากรณ์
encodeUriComponent(str);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
str |
สตริง | คอมโพเนนต์ของ URI |
สิทธิ์ที่เชื่อมโยง
ไม่มี
extractEventsFromMpv1
แปลคำขอ Measurement Protocol V1 ที่เข้ามาเป็นรายการเหตุการณ์ในรูปแบบสคีมาแบบรวม แสดงผลรายการของเหตุการณ์ที่ดึงมา โดยจะแสดงข้อผิดพลาด หากคำขออยู่ในรูปแบบที่ไม่ถูกต้อง
ตัวอย่าง
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const isRequestMpv1 = require('isRequestMpv1');
if (isRequestMpv1()) {
const events = extractEventsFromMpv1();
for (let i = 0; i < events.length; ++i) {
const event = events[i];
// Process event.
}
}
ไวยากรณ์
extractEventsFromMpv1();
สิทธิ์ที่เชื่อมโยง
ต้องมีสิทธิ์ read_request
สิทธิ์ดังกล่าวจะต้องกำหนดค่า
ให้อนุญาตการเข้าถึงต่อไปนี้เป็นอย่างน้อย
body
query parameters
extractEventsFromMpv2
แปลคำขอ Measurement Protocol V2 ขาเข้าเป็นรายการเหตุการณ์ในรูปแบบสคีมาแบบรวม แสดงผลรายการของเหตุการณ์ที่ดึงมา โดยจะแสดงข้อผิดพลาด หากคำขออยู่ในรูปแบบที่ไม่ถูกต้อง
ตัวอย่าง
const extractEventsFromMpv2 = require('extractEventsFromMpv2');
const isRequestMpv2 = require('isRequestMpv2');
if (isRequestMpv2()) {
const events = extractEventsFromMpv2();
for (let i = 0; i < events.length; ++i) {
const event = events[i];
// Process event.
}
}
ไวยากรณ์
extractEventsFromMpv2();
สิทธิ์ที่เชื่อมโยง
ต้องมีสิทธิ์ read_request
สิทธิ์ดังกล่าวจะต้องกำหนดค่า
ให้อนุญาตการเข้าถึงต่อไปนี้เป็นอย่างน้อย
body
query parameters
fromBase64
ถอดรหัสสตริงที่เข้ารหัสฐาน 64 แสดงผล undefined
หากอินพุตไม่ถูกต้อง
ไวยากรณ์
fromBase64(base64EncodedString);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
base64EncodedString |
สตริง | สตริงที่เข้ารหัส Base64 |
ตัวอย่าง
const fromBase64 = require('fromBase64');
const greeting = fromBase64('aGVsbG8=');
if (greeting === 'hello') {
// ...
}
สิทธิ์ที่เชื่อมโยง
ไม่มี
generateRandom
แสดงผล number แบบสุ่ม (จำนวนเต็ม) ภายในช่วงที่กำหนด
ตัวอย่าง
const generateRandom = require('generateRandom');
const randomValue = generateRandom(0, 10000000);
ไวยากรณ์
generateRandom(min, max);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
min |
ตัวเลข | ค่าที่เป็นไปได้ขั้นต่ำของจำนวนเต็มที่แสดงผล (รวม) |
max |
ตัวเลข | ค่าสูงสุดที่เป็นไปได้ของจำนวนเต็มที่แสดงผล (รวม) |
สิทธิ์ที่เชื่อมโยง
ไม่มี
getAllEventData
แสดงผลสำเนาของข้อมูลเหตุการณ์
ไวยากรณ์
getAllEventData();
สิทธิ์ที่เชื่อมโยง
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 |
สตริง | ชื่อของคุกกี้ |
noDecode |
boolean |
หากเป็น 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 |
ใดก็ได้ |
เส้นทางของคีย์จะมีจุดคั่นระหว่างคอมโพเนนต์เส้นทาง ซึ่งอาจเป็นคีย์ในออบเจ็กต์หรือดัชนีในอาร์เรย์ก็ได้ หาก keyPath ไม่ใช่สตริง ระบบจะเปลี่ยนค่าเป็นสตริง
|
Syntax
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
|
อาร์เรย์ | อาร์เรย์ของขอบเขต OAuth 2.0 ของ Google API เพื่อขอสิทธิ์เข้าถึง |
สิทธิ์ที่เชื่อมโยง
ต้องมีสิทธิ์ use_google_credentials
ต้องกำหนดค่าสิทธิ์ด้วยขอบเขตที่อนุญาตอย่างน้อย 1 รายการ
getGoogleScript
เรียกข้อมูลทรัพยากรจากชุดสคริปต์ Google ที่กำหนดไว้ล่วงหน้า และแสดงสัญญาที่มีสคริปต์และข้อมูลเมตาการแคชที่เกี่ยวข้อง
สัญญาจะได้รับการแก้ไขเป็นออบเจ็กต์ที่มีคีย์ 2 คีย์ ได้แก่ script
และ metadata
หากคำขอล้มเหลว สัญญาจะปฏิเสธด้วยคีย์ reason
ออบเจ็กต์ metadata
จะมีข้อมูลเมตาการแคชต่อไปนี้ตามส่วนหัวการตอบกลับทรัพยากร แต่ละช่องจะปรากฏต่อเมื่อส่วนหัวที่เกี่ยวข้องปรากฏในการตอบกลับทรัพยากรเท่านั้น
{
'cache-control': string,
'expires': string,
'last-modified': string,
}
ตัวอย่าง
const getGoogleScript = require('getGoogleScript');
getGoogleScript('ANALYTICS').then((result) => {
// Operate on result.script and result.metadata here.
});
ไวยากรณ์
getGoogleScript(script[, options]);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
script |
สตริง |
ชื่อของสคริปต์ สคริปต์ที่รองรับคือ 'ANALYTICS' , 'GTAG' และ 'GTM' ตัวเลือก 'ANALYTICS' จะดึงสคริปต์ Google Analytics จาก https://www.google-analytics.com/analytics.js ตัวเลือก 'GTAG' จะดึงสคริปต์แท็กที่ติดทั่วเว็บไซต์ (gtag.js) จาก https://www.googletagmanager.com/gtag/js ตัวเลือก 'GTM' จะดึงสคริปต์ Google Tag Manager
จาก https://www.googletagmanager.com/gtm.js
|
options |
ออบเจ็กต์ | ตัวเลือกคำขอที่ไม่บังคับ โปรดดูตัวเลือกที่รองรับด้านล่าง |
ตัวเลือก
ตัวเลือก | ประเภท | คำอธิบาย |
---|---|---|
id |
สตริง |
ใช้กับ 'GTAG' ที่มีรหัสการวัด gtag และ 'GTM' ที่มีรหัสคอนเทนเนอร์เว็บ (เช่น GTM-XXXX)
|
debug |
ใดก็ได้ | หากเชื่อถือได้ ระบบจะส่งคำขอและแสดงผลสคริปต์การวัดเวอร์ชันที่แก้ไขข้อบกพร่อง |
timeout |
ตัวเลข |
ระยะหมดเวลาของคำขอเป็นมิลลิวินาที ระบบจะไม่สนใจค่าที่ไม่ใช่ค่าบวก หากคำขอหมดเวลา ระบบจะเรียกใช้ 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
แสดงผลค่าของส่วนหัวของคำขอที่มีชื่อเป็น string (หากมี) หรือ undefined
หากไม่เป็นเช่นนั้น หากมีส่วนหัวซ้ำกัน ค่าที่ส่งคืนจะผนวกเข้ากับ ', '
ตัวอย่าง
const getRequestHeader = require('getRequestHeader');
const host = getRequestHeader('host');
ไวยากรณ์
getRequestHeader(headerName);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
headerName |
สตริง | ชื่อส่วนหัว ค่านี้จะไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ |
สิทธิ์ที่เชื่อมโยง
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 |
สตริง | ชื่อพารามิเตอร์การค้นหา |
สิทธิ์ที่เชื่อมโยง
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
แสดงผล number ที่แทนเวลาปัจจุบันเป็นมิลลิวินาทีนับตั้งแต่ Unix Epoch ซึ่งแสดงผลโดย Date.now()
ไวยากรณ์
getTimestamp();
สิทธิ์ที่เชื่อมโยง
ไม่มี
getTimestampMillis
แสดงผล number ที่แทนเวลาปัจจุบันเป็นมิลลิวินาทีนับตั้งแต่ Unix Epoch ซึ่งแสดงผลโดย Date.now()
ไวยากรณ์
getTimestampMillis();
สิทธิ์ที่เชื่อมโยง
ไม่มี
getType
แสดงผลสตริงที่อธิบายประเภทของค่าที่ระบุ
ประเภทอินพุต | ค่าที่ส่งคืน |
---|---|
สตริง | 'string' |
ตัวเลข | 'number' |
boolean | 'boolean' |
Null | 'null' |
ไม่ระบุ | 'undefined' |
อาร์เรย์ | 'array' |
ออบเจ็กต์ | 'object' |
การทำงาน | 'function' |
ตัวอย่าง
const getType = require('getType');
const type = getType(value);
if (type === 'string') {
// Handle string input.
} else if (type === 'number') {
// Handle numeric input.
} else {
logToConsole('Unsupported input type: ', type);
}
ไวยากรณ์
getType(value);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
value |
ใดก็ได้ | ค่าที่ป้อน |
สิทธิ์ที่เชื่อมโยง
ไม่มี
hmacSha256
คำนวณลายเซ็นที่เข้ารหัสโดยใช้ Hash-based Message Authentication
Code (HMAC) กับ SHA-256 ค่าเริ่มต้นคือ base64url
หากต้องการใช้ API นี้ ให้ตั้งค่าตัวแปรสภาพแวดล้อม SGTM_CREDENTIALS
บนเซิร์ฟเวอร์ไปยังเส้นทางของไฟล์คีย์ JSON ที่เข้ารหัสแบบ UTF-8 ด้วยรูปแบบต่อไปนี้
{
"key1": "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5",
"key2": "OTg3NjU0MzIxMHp5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2Jh",
...
}
ค่าเป็นคีย์ HMAC ที่เข้ารหัสฐาน 64
ตัวอย่าง
const hmacSha256 = require('hmacSha256');
const toBase64 = require('toBase64');
const header = toBase64('{"alg":"HS256","typ":"JWT"}', {urlEncoding: true});
const claim = toBase64('{"sub":"1234567890","iat":1698164946}', {urlEncoding: true});
const signature = hmacSha256(header + '.' + claim, 'key1');
const jwt = header + "." + claim + '.' + signature;
ไวยากรณ์
hmacSha256(data, keyId, options)
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
data |
สตริง | ข้อมูลที่ใช้คำนวณค่า HMAC |
keyId
|
สตริง | รหัสคีย์จากไฟล์คีย์ JSON ที่อ้างอิงถึงคีย์ที่จะใช้ |
options
|
ออบเจ็กต์ | ไม่บังคับ การกำหนดค่า API (โปรดดูตัวเลือกด้านล่าง) |
ตัวเลือก
ตัวเลือก | ประเภท | คำอธิบาย |
---|---|---|
outputEncoding
|
สตริง | ระบุรูปแบบการเข้ารหัสสำหรับค่าผลลัพธ์ รูปแบบที่รองรับคือ hex ,
base64 หรือ base64url ค่าเริ่มต้นจะเป็น base64url หากไม่ได้ระบุไว้ |
สิทธิ์ที่เชื่อมโยง
เวอร์ชันอิมเมจขั้นต่ำ
isRequestMpv1
แสดงผล true
หากคำขอที่เข้ามาเป็นคำขอ Measurement Protocol V1 หรือ false
ในกรณีอื่นๆ
ตัวอย่าง
const isRequestMpv1 = require('isRequestMpv1');
if (isRequestMpv1()) {
// Handle Measurement Protocol V1 request.
const events = extractEventsFromMpv1();
}
ไวยากรณ์
isRequestMpv1();
สิทธิ์ที่เชื่อมโยง
ไม่มี
isRequestMpv2
แสดงผล true
หากคำขอที่เข้ามาเป็นคำขอ Measurement Protocol V2 หรือ false
ในกรณีอื่นๆ
ตัวอย่าง
const isRequestMpv2 = require('isRequestMpv2');
if (isRequestMpv2()) {
// Handle Measurement Protocol V2 request.
const events = extractEventsFromMpv2();
}
ไวยากรณ์
isRequestMpv2();
สิทธิ์ที่เชื่อมโยง
ไม่มี
logToConsole
บันทึกอาร์กิวเมนต์ไปยังคอนโซล
บันทึกเหล่านี้จะอยู่ภายใน Logs Explorer ของ Google Cloud Console
จากเครื่องมือสำรวจบันทึก ให้เรียกใช้คำค้นหา 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
แปลงค่าที่ระบุเป็น number (จำนวนเต็ม)
ไวยากรณ์
makeInteger(value);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
value |
ทุกประเภท | ค่าที่จะแปลง |
สิทธิ์ที่เชื่อมโยง
ไม่มี
makeNumber
แปลงค่าที่ระบุเป็น number
ไวยากรณ์
makeNumber(value);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
value |
ทุกประเภท | ค่าที่จะแปลง |
สิทธิ์ที่เชื่อมโยง
ไม่มี
makeString
แสดงผลค่าที่ระบุเป็น string
ไวยากรณ์
makeString(value);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
value |
ทุกประเภท | ค่าที่จะแปลง |
สิทธิ์ที่เชื่อมโยง
ไม่มี
makeTableMap
แปลงออบเจ็กต์ตารางแบบง่ายที่มี 2 คอลัมน์ให้เป็น Map
ซึ่งใช้เพื่อเปลี่ยนช่องเทมเพลต SIMPLE_TABLE
ที่มี 2 คอลัมน์ให้อยู่ในรูปแบบที่จัดการได้ง่ายขึ้น
เช่น ฟังก์ชันนี้แปลงออบเจ็กต์ตารางได้
[
{'key': 'k1', 'value': 'v1'},
{'key': 'k2', 'value': 'v2'}
]
ลงในแผนที่:
{
'k1': 'v1',
'k2': 'v2'
}
แสดงผลออบเจ็กต์: ระบบได้เพิ่มคู่คีย์-ค่าที่แปลงแล้ว Map
ไปยังออบเจ็กต์ดังกล่าว หรือเพิ่มบัตร null
แล้ว
ไวยากรณ์
makeTableMap(tableObj, keyColumnName, valueColumnName);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
tableObj |
List |
ออบเจ็กต์ตารางที่จะแปลง เป็นรายการแผนที่โดยที่ Map แต่ละรายการแสดงแทนแถวในตาราง ชื่อพร็อพเพอร์ตี้แต่ละรายการในออบเจ็กต์แถวคือชื่อคอลัมน์ และค่าพร็อพเพอร์ตี้คือค่าคอลัมน์ในแถว
|
keyColumnName |
สตริง |
ชื่อของคอลัมน์ที่ค่าจะกลายเป็นคีย์ใน Map ที่แปลงแล้ว
|
valueColumnName |
สตริง |
ชื่อของคอลัมน์ที่ค่าจะกลายเป็นค่าใน Map ที่แปลงแล้ว
|
สิทธิ์ที่เชื่อมโยง
ไม่มี
parseUrl
แสดงผลออบเจ็กต์ที่มีส่วนประกอบทั้งหมดของ URL ที่ระบุ เช่นเดียวกับออบเจ็กต์ URL
API นี้จะคืนค่า undefined
สำหรับ URL ที่มีรูปแบบไม่ถูกต้อง สำหรับ URL ที่จัดรูปแบบอย่างถูกต้อง ช่องที่ไม่มีในสตริง URL จะมีค่าเป็นสตริงว่าง หรือในกรณีของ searchParams
จะเป็นออบเจ็กต์ว่าง
ออบเจ็กต์ที่แสดงผลจะมีช่องต่อไปนี้
{
href: string,
origin: string,
protocol: string,
username: string,
password: string,
host: string,
hostname: string,
port: string,
pathname: string,
search: string,
searchParams: Object<string, (string|Array)>,
hash: string,
}
ตัวอย่าง
const parseUrl = require('parseUrl');
const urlObject = parseUrl('https://abc:xyz@example.com:8080/foo?param=val%2Cue#bar');
ไวยากรณ์
parseUrl(url);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
url |
สตริง | URL แบบเต็มที่จะถูกแยกวิเคราะห์ |
สิทธิ์ที่เชื่อมโยง
ไม่มี
returnResponse
ล้างคำตอบที่เทมเพลตอื่นๆ ตั้งค่าไว้ก่อนหน้านี้โดยใช้ API ที่แก้ไขการตอบกลับ ซึ่งรวมถึง setCookie, setPixelResponse, setResponseBody, setResponseHeader และ setResponseStatus ค่าเริ่มต้นคือ 200 รหัสสถานะ HTTP เนื้อหาว่างเปล่า และไม่มีส่วนหัว
ขอแนะนำให้ใช้ 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 |
ออบเจ็กต์ | พารามิเตอร์เหตุการณ์ |
onComplete |
ฟังก์ชัน | การเรียกกลับที่เรียกใช้หลังจากที่แท็กทั้งหมดเริ่มทำงานเสร็จสิ้น |
onStart |
ฟังก์ชัน | การเรียกกลับที่เรียกใช้ทันที ก่อนที่แท็กจะเริ่มทำงาน |
สิทธิ์ที่เชื่อมโยง
sendEventToGoogleAnalytics
ส่งเหตุการณ์เดียวโดยใช้ข้อมูลเหตุการณ์ทั่วไปไปยัง Google Analytics และส่งคืนสัญญาที่แก้ไขเป็นออบเจ็กต์ที่มีคีย์ location
หรือปฏิเสธออบเจ็กต์ที่มีคีย์ reason
ปลายทาง Universal Analytics หรือ Google Analytics 4 จะอิงตามรหัสการวัดในข้อมูลเหตุการณ์
ช่อง 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 |
ออบเจ็กต์ | เหตุการณ์ในรูปแบบสคีมาแบบรวม |
สิทธิ์ที่เชื่อมโยง
ต้องมีสิทธิ์ send_http
สิทธิ์ดังกล่าวต้องกำหนดค่าเพื่ออนุญาตให้
เข้าถึงสิ่งต่อไปนี้ได้เป็นอย่างน้อย
- อนุญาต Google Domains
sendHttpGet
สร้างคำขอ HTTP GET ไปยัง URL ที่ระบุ และส่งสัญญาที่แก้ไขพร้อมผลลัพธ์เมื่อคำขอเสร็จสมบูรณ์หรือหมดเวลา
ผลลัพธ์ที่แก้ไขแล้วคือออบเจ็กต์ที่มี 3 คีย์ ได้แก่ statusCode
, headers
และ body
หากคำขอล้มเหลว (เช่น URL ไม่ถูกต้อง ไม่มีเส้นทางไปยังโฮสต์ การเจรจา SSL ล้มเหลว ฯลฯ) สัญญาจะปฏิเสธพร้อม {reason:
'failed'}
หากตั้งค่าตัวเลือก timeout
ไว้และคำขอหมดเวลา คำสัญญาจะปฏิเสธพร้อมข้อความ {reason: 'timed_out'}
ตัวอย่าง
const sendHttpGet = require('sendHttpGet');
// Returns the response body as the value for a variable.
return sendHttpGet('https://example.com/item/' + data.itemId, {
headers: {key: 'value'},
timeout: 500,
}).then((result) => result.body, () => undefined);
ไวยากรณ์
sendHttpGet(url[, options]);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
url |
สตริง | URL ที่ขอ |
options
|
ออบเจ็กต์ | ตัวเลือกคำขอที่ไม่บังคับ (โปรดดูตัวเลือกด้านล่าง) |
ตัวเลือก
ตัวเลือก | ประเภท | คำอธิบาย |
---|---|---|
headers |
สตริง | ส่วนหัวคำขอเพิ่มเติม |
timeout
|
ตัวเลข | การหมดเวลาเป็นมิลลิวินาทีก่อนที่คำขอจะถูกยกเลิก ค่าเริ่มต้นคือ 15000 |
authorization
|
ออบเจ็กต์ | ออบเจ็กต์การให้สิทธิ์ไม่บังคับจากการเรียกไปยัง getGoogleAuth สำหรับการรวมส่วนหัวการให้สิทธิ์เมื่อส่งคำขอถึง googleapis.com |
สิทธิ์ที่เชื่อมโยง
sendHttpRequest
สร้างคำขอ HTTP ไปยัง URL ที่ระบุ และแสดงสัญญาที่แก้ไขด้วยการตอบกลับเมื่อคำขอเสร็จสมบูรณ์หรือหมดเวลา
ผลลัพธ์ที่แก้ไขแล้วคือออบเจ็กต์ที่มี 3 คีย์ ได้แก่ statusCode
, headers
และ body
หากคำขอล้มเหลว (เช่น URL ไม่ถูกต้อง ไม่มีเส้นทางไปยังโฮสต์ การเจรจา SSL ล้มเหลว ฯลฯ) สัญญาจะปฏิเสธพร้อม {reason:
'failed'}
หากตั้งค่าตัวเลือก timeout
ไว้และคำขอหมดเวลา คำสัญญาจะปฏิเสธพร้อมข้อความ {reason: 'timed_out'}
ตัวอย่าง
const sendHttpRequest = require('sendHttpRequest');
const setResponseBody = require('setResponseBody');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');
const postBody = 'interaction=click&campaign=promotion&medium=email';
// Sends a POST request and nominates response based on the response to the POST
// request.
sendHttpRequest('https://example.com/collect', {
headers: {key: 'value'},
method: 'POST',
timeout: 500,
}, postBody).then((result) => {
setResponseStatus(result.statusCode);
setResponseBody(result.body);
setResponseHeader('cache-control', result.headers['cache-control']);
});
ไวยากรณ์
sendHttpRequest(url[, options[, body]]);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
url |
สตริง | URL ที่ขอ |
options
|
ออบเจ็กต์ | ตัวเลือกคำขอที่ไม่บังคับ (โปรดดูตัวเลือกด้านล่าง) |
body |
สตริง | เนื้อหาคำขอไม่บังคับ |
ตัวเลือก
ตัวเลือก | ประเภท | คำอธิบาย |
---|---|---|
headers |
สตริง | ส่วนหัวคำขอเพิ่มเติม |
method |
ออบเจ็กต์ | วิธีการส่งคำขอ ค่าเริ่มต้นคือ GET |
timeout
|
ตัวเลข | การหมดเวลาเป็นมิลลิวินาทีก่อนที่คำขอจะถูกยกเลิก ค่าเริ่มต้นคือ 15000 |
authorization
|
ออบเจ็กต์ | ออบเจ็กต์การให้สิทธิ์ไม่บังคับจากการเรียกไปยัง getGoogleAuth สำหรับการรวมส่วนหัวการให้สิทธิ์เมื่อส่งคำขอถึง googleapis.com |
สิทธิ์ที่เชื่อมโยง
sendPixelFromBrowser
ส่งคำสั่งไปยังเบราว์เซอร์เพื่อโหลด URL ที่ระบุเป็นแท็ก <img>
โปรโตคอลคําสั่งนี้ใช้ได้ในแท็กเว็บแท็ก Google สําหรับ GA4 และ Google Analytics: เหตุการณ์ GA คุณต้องกำหนดค่า URL ของคอนเทนเนอร์เซิร์ฟเวอร์ ดูรายละเอียดเพิ่มเติมในวิธีการ
API นี้จะแสดงผล false
หากคำขอขาเข้าไม่รองรับโปรโตคอลคำสั่ง หรือระบบล้างการตอบกลับไปแล้ว มิเช่นนั้น API นี้จะแสดง true
ตัวอย่างเช่น
const sendPixelFromBrowser = require('sendPixelFromBrowser');
sendPixelFromBrowser('https://example.com/?id=123');
ไวยากรณ์
sendPixelFromBrowser(url)
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
url |
สตริง | URL ที่ส่งไปยังเบราว์เซอร์ |
สิทธิ์ที่เชื่อมโยง
setCookie
ตั้งค่าหรือลบคุกกี้ด้วยตัวเลือกที่ระบุ
หากต้องการลบคุกกี้ คุณจะต้องตั้งค่าคุกกี้ที่มีเส้นทางและโดเมนเดียวกันกับที่ใช้สร้างคุกกี้ และกําหนดค่าที่หมดอายุซึ่งผ่านไปแล้ว เช่น "Thu, 01 Jan 1970 00:00:00 GMT"
โปรดทราบว่าต้องมีการเรียกใช้ returnResponse เพื่อให้ระบบส่งการตอบกลับไปยังไคลเอ็นต์
ตัวอย่าง
const setCookie = require('setCookie');
// Sets an httpOnly cookie with a max-age of 3600.
setCookie('cookieName', 'cookieValue', {'max-age': 3600, httpOnly: true});
ไวยากรณ์
setCookie(name, value[, options[, noEncode]]);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
name |
สตริง | ชื่อคุกกี้ ชื่อโดยไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ |
value |
สตริง | ค่าคุกกี้ |
options |
ออบเจ็กต์ | แอตทริบิวต์คุกกี้ที่ไม่บังคับ ได้แก่ domain, expires, fallbackDomain,httpOnly, max- age, path, secure และ sameSite (ดูตัวเลือกด้านล่าง) |
noEncode |
boolean |
หากเป็น "จริง" ค่าคุกกี้จะไม่เข้ารหัส ค่าเริ่มต้นคือ false
|
domain: โฮสต์ที่จะส่งคุกกี้ไป หากตั้งค่าเป็น "อัตโนมัติ" จะมีการคำนวณโฮสต์โดยอัตโนมัติโดยใช้กลยุทธ์ต่อไปนี้
- eTLD+1 ของส่วนหัว
Forwarded
หากมี - eTLD+1 ของส่วนหัว
X-Forwarded-Host
หากมี - eTLD+1 จากส่วนหัว
Host
- eTLD+1 ของส่วนหัว
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 ที่ขอ มิฉะนั้นเบราว์เซอร์จะไม่ส่งส่วนหัวของคุกกี้
ปลอดภัย: หากตั้งค่าเป็น
true
ระบบจะส่งคุกกี้ไปยังเซิร์ฟเวอร์เมื่อมีการส่งคำขอจากอุปกรณ์ปลายทางhttps:
เท่านั้นsameSite: ยืนยันว่าต้องไม่ส่งคุกกี้ไปพร้อมกับคำขอแบบข้ามต้นทาง ต้องเป็น
'strict'
,'lax'
หรือ'none'
สิทธิ์ที่เชื่อมโยง
setPixelResponse
ตั้งค่าเนื้อหาการตอบกลับเป็น GIF ขนาด 1x1, ตั้งค่าส่วนหัว Content-Type เป็น "image/gif", ตั้งค่าส่วนหัวการแคชเพื่อไม่ให้ User Agent ไม่แคชการตอบกลับและตั้งค่าสถานะการตอบกลับเป็น 200
โปรดทราบว่าต้องมีการเรียกใช้ returnResponse เพื่อให้ระบบส่งการตอบกลับไปยังไคลเอ็นต์
ไวยากรณ์
setPixelResponse();
สิทธิ์ที่เชื่อมโยง
ต้องมีสิทธิ์ access_response
สิทธิ์ดังกล่าวจะต้องกำหนดค่า
ให้อนุญาตการเข้าถึงต่อไปนี้เป็นอย่างน้อย
headers
- ต้องอนุญาตคีย์ต่อไปนี้content-type
cache-control
expires
pragma
body
status
setResponseBody
ตั้งค่าเนื้อหาการตอบสนองให้กับอาร์กิวเมนต์
โปรดทราบว่าต้องมีการเรียกใช้ returnResponse เพื่อให้ระบบส่งการตอบกลับไปยังไคลเอ็นต์
ไวยากรณ์
setResponseBody(body[, encoding]);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
body |
สตริง | ค่าที่จะตั้งเป็นเนื้อหาการตอบกลับ |
encoding |
สตริง |
การเข้ารหัสอักขระของเนื้อหาการตอบกลับ (ค่าเริ่มต้นคือ 'utf8' ) ค่าที่รองรับ ได้แก่ 'ascii' , 'utf8' , 'utf16le' , 'ucs2' , 'base64' , 'latin1' , 'binary' และ 'hex'
|
สิทธิ์ที่เชื่อมโยง
ต้องมีสิทธิ์ access_response
สิทธิ์ดังกล่าวจะต้องกำหนดค่า
ให้อนุญาตการเข้าถึงต่อไปนี้เป็นอย่างน้อย
body
setResponseHeader
ตั้งค่าส่วนหัวในการตอบกลับที่จะแสดงผล หากส่วนหัวที่มีชื่อนี้ (ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) มีการตั้งค่าโดย API นี้ การเรียกหลังจะเขียนทับหรือล้างค่าที่ผู้โทรเคยกำหนดไว้
โปรดทราบว่าต้องมีการเรียกใช้ returnResponse เพื่อให้ระบบส่งการตอบกลับไปยังไคลเอ็นต์
ไวยากรณ์
setResponseHeader(name, value);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
name |
สตริง | ชื่อส่วนหัว ชื่อส่วนหัว HTTP ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ดังนั้นชื่อส่วนหัวจะมีตัวพิมพ์เล็ก |
value |
string ไม่ระบุ | ค่าของส่วนหัว หากเป็น Null หรือไม่ได้ระบุ การดำเนินการนี้จะล้างส่วนหัวที่มีชื่อออกจากการตอบกลับที่จะแสดงผล |
สิทธิ์ที่เชื่อมโยง
ต้องมีสิทธิ์ access_response
สิทธิ์ดังกล่าวจะต้องกำหนดค่า
ให้อนุญาตการเข้าถึงต่อไปนี้เป็นอย่างน้อย
headers
setResponseStatus
ตั้งค่ารหัสสถานะ HTTP ของการตอบกลับที่จะแสดงผล
โปรดทราบว่าต้องมีการเรียกใช้ returnResponse เพื่อให้ระบบส่งการตอบกลับไปยังไคลเอ็นต์
ไวยากรณ์
setResponseStatus(statusCode);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
statusCode |
ตัวเลข | รหัสสถานะ HTTP ที่จะแสดง |
สิทธิ์ที่เชื่อมโยง
ต้องมีสิทธิ์ access_response
สิทธิ์ดังกล่าวจะต้องกำหนดค่า
ให้อนุญาตการเข้าถึงต่อไปนี้เป็นอย่างน้อย
status
sha256
คำนวณไดเจสต์ SHA-256 ของอินพุตและเรียกใช้ Callback ที่มีไดเจสต์ที่เข้ารหัสใน base64 เว้นแต่ออบเจ็กต์ options
จะระบุการเข้ารหัสเอาต์พุตที่แตกต่างกัน
ลายเซ็นและลักษณะการทำงานของ API นี้ตรงกับ sha256
API สำหรับคอนเทนเนอร์เว็บ แต่เทมเพลตที่กำหนดเองในคอนเทนเนอร์เซิร์ฟเวอร์ควรใช้ API ของ sha256Sync
เพื่อให้โค้ดง่ายขึ้น
ตัวอย่าง
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
const sha256 = require('sha256');
sha256('inputString', (digest) => {
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digest));
});
sha256('inputString', (digest) => {
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digest));
}, {outputEncoding: 'hex'});
ไวยากรณ์
sha256(input, onSuccess, options = undefined);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
input |
สตริง | สตริงที่จะแฮช |
onSuccess |
ฟังก์ชัน |
เรียกใช้ด้วยไดเจสต์ผลลัพธ์ ซึ่งเข้ารหัสใน base64 เว้นแต่ออบเจ็กต์ options จะระบุการเข้ารหัสเอาต์พุตที่แตกต่างกัน
|
options |
ออบเจ็กต์ |
ไม่บังคับเป็นออบเจ็กต์ตัวเลือกเพื่อระบุการเข้ารหัสเอาต์พุต หากระบุ ออบเจ็กต์ควรมีคีย์ outputEncoding ที่มีค่าเป็นหนึ่งใน base64 หรือ hex
|
สิทธิ์ที่เชื่อมโยง
ไม่มี
sha256Sync
คำนวณและแสดงไดเจสต์ SHA-256 ของอินพุตซึ่งเข้ารหัสใน base64
เว้นแต่ออบเจ็กต์ options
ระบุการเข้ารหัสเอาต์พุตที่แตกต่างกัน
ตัวอย่าง
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
const sha256Sync = require('sha256Sync');
const digestBase64 = sha256Sync('inputString');
const digestHex = sha256Sync('inputString', {outputEncoding: 'hex'});
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digestBase64));
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digestHex));
ไวยากรณ์
sha256Sync(input, options = undefined);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
input |
สตริง | สตริงที่จะแฮช |
options |
ออบเจ็กต์ |
ไม่บังคับเป็นออบเจ็กต์ตัวเลือกเพื่อระบุการเข้ารหัสเอาต์พุต หากระบุ ออบเจ็กต์ควรมีคีย์ outputEncoding ที่มีค่าเป็นหนึ่งใน base64 หรือ hex
|
สิทธิ์ที่เชื่อมโยง
ไม่มี
templateDataStorage
แสดงผลวัตถุพร้อมกับวิธีการเข้าถึงพื้นที่เก็บข้อมูลของเทมเพลต พื้นที่เก็บข้อมูลของเทมเพลตช่วยให้แชร์ข้อมูลข้ามการดำเนินการของเทมเพลตเดียวได้ ข้อมูลที่จัดเก็บไว้ในพื้นที่เก็บข้อมูลเทมเพลตจะยังคงอยู่ในเซิร์ฟเวอร์ที่เรียกใช้คอนเทนเนอร์ ในกรณีส่วนใหญ่จะมีเซิร์ฟเวอร์หลายตัวที่กำลังใช้งานคอนเทนเนอร์ ดังนั้นการจัดเก็บข้อมูลในพื้นที่เก็บข้อมูลเทมเพลตจึงไม่ได้รับประกันว่าคำขอที่ตามมาทุกครั้งจะสามารถเข้าถึงข้อมูลได้
"data" ในชื่อ "templateDataStorage" หมายถึงข้อเท็จจริงที่ว่ามีเพียงประเภทข้อมูลทั่วไปที่ไม่ใช่ฟังก์ชันเท่านั้นที่สามารถจัดเก็บโดยใช้ API นี้ ระบบจะเก็บฟังก์ชันหรือการอ้างอิงฟังก์ชันที่ส่งไปยัง API ดังกล่าวในรูปแบบ null
แทน
ไวยากรณ์
const templateDataStorage = require('templateDataStorage');
// Returns a copy of the value stored for the given key, or null if nothing
// is stored with that key.
templateDataStorage.getItemCopy(key);
// Stores a copy of the value for the given key (or removes the data stored
// for the given key if the input value is null).
templateDataStorage.setItemCopy(key, value);
// Removes the value stored for the given key, if present.
templateDataStorage.removeItem(key);
// Deletes all values stored for the current template.
templateDataStorage.clear();
ตัวอย่าง
const sendHttpGet = require('sendHttpGet');
const setResponseBody = require('setResponseBody');
const setResponseStatus = require('setResponseStatus');
const templateDataStorage = require('templateDataStorage');
// Check to see if the item is in the cache.
const cachedBody = templateDataStorage.getItemCopy(data.key);
if (cachedBody) {
setResponseBody(cachedBody);
data.gtmOnSuccess();
return;
}
sendHttpGet(data.url).then((result) => {
if (result.statusCode >= 200 && result.statusCode < 300) {
setResponseBody(result.body);
templateDataStorage.setItemCopy(data.key, result.body);
data.gtmOnSuccess();
} else {
data.gtmOnFailure();
}
setResponseStatus(result.statusCode);
});
สิทธิ์ที่เชื่อมโยง
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 |
สตริง | สตริงที่จะเข้ารหัส |
options
|
ออบเจ็กต์ | ไม่บังคับ การกำหนดค่า API (โปรดดูตัวเลือกด้านล่าง) |
ตัวเลือก
ตัวเลือก | ประเภท | คำอธิบาย | เวอร์ชันขั้นต่ำ |
---|---|---|---|
urlEncoding
|
boolean | หากเป็น "จริง" ผลลัพธ์จะเข้ารหัสโดยใช้รูปแบบ base64url |
1.0.0 |
ตัวอย่าง
const toBase64 = require('toBase64');
const base64Hello = toBase64('hello');
const base64UrlHello = toBase64('hello', {urlEncoding: true});
สิทธิ์ที่เชื่อมโยง
ไม่มี
BigQuery
แสดงผลออบเจ็กต์ที่มีฟังก์ชัน BigQuery
ฟังก์ชัน BigQuery.insert
ช่วยให้เขียนข้อมูลลงในตาราง BigQuery ได้ โดยจะแสดงผลสัญญาที่แก้ไขเมื่อมีการแทรกสำเร็จหรือถูกปฏิเสธเมื่อเกิดข้อผิดพลาด
เมื่อการแทรกสำเร็จ สัญญาจะแก้ไขโดยไม่มีอาร์กิวเมนต์
เมื่อแทรกไม่สำเร็จ สัญญาจะปฏิเสธพร้อมด้วยรายการออบเจ็กต์ที่มีสาเหตุของข้อผิดพลาด และอาจรวมถึงออบเจ็กต์แถวหากเกิดข้อผิดพลาด คำขอส่วนหนึ่งอาจเสร็จสมบูรณ์ ในขณะที่ส่วนอื่นๆ อาจไม่ดำเนินการ การสัญญาถูกปฏิเสธในกรณีนี้โดยมีรายการข้อผิดพลาดสำหรับแต่ละแถวที่มีออบเจ็กต์แถวเพื่อช่วยระบุแถวที่มีการแทรก (ดูตัวอย่างข้อผิดพลาดด้านล่าง) โปรดดูข้อมูลเพิ่มเติมในเอกสารประกอบของ BigQuery เกี่ยวกับข้อความแสดงข้อผิดพลาด
ไวยากรณ์
BigQuery.insert(connectionInfo, rows[, options]);
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
connectionInfo |
ออบเจ็กต์ |
กำหนดข้อมูลที่จำเป็นเพื่อเชื่อมต่อกับตาราง BigQuery มีพารามิเตอร์ที่ไม่บังคับ 1 รายการและพารามิเตอร์ที่จําเป็น 2 รายการ ได้แก่
|
rows |
อาร์เรย์ | แถวที่จะแทรกในตาราง |
options |
ออบเจ็กต์ | ตัวเลือกคำขอที่ไม่บังคับ ตัวเลือกที่รองรับ ได้แก่ ignoreUnknownValues และ skipไม่ถูกต้องRows ระบบจะไม่สนใจคีย์ตัวเลือกที่ไม่รู้จัก (ดูตัวเลือกด้านล่าง) |
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
ignoreUnknownValues |
boolean | หากตั้งค่าเป็น true ให้ยอมรับแถวที่มีค่าที่ไม่ตรงกับสคีมา ระบบจะไม่สนใจค่าที่ไม่รู้จัก ค่าเริ่มต้นคือ false |
skipInvalidRows |
boolean | หากตั้งค่าเป็น true ให้แทรกแถวที่ถูกต้องทั้งหมดของคำขอ แม้จะมีแถวที่ไม่ถูกต้องก็ตาม ค่าเริ่มต้นคือ false |
ข้อผิดพลาด "ไม่พบโมดูล" หมายความว่าคอนเทนเนอร์เซิร์ฟเวอร์ของคุณอาจใช้งานอิมเมจเวอร์ชันเก่าของเราซึ่งยังไม่ได้รวมโมดูล BigQuery โปรดทำให้คอนเทนเนอร์เซิร์ฟเวอร์ใช้งานได้อีกครั้งด้วยการตั้งค่าเดียวกันโดยใช้สคริปต์การติดตั้งใช้งาน ระบบจะรวมโมดูลนี้โดยอัตโนมัติเมื่อการดำเนินการเสร็จสิ้น
ข้อผิดพลาดที่ไม่มีการแทรกมักมีออบเจ็กต์ข้อผิดพลาด 1 รายการที่มีคีย์ reason
ดังนี้
[{reason: 'invalid'}]
ข้อผิดพลาดในการแทรกอาจมีออบเจ็กต์ข้อผิดพลาดหลายรายการที่มีอาร์เรย์ errors
และออบเจ็กต์ row
ต่อไปนี้คือตัวอย่างการตอบสนองของข้อผิดพลาดจากการแทรกแถว 2 แถวที่มีข้อผิดพลาดเพียงแถวเดียว
[
{
"errors": [
{
"reason":"invalid"
}
],
"row": {
"string_col":"otherString",
"number_col":-3,
"bool_col":3
}
},
{
"errors": [
{
"reason":"stopped"
}
],
"row": {
"string_col":"stringValue",
"number_col":5,
"bool_col:false
}
}
]
ตัวอย่าง
const BigQuery = require('BigQuery');
const connectionInfo = {
'projectId': 'gcp-cloud-project-id',
'datasetId': 'destination-dataset',
'tableId': 'destination-table',
};
const rows = [{
'column1': 'String1',
'column2': 1234,
}];
const options = {
'ignoreUnknownValues': true,
'skipInvalidRows': false,
};
BigQuery.insert(connectionInfo, rows, options)
.then(data.gtmOnSuccess, data.gtmOnFailure);
สิทธิ์ที่เชื่อมโยง
Firestore
แสดงผลออบเจ็กต์ที่มีฟังก์ชัน Firestore
API นี้รองรับเฉพาะ Firestore ในโหมดดั้งเดิม ไม่ใช่ Firestore ในโหมด Datastore นอกจากนี้ API ยังรองรับเฉพาะการใช้ฐานข้อมูลเริ่มต้นเท่านั้น
Firestore.read
ฟังก์ชัน Firestore.read
จะอ่านข้อมูลจากเอกสาร Firestore และแสดงผลสัญญาที่แก้ไขเป็นออบเจ็กต์ที่มี 2 คีย์ ได้แก่ id
และ data
หากไม่มีเอกสารอยู่ สัญญาจะปฏิเสธด้วยออบเจ็กต์ที่มีคีย์ reason
เท่ากับ not_found
ไวยากรณ์
Firestore.read(path[, options]);
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
path |
สตริง | เส้นทางไปยังเอกสารหรือคอลเล็กชัน ต้องไม่ขึ้นต้นหรือลงท้ายด้วย "/" |
options |
ออบเจ็กต์ | ตัวเลือกคำขอที่ไม่บังคับ ตัวเลือกที่รองรับ ได้แก่ projectId, disableCache และ transaction ระบบจะไม่สนใจคีย์ตัวเลือกที่ไม่รู้จัก (ดูตัวเลือกด้านล่าง) |
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
projectId |
สตริง | Optional รหัสโปรเจ็กต์ Google Cloud Platform หากไม่ระบุ projectId จะดึงข้อมูลจากตัวแปรสภาพแวดล้อม GOOGLE_CLOUD_PROJECT ตราบใดที่ตั้งค่าสิทธิ์ access_firestore สำหรับรหัสโปรเจ็กต์เป็น * หรือ GOOGLE_CLOUD_PROJECT หากคอนเทนเนอร์เซิร์ฟเวอร์ทำงานอยู่ใน Google Cloud ระบบจะตั้งค่า GOOGLE_CLOUD_PROJECT เป็นรหัสของโปรเจ็กต์ Google Cloud อยู่แล้ว |
disableCache |
boolean | Optional กำหนดว่าจะปิดใช้แคชหรือไม่ ระบบจะเปิดใช้การแคชโดยค่าเริ่มต้น ซึ่งจะแคชผลลัพธ์ในช่วงที่มีการส่งคำขอ |
transaction |
สตริง | Optional ค่าที่ดึงมาจาก Firestore.runTransaction() ทำเครื่องหมายการดำเนินการที่จะใช้ภายในธุรกรรม |
ตัวอย่าง
const Firestore = require('Firestore');
return Firestore.read('collection/document', {
projectId: 'gcp-cloud-project-id',
}).then((result) => result.data.key, () => undefined);
Firestore.write
ฟังก์ชัน Firestore.write
จะเขียนข้อมูลลงในเอกสารหรือคอลเล็กชัน Firestore หากเป็นเส้นทางไปยังคอลเล็กชัน ระบบจะสร้างเอกสารพร้อมกับรหัสที่สร้างขึ้นแบบสุ่ม หากเส้นทางเป็นเอกสารแต่ไม่มีอยู่ ระบบจะสร้างให้ API นี้จะส่งคืนคำสัญญาที่แปลงเป็นรหัสของเอกสารที่เพิ่มหรือแก้ไข หากใช้ตัวเลือกธุรกรรม API จะยังคงแสดงสัญญา แต่จะไม่มีรหัสเนื่องจากการเขียนเป็นชุดๆ
ไวยากรณ์
Firestore.write(path, input[, options]);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
path |
สตริง | เส้นทางไปยังเอกสารหรือคอลเล็กชัน ต้องไม่ขึ้นต้นหรือลงท้ายด้วย "/" |
input |
ออบเจ็กต์ | ค่าที่จะเขียนลงในเอกสาร หากตั้งค่าตัวเลือกการรวมไว้ API จะรวมคีย์จากอินพุตไว้ในเอกสาร |
options |
ออบเจ็กต์ | ตัวเลือกคำขอที่ไม่บังคับ ตัวเลือกที่รองรับ ได้แก่ projectId merge และ transaction ระบบจะไม่สนใจคีย์ตัวเลือกที่ไม่รู้จัก (ดูตัวเลือกด้านล่าง) |
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
projectId |
สตริง | Optional รหัสโปรเจ็กต์ Google Cloud Platform หากไม่ระบุ projectId จะดึงข้อมูลจากตัวแปรสภาพแวดล้อม GOOGLE_CLOUD_PROJECT ตราบใดที่ตั้งค่าสิทธิ์ access_firestore สำหรับรหัสโปรเจ็กต์เป็น * หรือ GOOGLE_CLOUD_PROJECT หากคอนเทนเนอร์เซิร์ฟเวอร์ทำงานอยู่ใน Google Cloud ระบบจะตั้งค่า GOOGLE_CLOUD_PROJECT เป็นรหัสของโปรเจ็กต์ Google Cloud อยู่แล้ว |
merge |
boolean | Optional หากตั้งค่าเป็น true ให้ผสานคีย์จากอินพุตในเอกสาร มิเช่นนั้นเมธอดจะลบล้างทั้งเอกสาร ค่าเริ่มต้นคือ false |
transaction |
สตริง | Optional ค่าที่ดึงมาจาก Firestore.runTransaction() ทำเครื่องหมายการดำเนินการที่จะใช้ภายในธุรกรรม |
ตัวอย่าง
const Firestore = require('Firestore');
const input = {key1: 'value1', key2: 12345};
Firestore.write('collection/document', input, {
projectId: 'gcp-cloud-project-id',
merge: true,
}).then((id) => {
data.gtmOnSuccess();
}, data.gtmOnFailure);
Firestore.query
ฟังก์ชัน Firestore.query
จะค้นหาคอลเล็กชันที่ระบุและส่งคืนคำสัญญาที่ตรงกับอาร์เรย์ของเอกสาร Firestore ที่ตรงกับเงื่อนไขการค้นหา ออบเจ็กต์เอกสาร Firestore เหมือนกับที่ระบุไว้ข้างต้นใน Firestore.read
หากไม่มีเอกสารที่ตรงกับเงื่อนไขการค้นหา สัญญาที่ส่งกลับจะแก้ไขเป็นอาร์เรย์ว่างเปล่า
ไวยากรณ์
Firestore.query(collection, queryConditions[, options]);
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
collection |
สตริง | เส้นทางไปยังคอลเล็กชัน ต้องไม่ขึ้นต้นหรือลงท้ายด้วย "/" |
queryConditions |
อาร์เรย์ | อาร์เรย์ของเงื่อนไขการค้นหา การค้นหาแต่ละรายการจะมาในรูปแบบของอาร์เรย์ที่มีค่า 3 ค่า ได้แก่ key,
operator และ expectedValue E.g.:
[[‘id’, ‘<’, ‘5’], [‘state’, ‘==’, ‘CA’]] ระบบจะใช้เงื่อนไขร่วมกันเพื่อสร้างผลการค้นหา โปรดดู โอเปอเรเตอร์การค้นหาของ Firestore เพื่อดูรายการโอเปอเรเตอร์การค้นหาที่เข้ากันได้ |
options |
ออบเจ็กต์ | ตัวเลือกคำขอที่ไม่บังคับ ตัวเลือกที่รองรับ ได้แก่ projectId, disableCache, limit และ transaction ระบบจะไม่สนใจคีย์ตัวเลือกที่ไม่รู้จัก (ดูตัวเลือกด้านล่าง) |
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
projectId |
สตริง | Optional รหัสโปรเจ็กต์ Google Cloud Platform หากไม่ระบุ projectId จะดึงข้อมูลจากตัวแปรสภาพแวดล้อม GOOGLE_CLOUD_PROJECT ตราบใดที่ตั้งค่าสิทธิ์ access_firestore สำหรับรหัสโปรเจ็กต์เป็น * หรือ GOOGLE_CLOUD_PROJECT หากคอนเทนเนอร์เซิร์ฟเวอร์ทำงานอยู่ใน Google Cloud ระบบจะตั้งค่า GOOGLE_CLOUD_PROJECT เป็นรหัสของโปรเจ็กต์ Google Cloud อยู่แล้ว |
disableCache |
boolean | Optional กำหนดว่าจะปิดใช้แคชหรือไม่ ระบบจะเปิดใช้การแคชโดยค่าเริ่มต้น ซึ่งจะแคชผลลัพธ์ในช่วงที่มีการส่งคำขอ |
limit |
ตัวเลข | Optional เปลี่ยนจำนวนผลลัพธ์สูงสุดที่การค้นหาแสดงผล ค่าเริ่มต้นคือ 5 |
transaction |
สตริง | Optional ค่าที่ดึงมาจาก Firestore.runTransaction() ทำเครื่องหมายการดำเนินการที่จะใช้ภายในธุรกรรม |
ตัวอย่าง
const Firestore = require('Firestore');
const queries = const queries = [['id', '==', '5']];
return Firestore.query('collection', queries, {
projectId: 'gcp-cloud-project-id',
limit: 1,
}).then((documents) => documents[0].data.key, () => undefined);
Firestore.runTransaction
ฟังก์ชัน Firestore.runTransaction
ช่วยให้ผู้ใช้อ่านและเขียนจาก Firestore ได้แบบอะตอม หากเกิดข้อขัดแย้งในการเขียนพร้อมกันหรือธุรกรรมอื่น
ระบบจะพยายามทำธุรกรรมใหม่สูงสุด 2 ครั้ง หากล้มเหลวหลังจากพยายามครบ 3 ครั้งแล้ว API จะปฏิเสธพร้อมข้อผิดพลาด API นี้จะส่งคืนคำสัญญาที่แปลงเป็นอาร์เรย์ของรหัสเอกสาร เมื่อดำเนินการเขียนแต่ละครั้ง หากธุรกรรมเสร็จสมบูรณ์ และจะปฏิเสธพร้อมข้อผิดพลาดหากดำเนินการไม่สำเร็จ
ไวยากรณ์
Firestore.runTransaction(callback[, options]);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
callback |
ฟังก์ชัน | Callback ที่เรียกใช้ด้วยรหัสธุรกรรมสตริง รหัสธุรกรรมจะส่งไปในการเรียก API แบบอ่าน/เขียน/ค้นหาได้ ฟังก์ชัน Callback นี้ต้องแสดงผลลัพธ์ การติดต่อกลับอาจทำงานสูงสุด 3 ครั้งก่อนที่จะล้มเหลว |
options |
ออบเจ็กต์ | ตัวเลือกคำขอที่ไม่บังคับ ตัวเลือกที่รองรับเพียงตัวเลือกเดียว คือ projectId ระบบจะไม่สนใจคีย์ตัวเลือกที่ไม่รู้จัก (ดูตัวเลือกด้านล่าง) |
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
projectId |
สตริง | Optional รหัสโปรเจ็กต์ Google Cloud Platform หากไม่ระบุ projectId จะดึงข้อมูลจากตัวแปรสภาพแวดล้อม GOOGLE_CLOUD_PROJECT ตราบใดที่ตั้งค่าสิทธิ์ access_firestore สำหรับรหัสโปรเจ็กต์เป็น * หรือ GOOGLE_CLOUD_PROJECT หากคอนเทนเนอร์เซิร์ฟเวอร์ทำงานอยู่ใน Google Cloud ระบบจะตั้งค่า GOOGLE_CLOUD_PROJECT เป็นรหัสของโปรเจ็กต์ Google Cloud อยู่แล้ว |
ตัวอย่าง
const Firestore = require('Firestore');
const path = 'collection/document';
const projectId = 'gcp-cloud-project-id';
Firestore.runTransaction((transaction) => {
const transactionOptions = {
projectId: projectId,
transaction: transaction,
};
// Must return a promise.
return Firestore.read(path, transactionOptions).then((result) => {
const newInputCount = result.data.inputCount + 1;
const input = {key1: 'value1', inputCount: newInputCount};
return Firestore.write(path, input, transactionOptions);
});
}, {
projectId: projectId
}).then((ids) => {
data.gtmOnSuccess();
}, data.gtmOnFailure);
ข้อผิดพลาดที่มีอยู่ในฟังก์ชัน Firestore แต่ละรายการจะถูกปฏิเสธด้วยออบเจ็กต์ที่มีคีย์ reason
ดังนี้
Firestore.read(...).then(onSuccess, (error) => {
if (error.reason === 'unknown') {
// Handle the unknown error here.
}
});
สาเหตุของข้อผิดพลาดอาจมีแต่ไม่จำกัดเพียงรหัสข้อผิดพลาด REST API ของ 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 (โดยปกติแล้วจะเป็นโดยแท็ก) การเรียกกลับจะเรียกใช้พร้อมกัน Callback จะทำงานโดยใช้พารามิเตอร์ 2 ตัว ได้แก่
messageType:string
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 |
สตริง | ประเภทข้อความที่จะฟัง หากค่าไม่ใช่สตริง ระบบจะเปลี่ยนค่าเป็นสตริง |
callback |
ฟังก์ชัน | 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 |
สตริง | ประเภทข้อความที่จะส่ง หากค่าไม่ใช่สตริง ระบบจะเปลี่ยนค่าเป็นสตริง |
message |
ออบเจ็กต์ | ข้อความที่จะส่ง หากข้อความไม่ใช่วัตถุ API จะไม่ดำเนินการใดๆ |
สิทธิ์ที่เชื่อมโยง
ต้องมีสิทธิ์ use_message
สิทธิ์ดังกล่าวต้องได้รับการกำหนดค่า
เพื่ออนุญาตสิ่งต่อไปนี้
- ประเภทข้อความที่มี
Usage
จากlisten_and_send
หรือsend
Object
แสดงผลออบเจ็กต์ที่ระบุเมธอด Object
เมธอด keys()
จะมีลักษณะการทำงานของ Object.keys() ของไลบรารีมาตรฐาน โดยจะแสดงผลอาร์เรย์ของชื่อพร็อพเพอร์ตี้ที่แจกแจงได้ของออบเจ็กต์ที่กำหนดเองในลำดับเดียวกับที่ for...in...
วนซ้ำ หากค่าอินพุตไม่ใช่ออบเจ็กต์ ระบบจะเปลี่ยนค่าเป็นออบเจ็กต์
เมธอด values()
จะมีลักษณะการทำงานของ Object.values() ของไลบรารีมาตรฐาน โดยจะแสดงผลอาร์เรย์ของค่าพร็อพเพอร์ตี้ที่แจกแจงได้ของออบเจ็กต์ที่กำหนดเองในลำดับเดียวกับที่ for...in...
วนซ้ำ หากค่าอินพุตไม่ใช่ออบเจ็กต์
ระบบจะเปลี่ยนค่าเป็นออบเจ็กต์
เมธอด entries()
จะมีลักษณะการทำงานของ Object.entries() ของไลบรารีมาตรฐาน โดยจะแสดงผลอาร์เรย์ของพร็อพเพอร์ตี้ที่แจกแจงได้ของออบเจ็กต์ที่กำหนดเอง [key, value]
ในลำดับเดียวกับที่ for...in...
จะวนซ้ำ หากค่าอินพุตไม่ใช่ออบเจ็กต์ ระบบจะเปลี่ยนค่าเป็นออบเจ็กต์
เมธอด freeze()
จะมีลักษณะการทำงานของ Object.freeze() ไลบรารีมาตรฐาน วัตถุที่ตรึงไว้จะไม่สามารถเปลี่ยนแปลงได้แล้ว การตรึงวัตถุจะทำให้ไม่สามารถเพิ่มคุณสมบัติใหม่ นำพร็อพเพอร์ตี้ที่มีอยู่ออก และไม่สามารถเปลี่ยนค่าของพร็อพเพอร์ตี้ที่มีอยู่ได้ freeze()
จะแสดงผลออบเจ็กต์เดียวกันที่ถูกส่งผ่าน อาร์กิวเมนต์ดั้งเดิมหรือค่า Null จะถือว่า
เสมือนเป็นออบเจ็กต์ที่ตรึงไว้ และจะแสดงผล
เมธอด delete()
จะมีลักษณะการทำงานของโอเปอเรเตอร์การลบของไลบรารีมาตรฐาน โดยจะนำคีย์ที่ระบุออกจากออบเจ็กต์ เว้นแต่ว่าออบเจ็กต์ถูกตรึงไว้
และจะแสดงผล true
หากค่าอินพุตแรก (objectInput
) เป็นออบเจ็กต์ที่ไม่ได้ตรึง แม้ว่าค่าอินพุตที่ 2 (keyToDelete
) จะระบุคีย์ที่ไม่มีอยู่ เช่นเดียวกับโอเปอเรเตอร์การลบไลบรารีมาตรฐาน และจะแสดงผล false
ในกรณีอื่นๆ ทั้งหมด แต่จะมีข้อแตกต่างจากโอเปอเรเตอร์การลบไลบรารีมาตรฐานดังนี้
keyToDelete
ไม่สามารถเป็นสตริงที่คั่นด้วยจุดที่ระบุคีย์ที่ฝัง- ไม่สามารถใช้
delete()
เพื่อนำองค์ประกอบออกจากอาร์เรย์ - ใช้
delete()
เพื่อนำพร็อพเพอร์ตี้ออกจากขอบเขตส่วนกลางไม่ได้
ไวยากรณ์
Object.keys(objectInput)
Object.values(objectInput)
Object.entries(objectInput)
Object.freeze(objectInput)
Object.delete(objectInput, keyToDelete)
พารามิเตอร์
Object.keys
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
objectInput | ใดก็ได้ | ออบเจ็กต์ที่มีคีย์สำหรับแจกแจง หากอินพุตไม่ใช่ออบเจ็กต์ ระบบจะเปลี่ยนอินพุตเป็นออบเจ็กต์ |
Object.values
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
objectInput | ใดก็ได้ | ออบเจ็กต์ที่มีค่าที่จะแจกแจง หากอินพุตไม่ใช่ออบเจ็กต์ ระบบจะเปลี่ยนอินพุตเป็นออบเจ็กต์ |
Object.entries
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
objectInput | ใดก็ได้ | ออบเจ็กต์ที่มีคู่คีย์/ค่าที่จะแจกแจง หากอินพุตไม่ใช่ออบเจ็กต์ ระบบจะเปลี่ยนอินพุตเป็นออบเจ็กต์ |
Object.freeze
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
objectInput | ใดก็ได้ | วัตถุที่จะตรึงวัตถุ หากอินพุตไม่ใช่ออบเจ็กต์ ระบบจะถือว่าเป็นออบเจ็กต์ที่ค้าง |
Object.delete
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
objectInput | ใดก็ได้ | ออบเจ็กต์ที่มีคีย์ที่จะลบ |
keyToDelete | สตริง | คีย์ระดับบนสุดที่จะลบ |
ตัวอย่าง
const Object = require('Object');
// The keys of an object are enumerated in an array.
const keys = Object.keys({foo: 'bar'});
// The values of an object are enumerated in an array.
const values = Object.values({foo: 'bar'});
// The key/value pairs of an object are enumerated in an array.
const entries = Object.entries({foo: 'bar'});
// The input object is frozen.
const frozen = Object.freeze({foo: 'bar'});
// The key is removed from the input object.
const obj1 = {deleteme: 'value'};
Object.delete(obj1, 'deleteme');
// Only a top-level key can be specified as the key to delete.
const obj2 = {nested: {key: 'value'}};
Object.delete(obj2, 'nested.key'); // This has no effect.
Object.delete(obj2.nested, 'key'); // This deletes the nested key.
Promise
แสดงผลออบเจ็กต์ที่ระบุวิธีในการโต้ตอบกับสัญญา
Promise ทำหน้าที่เทียบเท่ากับการสัญญาจาก JavaScript แต่ละอินสแตนซ์มี 3 วิธีที่แสดงผลสัญญา (Promise) ซึ่งอนุญาตให้ดำเนินการเพิ่มเติมเมื่อสัญญาสิ้นสุดลง ดังนี้
.then()
- จัดการทั้งกรณีที่แก้ไขและถูกปฏิเสธ ระบบจะใช้การเรียกกลับ 2 รายการเป็นพารามิเตอร์ โดยรายการหนึ่งสำหรับกรณีสำเร็จและอีก 1 รายการสำหรับกรณีที่ล้มเหลว.catch()
- จัดการเคสที่ถูกปฏิเสธเท่านั้น จะใช้ Callback 1 รายการเป็นพารามิเตอร์.finally()
- ระบุวิธีเรียกใช้โค้ดไม่ว่าจะได้รับการแก้ไขหรือปฏิเสธสัญญา ใช้ Callback 1 รายการเป็นพารามิเตอร์ที่เรียกใช้โดยไม่มีอาร์กิวเมนต์
ตัวแปรที่แสดงผลสัญญาเท่ากับค่าที่แก้ไขแล้วของสัญญา หรือ false
หากสัญญาปฏิเสธ
ตัวอย่าง
promise.then((resolvedValue) => {
// Handles when promise resolves.
}, (rejectedValue) => {
// Handles when promise rejects.
});
promise.catch((rejectedValue) => {
// Handles when promise rejects.
});
promise.finally(() => {
// Runs regardless of whether or not the previous promise resolves or
// rejects.
});
Promise.all
แสดงสัญญาว่า
- จะปรากฏขึ้นเมื่ออินพุตทั้งหมดได้รับการแก้ไข หรือ
- ปฏิเสธเมื่ออินพุตใดๆ ปฏิเสธ
ไวยากรณ์
Promise.all(inputs);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
inputs |
อาร์เรย์ | อาร์เรย์ของค่าหรือคำสัญญา หากอินพุตไม่ใช่สัญญา ระบบจะส่งต่ออินพุตดังกล่าวเสมือนว่าเป็นค่าที่ได้ทำการสัญญา โดยจะแสดงข้อผิดพลาดหากอินพุตไม่ใช่อาร์เรย์ |
ตัวอย่าง
const Promise = require('Promise');
const sendHttpGet = require('sendHttpGet');
return Promise.all(['a', sendHttpGet('https://example.com')])
.then((results) => {
// results will equal: ['a', {statusCode: 200, headers: {}, body: ''}]
});
สิทธิ์ที่เชื่อมโยง
ไม่มี
Promise.create
สร้างสัญญาที่มีฟังก์ชันการทำงานเทียบเท่ากับคำสัญญา JavaScript
ไวยากรณ์
Promise.create(resolver);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
resolver |
ฟังก์ชัน | ฟังก์ชันที่มีการเรียกใช้ด้วย 2 ฟังก์ชัน ได้แก่ แก้โจทย์และปฏิเสธ สัญญาที่ส่งกลับมาจะแก้ไขหรือปฏิเสธเมื่อมีการเรียกใช้พารามิเตอร์ที่เกี่ยวข้อง จะแสดงข้อผิดพลาดหากรีโซลเวอร์ไม่ใช่ฟังก์ชัน |
ตัวอย่าง
const Promise = require('Promise');
return Promise.create((resolve, reject) => {
// Do asynchronous work that eventually calls resolve() or reject()
});
สิทธิ์ที่เชื่อมโยง
ไม่มี
ทดสอบ API
API เหล่านี้ทำงานร่วมกับการทดสอบ JavaScript ที่ทำแซนด์บ็อกซ์เพื่อสร้างการทดสอบสำหรับเทมเพลตที่กำหนดเองใน Google Tag Manager API ทดสอบเหล่านี้ไม่ต้องใช้คำสั่ง require()
[ดูข้อมูลเพิ่มเติมเกี่ยวกับการทดสอบเทมเพลตที่กำหนดเอง]
assertApi
แสดงผลออบเจ็กต์ตัวจับคู่ที่สามารถใช้เพื่อยืนยัน API ที่ระบุได้อย่างคล่องแคล่ว
ไวยากรณ์
assertApi(apiName)
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
apiName |
สตริง | ชื่อของ API ที่จะตรวจสอบ ซึ่งเป็นสตริงเดียวกันกับที่ส่งไปยัง require()
|
เครื่องมือจับคู่
Subject.wasCalled()
Subject.wasNotCalled()
Subject.wasCalledWith(...expected)
Subject.wasNotCalledWith(...expected)
ตัวอย่าง
assertApi('sendPixel').wasCalled();
assertApi('getUrl').wasNotCalled();
assertApi('makeNumber').wasCalledWith('8');
assertApi('setInWindow').wasNotCalledWith('myVar', 'theWrongValue');
assertThat
assertThat
API จำลองมาจากไลบรารี [Truth] ของ Google โดยจะแสดงผลออบเจ็กต์ที่ใช้ยืนยันคุณค่าของวัตถุได้อย่างคล่องแคล่ว การยืนยันไม่สำเร็จจะหยุดการทดสอบทันทีและทำเครื่องหมายว่าไม่ผ่าน อย่างไรก็ตาม ความล้มเหลวในการทดสอบครั้งหนึ่งจะไม่มีผลต่อกรอบการทดสอบอื่นๆ
ไวยากรณ์
assertThat(actual, opt_message)
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
actual |
ใดก็ได้ | ค่าที่จะใช้ในการตรวจสอบความคล่องแคล่ว |
opt_message |
สตริง | ข้อความที่ไม่บังคับสำหรับพิมพ์หากยืนยันไม่สำเร็จ |
เครื่องมือจับคู่
ตัวจับคู่ | คำอธิบาย |
---|---|
isUndefined() |
ยืนยันว่าหัวข้อคือ undefined |
isDefined() |
ยืนยันว่าหัวข้อไม่ใช่ undefined |
isNull() |
ยืนยันว่าหัวข้อคือ null |
isNotNull() |
ยืนยันว่าหัวข้อไม่ใช่ null |
isFalse() |
ยืนยันว่าหัวข้อคือ false |
isTrue() |
ยืนยันว่าหัวข้อคือ true |
isFalsy() |
ยืนยันว่าหัวข้อไม่ถูกต้อง ค่าที่ไม่ถูกต้องคือ undefined , null , false , NaN , 0 และ '' (สตริงว่างเปล่า) |
isTruthy() |
ยืนยันว่าหัวข้อเป็นเรื่องจริง ค่าที่ไม่ถูกต้องคือ undefined , null , false , NaN , 0 และ '' (สตริงว่างเปล่า) |
isNaN() |
ยืนยันว่าหัวข้อเป็นค่า NaN |
isNotNaN() |
รับรองว่าเนื้อหามีค่านอกเหนือจาก NaN |
isInfinity() |
ยืนยันว่าเนื้อหาเป็นเรื่องของอินฟินิตี้เชิงบวกหรือเชิงลบ |
isNotInfinity() |
รับรองว่าเนื้อหามีค่านอกเหนือจากค่าอินฟินิตี้เชิงบวกหรือเชิงลบ |
isEqualTo(expected) |
รับรองว่าเนื้อหาเท่ากับค่าที่กำหนด การดำเนินการนี้เป็นการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบข้อมูลอ้างอิง เนื้อหาของออบเจ็กต์และอาร์เรย์จะมีการเปรียบเทียบซ้ำๆ |
isNotEqualTo(expected) |
ยืนยันว่าหัวข้อไม่เท่ากับค่าที่ระบุ การดำเนินการนี้เป็นการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบข้อมูลอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์ซ้ำ |
isAnyOf(...expected) |
ยืนยันว่าหัวข้อเท่ากับค่าใดค่าหนึ่งที่กำหนด การดำเนินการนี้เป็นการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบข้อมูลอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์ซ้ำ |
isNoneOf(...expected) |
รับรองว่าหัวข้อไม่เท่ากับค่าที่กำหนด การดำเนินการนี้เป็นการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบข้อมูลอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์ซ้ำ |
isStrictlyEqualTo(expected) |
รับรองว่าเนื้อหามีความเหมือนกันทุกประการ (=== ) กับค่าที่ระบุ |
isNotStrictlyEqualTo(expected) |
รับรองว่าหัวข้อไม่ได้เท่ากับ (!== ) กับค่าที่ระบุอย่างเคร่งครัด |
isGreaterThan(expected) |
รับรองว่าวัตถุมากกว่า (> ) ค่าที่ระบุในการเปรียบเทียบตามลำดับ |
isGreaterThanOrEqualTo(expected) |
รับรองว่าวัตถุมากกว่าหรือเท่ากับ (>= ) ค่าที่ระบุในการเปรียบเทียบตามลำดับ |
isLessThan(expected) |
รับรองว่าเรื่องน้อยกว่า (< ) ค่าที่ระบุในการเปรียบเทียบตามลำดับ |
isLessThanOrEqualTo(expected) |
รับรองว่าเรื่องน้อยกว่าหรือเท่ากับ (<= ) ค่าที่ระบุในการเปรียบเทียบตามลำดับ |
contains(...expected) |
รับรองว่าเรื่องเป็นอาร์เรย์หรือสตริงที่มีค่าทั้งหมดที่กำหนดในลำดับใดก็ได้ นี่เป็นการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบข้อมูลอ้างอิง เนื้อหาของออบเจ็กต์และอาร์เรย์จะมีการเปรียบเทียบซ้ำๆ |
doesNotContain(...expected) |
รับรองว่าเรื่องเป็นอาร์เรย์หรือสตริงที่ไม่มีค่าที่ระบุ นี่คือการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบข้อมูลอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์ซ้ำ |
containsExactly(...expected) |
รับรองว่าเรื่องเป็นอาร์เรย์ที่มีค่าทั้งหมดที่กำหนดในลำดับใดก็ได้และไม่มีค่าอื่นๆ การดำเนินการนี้เป็นการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบข้อมูลอ้างอิง เนื้อหาของออบเจ็กต์และอาร์เรย์จะมีการเปรียบเทียบซ้ำๆ |
doesNotContainExactly(...expected) |
รับรองว่าเรื่องเป็นอาร์เรย์ที่มีชุดค่าที่แตกต่างจากค่าที่กำหนดในลำดับใดก็ได้ นี่เป็นการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบข้อมูลอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์ซ้ำ |
hasLength(expected) |
รับรองว่าเรื่องเป็นอาร์เรย์หรือสตริงที่มีความยาวตามที่กำหนด การยืนยันจะล้มเหลวเสมอหากค่าไม่ใช่อาร์เรย์หรือสตริง |
isEmpty() |
รับรองว่าเรื่องเป็นอาร์เรย์หรือสตริงที่ว่างเปล่า (ความยาว = 0) การยืนยันจะไม่สำเร็จเสมอหากค่าไม่ใช่อาร์เรย์หรือสตริง |
isNotEmpty() |
รับรองว่าเรื่องเป็นอาร์เรย์หรือสตริงที่ไม่ว่างเปล่า (ความยาว > 0) การยืนยันจะล้มเหลวเสมอหากค่าไม่ใช่อาร์เรย์หรือสตริง |
isArray() |
ยืนยันว่าประเภทของหัวเรื่องเป็นอาร์เรย์ |
isBoolean() |
ยืนยันว่าประเภทของหัวเรื่องเป็นบูลีน |
isFunction() |
ยืนยันว่าประเภทของวัตถุเป็นฟังก์ชัน |
isNumber() |
ยืนยันว่าประเภทของเนื้อหาเป็นตัวเลข |
isObject() |
ยืนยันว่าประเภทของวัตถุคือวัตถุ |
isString() |
ยืนยันว่าประเภทของหัวเรื่องเป็นสตริง |
ตัวอย่าง
assertThat(undefined).isUndefined();
assertThat(id, 'ID must be defined').isDefined();
assertThat(null).isNull();
assertThat(undefined).isNotNull();
assertThat(true).isTrue();
assertThat(false).isFalse();
assertThat(1).isTruthy();
assertThat('').isFalsy();
assertThat(1/0).isInfinity();
assertThat(0).isNotInfinity();
assertThat(-'foo').isNaN();
assertThat(100).isNotNaN();
assertThat(sentUrl).isEqualTo('https://endpoint.example.com/?account=12345');
assertThat(category).isNotEqualTo('premium');
assertThat(5).isAnyOf(1, 2, 3, 4, 5);
assertThat(42).isNoneOf('the question', undefined, 41.9);
assertThat('value').isStrictlyEqualTo('value');
assertThat('4').isNotStrictlyEqualTo(4);
assertThat(['a', 'b', 'c']).contains('a', 'c');
assertThat(['x', 'y', 'z']).doesNotContain('f');
assertThat(['1', '2', '3']).containsExactly('3', '2', '1');
assertThat(['4', '5']).doesNotContainExactly('4');
assertThat('a string').hasLength(8);
assertThat([]).isEmpty();
assertThat('another string').isNotEmpty();
fail
ไม่ผ่านการทดสอบปัจจุบันทันทีและพิมพ์ข้อความที่ระบุไว้ (หากระบุไว้)
ไวยากรณ์
fail(opt_message);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
opt_message |
สตริง | ข้อความแสดงข้อผิดพลาดที่ไม่บังคับ |
ตัวอย่าง
fail('This test has failed.');
mock
mock
API ช่วยให้คุณลบล้างลักษณะการทำงานของ Sandboxed API ได้ Mock API ใช้งานได้อย่างปลอดภัยในโค้ดเทมเพลต แต่จะไม่มีการใช้งานเมื่อไม่ได้อยู่ในโหมดทดสอบ ระบบจะรีเซ็ตการจำลองก่อนที่จะทำการทดสอบแต่ละครั้ง
ไวยากรณ์
mock(apiName, returnValue);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
apiName |
สตริง | ชื่อของ API ที่จะจำลอง ซึ่งเป็นสตริงเดียวกันกับที่ส่งไปยัง require() |
returnValue |
ใดก็ได้ | ค่าที่จะแสดงผลสำหรับ API หรือฟังก์ชันที่มีการเรียกใช้แทน API หาก returnValue เป็นฟังก์ชัน ระบบจะเรียกใช้ฟังก์ชันนั้นแทน API แซนด์บ็อกซ์ หาก returnValue เป็นฟังก์ชันอื่นที่ไม่ใช่ฟังก์ชัน ระบบจะแสดงผลค่าดังกล่าวแทน API ที่แซนด์บ็อกซ์ |
ตัวอย่าง
mock('encodeUri', "https://endpoint.example.com/?account=12345");
mock('sendPixel', function(url, onSuccess, onFailure) {
onSuccess();
});
runCode
เรียกใช้โค้ดสำหรับเทมเพลต ซึ่งก็คือเนื้อหาของแท็บโค้ดในสภาพแวดล้อมการทดสอบปัจจุบันด้วยออบเจ็กต์ข้อมูลอินพุตที่กำหนด
ไวยากรณ์
runCode(data)
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
data |
ออบเจ็กต์ | ออบเจ็กต์ข้อมูลที่จะใช้ในการทดสอบ |
มูลค่าการคืนสินค้า
แสดงผลค่าของตัวแปรสำหรับเทมเพลตตัวแปร แสดงผล undefined
สำหรับเทมเพลตประเภทอื่นๆ ทั้งหมด
ตัวอย่าง
runCode({field1: 123, field2: 'value'});