เอกสารนี้ระบุ API สำหรับการติดแท็กฝั่งเซิร์ฟเวอร์
addEventCallback
ลงทะเบียนฟังก์ชันเรียกกลับที่จะเรียกใช้เมื่อสิ้นสุดเหตุการณ์ ระบบจะเรียกใช้การเรียกกลับเมื่อแท็กทั้งหมดสำหรับเหตุการณ์เริ่มทำงานแล้ว ระบบจะส่งการเรียกกลับ 2 ค่า คือ รหัสของคอนเทนเนอร์ที่เรียกใช้ฟังก์ชันและออบเจ็กต์ที่มีข้อมูลเกี่ยวกับเหตุการณ์
เมื่อใช้ API นี้ในแท็ก API นั้นจะเชื่อมโยงกับเหตุการณ์ปัจจุบัน เมื่อใช้ API นี้ในไคลเอ็นต์ จะต้องมีการเชื่อมโยง API กับเหตุการณ์ที่เฉพาะเจาะจงโดยใช้ฟังก์ชัน bindToEvent
ของ runContainer
API ดูรายละเอียดเพิ่มเติมได้ในตัวอย่าง
ไวยากรณ์
const addEventCallback = require('addEventCallback');
addEventCallback((containerId, eventData) => {
// Take some action based on the event data.
});
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
callback |
ของ Google | ฟังก์ชันที่จะเรียกใช้เมื่อสิ้นสุดเหตุการณ์ |
ออบเจ็กต์ eventData
มีข้อมูลต่อไปนี้
ชื่อคีย์ | ประเภท | คำอธิบาย |
---|---|---|
tags |
อาร์เรย์ |
อาร์เรย์ของออบเจ็กต์ข้อมูลแท็ก ทุกแท็กที่เริ่มทำงานระหว่างเหตุการณ์จะมีรายการในอาร์เรย์นี้ ออบเจ็กต์ข้อมูลแท็กมีรหัสของแท็ก (id ) สถานะการดำเนินการ (status ) และเวลาที่ดำเนินการ (executionTime ) ข้อมูลแท็กจะมีข้อมูลเมตาเพิ่มเติมของแท็กที่กำหนดค่าไว้ในแท็กด้วย
|
ในไคลเอ็นต์:
const addEventCallback = require('addEventCallback');
const claimRequest = require('claimRequest');
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const logToConsole = require('logToConsole');
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
claimRequest();
const events = extractEventsFromMpv1();
let eventsCompleted = 0;
events.forEach((evt, i) => {
runContainer(evt, /* onComplete= */ (bindToEvent) => {
bindToEvent(addEventCallback)((containerId, eventData) => {
logToConsole('Event Number: ' + i);
eventData.tags.forEach((tag) => {
logToConsole('Tag ID: ' + tag.id);
logToConsole('Tag Status: ' + tag.status);
logToConsole('Tag Execution Time: ' + tag.executionTime);
});
});
if (events.length === ++eventsCompleted) {
returnResponse();
}
});
});
ในแท็ก:
const addEventCallback = require('addEventCallback');
addEventCallback((containerId, eventData) => {
// This will be called at the end of the current event.
});
สิทธิ์ที่เกี่ยวข้อง
callLater
กำหนดเวลาการเรียกฟังก์ชันให้เกิดขึ้นแบบไม่พร้อมกัน ระบบจะเรียกใช้ฟังก์ชัน
หลังจากที่โค้ดปัจจุบันแสดงผล ซึ่งเทียบเท่ากับ setTimeout(<function>, 0)
ตัวอย่าง
const callLater = require('callLater');
const logToConsole = require('logToConsole');
callLater(() => {
logToConsole('Logged asynchronously');
});
ไวยากรณ์
callLater(function)
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
function |
ของ Google | ฟังก์ชันที่เรียกใช้ |
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
claimRequest
ใช้ API นี้ในไคลเอ็นต์เพื่ออ้างสิทธิ์คำขอ เมื่ออ้างสิทธิ์แล้ว คอนเทนเนอร์จะไม่เรียกใช้ไคลเอ็นต์เพิ่มเติม
API นี้จะมีข้อยกเว้นหากมีการเรียกในแท็กหรือตัวแปร API นี้จะมีข้อยกเว้นหากมีการเรียกหลังจากที่ไคลเอ็นต์กลับมา (เช่น หากมีการเรียกในการเรียกกลับแบบไม่พร้อมกัน เช่น ใน callLater
หรือฟังก์ชัน runContainer
onComplete
)
ไคลเอ็นต์ควรอ้างสิทธิ์คำขอโดยใช้ API นี้ก่อนเรียกใช้ runContainer
API
ตัวอย่าง
const claimRequest = require('claimRequest');
claimRequest();
ไวยากรณ์
claimRequest();
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
computeEffectiveTldPlusOne
แสดงผลโดเมนระดับบนสุดที่มีประสิทธิภาพ + 1 (eTLD+1) ของโดเมนหรือ URL ที่ระบุ eTLD+1 คำนวณโดยการประเมินโดเมนเทียบกับกฎรายการคำต่อท้ายสาธารณะ โดยทั่วไป eTLD+1 เป็นโดเมนระดับสูงสุดที่คุณสามารถตั้งค่าคุกกี้ได้
หากอาร์กิวเมนต์เป็น Null หรือไม่ได้กำหนด ค่าอาร์กิวเมนต์จะแสดงผลโดยไม่มีการเปลี่ยนแปลง มิฉะนั้น อาร์กิวเมนต์จะถูกเปลี่ยนเป็นสตริง หากอาร์กิวเมนต์ไม่ใช่โดเมนหรือ URL ที่ถูกต้อง ระบบจะแสดงผลสตริงว่าง หากเซิร์ฟเวอร์ดึงข้อมูลรายการคำต่อท้ายสาธารณะไม่ได้ ค่าอาร์กิวเมนต์จะแสดงผลโดยไม่มีการเปลี่ยนแปลง
ตัวอย่าง
const computeEffectiveTldPlusOne = require('computeEffectiveTldPlusOne');
// Returns 'example.co.uk'
computeEffectiveTldPlusOne('analytics.example.co.uk');
// Returns 'example.co.uk'
computeEffectiveTldPlusOne('https://analytics.example.co.uk/path');
ไวยากรณ์
computeEffectiveTldPlusOne(domainOrUrl);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
domainOrUrl |
สตริง | โดเมนหรือ URL ที่จะประมวลผล eTLD+1 |
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
createRegex
สร้างอินสแตนซ์นิพจน์ทั่วไปใหม่แล้วส่งคืนอินสแตนซ์ที่รวมไว้ในออบเจ็กต์ โดยคุณจะเข้าถึงนิพจน์ทั่วไปโดยตรงไม่ได้ แต่คุณจะส่งผ่าน API ไปยัง testRegex
API, String.replace()
, String.match()
และ String.search()
ได้
แสดงผล null
หากนิพจน์ทั่วไปไม่ถูกต้องหรือ Re2 ไม่พร้อมใช้งานบนเซิร์ฟเวอร์
API นี้ใช้การใช้งาน Re2 อิมเมจ Docker ของเซิร์ฟเวอร์ต้องเป็นเวอร์ชัน 2.0.0 ขึ้นไป
ตัวอย่าง
const createRegex = require('createRegex');
const domainRegex = createRegex('\\w+\\.com', 'i');
// Returns '/foobar'
'example.com/foobar'.replace(domainRegex, '');
ไวยากรณ์
createRegex(pattern, flags);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
pattern |
สตริง | ข้อความของนิพจน์ทั่วไป |
flags |
สตริง | สตริงที่ไม่บังคับซึ่งมีแฟล็กสำหรับนิพจน์ทั่วไปที่สร้าง รองรับ "g" (ส่วนกลาง) และ "i" (ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) ระบบจะละเว้นอักขระอื่นๆ ทั้งหมด |
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
เวอร์ชันรูปภาพขั้นต่ำ
decodeUri
ถอดรหัสอักขระที่เข้ารหัสใน URI ที่ระบุ แสดงผลสตริงที่แสดงถึง URI ที่ถอดรหัสแล้ว แสดงผล undefined
เมื่อให้อินพุตที่ไม่ถูกต้อง
ตัวอย่าง
const decodeUri = require('decodeUri');
const decodedUrl = decodeUri(data.encodedUrl);
if (decodedUrl) {
// ...
}
ไวยากรณ์
decodeUri(encoded_uri);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
encoded_uri |
สตริง |
URI ที่เข้ารหัสโดย encodeUri() หรือด้วยวิธีอื่น
|
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
decodeUriComponent
ถอดรหัสอักขระที่เข้ารหัสในคอมโพเนนต์ URI ที่ระบุ แสดงผลสตริงที่แสดงถึงคอมโพเนนต์ URI ที่ถอดรหัสแล้ว แสดงผล undefined
เมื่อให้อินพุตไม่ถูกต้อง
ตัวอย่าง
const decodeUriComponent = require('decodeUriComponent');
const decodedQuery = decodeUriComponent(data.query);
if (decodedQuery) {
// ...
}
ไวยากรณ์
decodeUriComponent(encoded_uri_component);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
encoded_uri_component |
สตริง |
คอมโพเนนต์ URI ที่เข้ารหัสโดย encodeUriComponent() หรือด้วยวิธีการอื่น
|
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
encodeUri
แสดงผล Uniform Resource Identifier (URI) ที่เข้ารหัสโดยซ่อนสัญลักษณ์พิเศษ แสดงผลสตริงที่แสดงถึงสตริงที่ให้ไว้ซึ่งเข้ารหัสเป็น URI
ตัวอย่าง
const encodeUri = require('encodeUri');
const sendHttpGet = require('sendHttpGet');
sendHttpGet('https://www.example.com/' + encodeUri(pathInput));
ไวยากรณ์
encodeUri(uri);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
uri |
สตริง | URI ที่สมบูรณ์ |
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
encodeUriComponent
แสดงผล Uniform Resource Identifier (URI) ที่เข้ารหัสโดยซ่อนสัญลักษณ์พิเศษ แสดงผลสตริงที่แสดงถึงสตริงที่ให้ไว้ซึ่งเข้ารหัสเป็น URI
ตัวอย่าง
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
sendHttpGet('https://www.example.com/?' + encodeUriComponent(queryInput));
ไวยากรณ์
encodeUriComponent(str);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
str |
สตริง | คอมโพเนนต์ของ URI |
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
extractEventsFromMpv1
แปลคำขอ Measurement Protocol V1 ที่เข้ามาใหม่เป็นรายการเหตุการณ์ในรูปแบบสคีมาแบบรวม แสดงผลรายการเหตุการณ์ที่ดึงมา จะแสดงข้อผิดพลาดหาก คำขอไม่อยู่ในรูปแบบที่ถูกต้อง
ตัวอย่าง
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const isRequestMpv1 = require('isRequestMpv1');
if (isRequestMpv1()) {
const events = extractEventsFromMpv1();
for (let i = 0; i < events.length; ++i) {
const event = events[i];
// Process event.
}
}
ไวยากรณ์
extractEventsFromMpv1();
สิทธิ์ที่เกี่ยวข้อง
ต้องมีสิทธิ์ read_request
ต้องกำหนดค่าสิทธิ์ให้
อนุญาตการเข้าถึงเป็นอย่างน้อย
body
query parameters
extractEventsFromMpv2
แปลคำขอ Measurement Protocol V2 ที่ส่งเข้ามาเป็นรายการเหตุการณ์ในรูปแบบสคีมาแบบรวม แสดงผลรายการเหตุการณ์ที่ดึงมา จะแสดงข้อผิดพลาดหาก คำขอไม่อยู่ในรูปแบบที่ถูกต้อง
ตัวอย่าง
const extractEventsFromMpv2 = require('extractEventsFromMpv2');
const isRequestMpv2 = require('isRequestMpv2');
if (isRequestMpv2()) {
const events = extractEventsFromMpv2();
for (let i = 0; i < events.length; ++i) {
const event = events[i];
// Process event.
}
}
ไวยากรณ์
extractEventsFromMpv2();
สิทธิ์ที่เกี่ยวข้อง
ต้องมีสิทธิ์ read_request
ต้องกำหนดค่าสิทธิ์ให้
อนุญาตการเข้าถึงเป็นอย่างน้อย
body
query parameters
fromBase64
ถอดรหัสสตริงที่เข้ารหัสฐาน 64 แสดงผล undefined
หากอินพุตไม่ถูกต้อง
ไวยากรณ์
fromBase64(base64EncodedString);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
base64EncodedString |
สตริง | สตริงที่เข้ารหัส Base64 |
ตัวอย่าง
const fromBase64 = require('fromBase64');
const greeting = fromBase64('aGVsbG8=');
if (greeting === 'hello') {
// ...
}
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
generateRandom
แสดงผลตัวเลขแบบสุ่ม (จำนวนเต็ม) ภายในช่วงที่ระบุ
ตัวอย่าง
const generateRandom = require('generateRandom');
const randomValue = generateRandom(0, 10000000);
ไวยากรณ์
generateRandom(min, max);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
min |
ตัวเลข | ค่าที่เป็นไปได้ขั้นต่ำของจำนวนเต็มที่แสดงผล (รวม) |
max |
ตัวเลข | ค่าที่เป็นไปได้สูงสุดของจำนวนเต็มที่แสดงผล (รวม) |
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
getAllEventData
แสดงผลสำเนาข้อมูลเหตุการณ์
ไวยากรณ์
getAllEventData();
สิทธิ์ที่เกี่ยวข้อง
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 ไม่ใช่สตริง ระบบจะบังคับให้เป็นสตริง
|
ไวยากรณ์
getEventData(keyPath);
สิทธิ์ที่เกี่ยวข้อง
getGoogleAuth
แสดงผลออบเจ็กต์การให้สิทธิ์ซึ่งเมื่อใช้กับ sendHttpGet
หรือ sendHttpRequest
จะรวมส่วนหัวการให้สิทธิ์สำหรับ Google Cloud APIs API นี้ใช้ข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชันเพื่อค้นหาข้อมูลเข้าสู่ระบบจากสภาพแวดล้อมของเซิร์ฟเวอร์โดยอัตโนมัติ
ตัวอย่าง
const getGoogleAuth = require('getGoogleAuth');
const logToConsole = require('logToConsole');
const sendHttpGet = require('sendHttpGet');
const auth = getGoogleAuth({
scopes: ['https://www.googleapis.com/auth/datastore']
});
sendHttpGet(
'https://firestore.googleapis.com/v1/projects/my-project/databases/(default)/documents/collection/document',
{authorization: auth}
).then((result) => {
if (result.statusCode >= 200 && result.statusCode < 300) {
logToConsole('Result: ' + result.body);
data.gtmOnSuccess();
} else {
data.gtmOnFailure();
}
});
ไวยากรณ์
getGoogleAuth(scopes);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
scopes
|
อาร์เรย์ | อาร์เรย์ของขอบเขต Google API ของ OAuth 2.0 เพื่อขอสิทธิ์เข้าถึง |
สิทธิ์ที่เกี่ยวข้อง
ต้องมีสิทธิ์ use_google_credentials
สิทธิ์ดังกล่าวต้องมีการกำหนดค่าด้วยขอบเขตที่อนุญาตอย่างน้อย 1 ขอบเขต
getGoogleScript
เรียกทรัพยากรจากชุดสคริปต์ Google ที่กำหนดไว้ล่วงหน้าและแสดงผลสัญญาที่มีสคริปต์และข้อมูลเมตาการแคชที่เกี่ยวข้อง
คำสัญญาจะกำหนดเป็นออบเจ็กต์ที่มี 2 คีย์: script
และ metadata
หากคำขอไม่สำเร็จ สัญญาจะปฏิเสธด้วยคีย์ reason
ออบเจ็กต์ metadata
จะมีข้อมูลเมตาการแคชต่อไปนี้ตามส่วนหัวการตอบสนองของทรัพยากร ช่องแต่ละช่องจะมีอยู่ก็ต่อเมื่อส่วนหัวที่เกี่ยวข้องปรากฏในการตอบสนองของทรัพยากร
{
'cache-control': string,
'expires': string,
'last-modified': string,
}
ตัวอย่าง
const getGoogleScript = require('getGoogleScript');
getGoogleScript('ANALYTICS').then((result) => {
// Operate on result.script and result.metadata here.
});
ไวยากรณ์
getGoogleScript(script[, options]);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
script |
สตริง |
ชื่อของสคริปต์ สคริปต์ที่รองรับคือ 'ANALYTICS' , 'GTAG' และ 'GTM' ตัวเลือก 'ANALYTICS' จะดึงสคริปต์ Google Analytics จาก https://www.google-analytics.com/analytics.js ตัวเลือก 'GTAG' จะดึงสคริปต์แท็กที่ติดทั่วเว็บไซต์ (gtag.js) จาก https://www.googletagmanager.com/gtag/js ตัวเลือก 'GTM' จะดึงสคริปต์ Google Tag Manager จาก https://www.googletagmanager.com/gtm.js
|
options |
ออบเจ็กต์ | ตัวเลือกคำขอที่ไม่บังคับ โปรดดูตัวเลือกที่รองรับด้านล่าง |
ตัวเลือก
ตัวเลือก | ประเภท | คำอธิบาย |
---|---|---|
id |
สตริง |
ใช้ได้กับ 'GTAG' ที่มีรหัสการวัด gtag และ 'GTM' ที่มีรหัสคอนเทนเนอร์เว็บ (เช่น GTM-XXXX)
|
debug |
ทั้งหมด | หากเชื่อถือได้ ให้ส่งคำขอและแสดงผลสคริปต์การวัดผลเวอร์ชันแก้ไขข้อบกพร่อง |
timeout |
ตัวเลข |
คำขอจะหมดเวลาเป็นมิลลิวินาที โดยระบบจะไม่สนใจค่าที่ไม่เป็นบวก หากคำขอหมดเวลา ระบบจะเรียกใช้โค้ดเรียกกลับด้วย undefined สำหรับค่าสคริปต์ และ {} สำหรับออบเจ็กต์ข้อมูลเมตา
|
ระบบจะไม่สนใจคีย์ตัวเลือกที่ไม่รู้จัก
สิทธิ์ที่เกี่ยวข้อง
ต้องมีสิทธิ์ send_http
คุณต้องกำหนดค่าสิทธิ์ให้อนุญาต
การเข้าถึงสิ่งต่อไปนี้เป็นอย่างน้อย
- อนุญาต Google Domains
getRemoteAddress
แสดงผลการแสดง string ของที่อยู่ IP ที่เป็นที่มาของคำขอ เช่น 12.345.67.890
สำหรับ IPv4 หรือ 2001:0db8:85a3:0:0:8a2e:0370:7334
สำหรับ IPv6 โดยอ่านส่วนหัวของคำขอ เช่น Forwarded และ X-Forwarded-For
หมายเหตุ: API นี้จะพยายามอย่างสุดความสามารถเพื่อค้นหา IP ต้นทาง แต่ไม่สามารถรับประกันได้ว่าผลลัพธ์จะถูกต้อง
ไวยากรณ์
getRemoteAddress();
สิทธิ์ที่เกี่ยวข้อง
ต้องมีสิทธิ์ read_request
ต้องกำหนดค่าสิทธิ์ให้
อนุญาตการเข้าถึงเป็นอย่างน้อย
- ส่วนหัว
Forwarded
และX-Forwarded-For
- ที่อยู่ IP ระยะไกล
getRequestBody
แสดงผลเนื้อหาของคำขอเป็นสตริง (หากมี) หรือ undefined
ในกรณีอื่นๆ
ไวยากรณ์
getRequestBody();
สิทธิ์ที่เกี่ยวข้อง
getRequestHeader
แสดงผลค่าของส่วนหัวของคำขอที่มีชื่อเป็นสตริง (หากมี) หรือแสดง 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
แสดงผลค่าที่ถอดรหัสของพารามิเตอร์สตริงคำค้นหาที่มีชื่อเป็นสตริงหรือ 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' |
ไม่ระบุ | '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
จาก Logging Explorer ให้เรียกใช้การค้นหา logName =~ "stdout"
เพื่อดูรายการบันทึกที่ API นี้สร้างขึ้น
ตัวอย่าง
const logToConsole = require('logToConsole');
const that = 123;
const those = { ... };
logToConsole('that is: ', that, ' and those is: ', those);
ไวยากรณ์
logToConsole(argument1[, argument2, ...]);
พารามิเตอร์
API จะใช้อาร์กิวเมนต์อย่างน้อย 1 รายการ ซึ่งแต่ละรายการจะแปลงเป็นสตริง (หากจำเป็น) และบันทึกลงคอนโซล
สิทธิ์ที่เกี่ยวข้อง
makeInteger
แปลงค่าที่ระบุเป็นตัวเลข (จำนวนเต็ม)
ไวยากรณ์
makeInteger(value);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
value |
ทุกประเภท | ค่าที่จะแปลง |
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
makeNumber
แปลงค่าที่ระบุเป็น number
ไวยากรณ์
makeNumber(value);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
value |
ทุกประเภท | ค่าที่จะแปลง |
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
makeString
แสดงผลค่าที่ระบุเป็นสตริง
ไวยากรณ์
makeString(value);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
value |
ทุกประเภท | ค่าที่จะแปลง |
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
makeTableMap
แปลงออบเจ็กต์ตารางอย่างง่ายที่มี 2 คอลัมน์เป็น Map
กระบวนการนี้ใช้เพื่อเปลี่ยนช่องเทมเพลต SIMPLE_TABLE
ที่มี 2 คอลัมน์ให้เป็นรูปแบบที่จัดการได้มากขึ้น
เช่น ฟังก์ชันนี้อาจแปลงออบเจ็กต์ตาราง
[
{'key': 'k1', 'value': 'v1'},
{'key': 'k2', 'value': 'v2'}
]
ลงในแผนที่:
{
'k1': 'v1',
'k2': 'v2'
}
แสดงผลออบเจ็กต์: เพิ่ม Map
ของคู่คีย์-ค่าที่แปลงแล้วลงในออบเจ็กต์ หรือ null
ไวยากรณ์
makeTableMap(tableObj, keyColumnName, valueColumnName);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
tableObj |
List |
ออบเจ็กต์ตารางที่จะแปลง ซึ่งเป็นรายการแผนที่ที่ Map แต่ละรายการแสดงถึงแถวในตาราง ชื่อพร็อพเพอร์ตี้แต่ละรายการในออบเจ็กต์แถวคือชื่อคอลัมน์ และค่าพร็อพเพอร์ตี้จะเป็นค่าของคอลัมน์ในแถว
|
keyColumnName |
สตริง |
ชื่อของคอลัมน์ที่ค่าจะกลายเป็นคีย์ใน Map ที่แปลงแล้ว
|
valueColumnName |
สตริง |
ชื่อของคอลัมน์ที่ค่าจะกลายเป็นค่าใน Map ที่แปลงแล้ว
|
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
parseUrl
แสดงผลออบเจ็กต์ที่มีส่วนประกอบทั้งหมดของ URL ที่ระบุ ซึ่งคล้ายกับออบเจ็กต์ URL
API นี้จะแสดง undefined
สำหรับ URL ที่มีรูปแบบไม่ถูกต้อง สำหรับ URL ที่จัดรูปแบบอย่างถูกต้อง ช่องที่ไม่ได้อยู่ในสตริง URL จะมีค่าเป็นสตริงว่างเปล่า หรือออบเจ็กต์ว่างเปล่าในกรณีของ searchParams
ออบเจ็กต์ที่แสดงผลจะมีช่องต่อไปนี้
{
href: string,
origin: string,
protocol: string,
username: string,
password: string,
host: string,
hostname: string,
port: string,
pathname: string,
search: string,
searchParams: Object<string, (string|Array)>,
hash: string,
}
ตัวอย่าง
const parseUrl = require('parseUrl');
const urlObject = parseUrl('https://abc:xyz@example.com:8080/foo?param=val%2Cue#bar');
ไวยากรณ์
parseUrl(url);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
url |
สตริง | URL แบบเต็มที่จะถูกแยกวิเคราะห์ |
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
returnResponse
ล้างคำตอบที่เทมเพลตอื่นๆ เคยกำหนดไว้โดยใช้ API ที่แก้ไขการตอบกลับ ซึ่งรวมถึง setCookie, setPixelResponse, setResponseBody, setResponseHeader และ setResponseStatus ค่าเริ่มต้นจะเป็นรหัสสถานะ HTTP 200 เนื้อหาว่างเปล่า และไม่มีส่วนหัว
ขอแนะนำให้ใช้ API นี้จากเทมเพลตไคลเอ็นต์
ไวยากรณ์
returnResponse();
ตัวอย่าง
สิทธิ์ที่เกี่ยวข้อง
runContainer
เรียกใช้ตรรกะคอนเทนเนอร์ (ตัวแปร ทริกเกอร์ แท็ก) ในขอบเขตของเหตุการณ์ หากมีการเรียก API นี้ระหว่างการดำเนินการของคอนเทนเนอร์ คอนเทนเนอร์จะทำงานอีกครั้ง
โค้ดเรียกกลับ onComplete
และ onStart
จะได้รับฟังก์ชันที่เรียกว่า bindToEvent
ใช้ bindToEvent
เพื่อเรียกใช้ API ในบริบทของเหตุการณ์
ดูรายละเอียดเพิ่มเติมในตัวอย่าง addEventCallback
ขอแนะนำให้ใช้ API นี้จากเทมเพลตไคลเอ็นต์
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
// Runs the container with a simple pageview event and then returns a response.
runContainer({'event_name': 'pageview'}, () => returnResponse());
ไวยากรณ์
runContainer(event, onComplete, onStart);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
event |
ออบเจ็กต์ | พารามิเตอร์เหตุการณ์ |
onComplete |
ของ Google | มีการเรียกใช้หลังจากแท็กทั้งหมดเริ่มทํางานเสร็จสิ้น |
onStart |
ของ Google | มีการเรียกกลับทันที ก่อนที่แท็กจะเริ่มเริ่มทำงาน |
สิทธิ์ที่เกี่ยวข้อง
sendEventToGoogleAnalytics
ส่งเหตุการณ์เดียวโดยใช้ข้อมูลเหตุการณ์ทั่วไปไปยัง Google Analytics และแสดงผลสัญญาที่แปลค่าเป็นออบเจ็กต์ที่มีคีย์ location
หรือปฏิเสธออบเจ็กต์ที่มีคีย์ reason
ปลายทางหรือ Universal Analytics หรือ Google Analytics 4 จะอิงตามรหัสการวัดในข้อมูลเหตุการณ์
ช่อง location
ตั้งค่าไว้เป็นส่วนหัว location
หากมี
ตัวอย่าง
const sendEventToGoogleAnalytics = require('sendEventToGoogleAnalytics');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');
// Sends an event to Google Analytics and returns failure if the request did not
// succeed. Additionally, if the request resulted in a redirect request, the
// code nominates a redirect response to be returned.
sendEventToGoogleAnalytics(event).then((response) => {
if (response.location) {
setResponseHeader('location', response.location);
setResponseStatus(302);
} else {
setResponseStatus(200);
}
data.gtmOnSuccess();
}, (err) => {
setResponseStatus(500);
data.gtmOnFailure();
});
ไวยากรณ์
sendEventToGoogleAnalytics(event);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
event |
ออบเจ็กต์ | เหตุการณ์ในรูปแบบสคีมาแบบรวม |
สิทธิ์ที่เกี่ยวข้อง
ต้องมีสิทธิ์ send_http
คุณต้องกำหนดค่าสิทธิ์ให้อนุญาต
การเข้าถึงสิ่งต่อไปนี้เป็นอย่างน้อย
- อนุญาต Google Domains
sendHttpGet
สร้างคำขอ HTTP GET ไปยัง URL ที่ระบุและส่งคืนสัญญาที่จะแก้ไขด้วยผลลัพธ์เมื่อคำขอเสร็จสมบูรณ์หรือหมดเวลา
ผลลัพธ์ที่แก้ไขแล้วคือออบเจ็กต์ที่มีคีย์ 3 คีย์ ได้แก่ statusCode
, headers
และ body
หากคำขอล้มเหลว (เช่น URL ไม่ถูกต้อง ไม่มีเส้นทางไปยังโฮสต์ การเจรจา SSL ล้มเหลว ฯลฯ) สัญญาจะปฏิเสธด้วย: {reason:
'failed'}
หากตั้งค่าตัวเลือก timeout
ไว้และคำขอหมดเวลา สัญญาจะปฏิเสธด้วย {reason: 'timed_out'}
ตัวอย่าง
const sendHttpGet = require('sendHttpGet');
// Returns the response body as the value for a variable.
return sendHttpGet('https://example.com/item/' + data.itemId, {
headers: {key: 'value'},
timeout: 500,
}).then((result) => result.body, () => undefined);
ไวยากรณ์
sendHttpGet(url[, options]);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
url |
สตริง | URL ที่ขอ |
options
|
ออบเจ็กต์ | ตัวเลือกคำขอไม่บังคับ (ดูตัวเลือกด้านล่าง) |
ตัวเลือก
ตัวเลือก | ประเภท | คำอธิบาย |
---|---|---|
headers |
สตริง | ส่วนหัวของคำขอเพิ่มเติม |
timeout
|
ตัวเลข | การหมดเวลาเป็นมิลลิวินาทีก่อนที่คำขอจะล้มเลิก ค่าเริ่มต้นคือ 15000 |
authorization
|
ออบเจ็กต์ | ไม่บังคับจากการเรียกไปยัง getGoogleAuth เพื่อใส่ส่วนหัวการให้สิทธิ์เมื่อส่งคำขอไปยัง googleapis.com |
สิทธิ์ที่เกี่ยวข้อง
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 ตุลาคม 1985 08:21:00 GMT" หากตั้งค่าทั้ง
expires
และmax-age
ไว้max-age
จะมีลำดับความสำคัญเหนือกว่าhttpOnly: ห้ามไม่ให้ JavaScript เข้าถึงคุกกี้ถ้า
true
max-age: จำนวนวินาทีที่คุกกี้จะหมดอายุ เลขศูนย์หรือจำนวนลบ จะหมดอายุคุกกี้ทันที หากตั้งค่าทั้ง
expires
และmax-age
ไว้max-age
จะมีลำดับความสำคัญเหนือกว่าpath: เส้นทางที่ต้องอยู่ใน URL ที่ขอ มิฉะนั้นเบราว์เซอร์จะไม่ส่งส่วนหัวของคุกกี้
secure: หากตั้งค่าเป็น
true
ระบบจะส่งคุกกี้ไปยังเซิร์ฟเวอร์เมื่อมีการส่งคำขอจากปลายทางhttps:
เท่านั้นsameSite: ยืนยันว่าต้องไม่ส่งคุกกี้ไปพร้อมกับคำขอแบบข้ามต้นทาง ต้องเป็น
'strict'
,'lax'
หรือ'none'
สิทธิ์ที่เกี่ยวข้อง
setPixelResponse
ตั้งค่าเนื้อหาการตอบกลับเป็น GIF ขนาด 1x1, ตั้งค่าส่วนหัว Content-Type เป็น "image/gif", ตั้งค่าส่วนหัวการแคชที่ User Agent จะไม่แคชการตอบกลับ และตั้งค่าสถานะการตอบกลับเป็น 200
โปรดทราบว่าต้องมีการเรียก returnResponse เพื่อให้ส่งคำตอบกลับไปยังไคลเอ็นต์
ไวยากรณ์
setPixelResponse();
สิทธิ์ที่เกี่ยวข้อง
ต้องมีสิทธิ์ access_response
ต้องกำหนดค่าสิทธิ์ให้
อนุญาตการเข้าถึงเป็นอย่างน้อย
headers
- ต้องอนุญาตคีย์ต่อไปนี้content-type
cache-control
expires
pragma
body
status
setResponseBody
ตั้งค่าเนื้อหาการตอบกลับเป็นอาร์กิวเมนต์
โปรดทราบว่าต้องมีการเรียก returnResponse เพื่อให้ส่งคำตอบกลับไปยังไคลเอ็นต์
ไวยากรณ์
setResponseBody(body[, encoding]);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
body |
สตริง | ค่าที่จะตั้งเป็นเนื้อหาการตอบสนอง |
encoding |
สตริง |
การเข้ารหัสอักขระของเนื้อหาการตอบกลับ (ค่าเริ่มต้นคือ 'utf8' ) ค่าที่รองรับ ได้แก่ 'ascii' , 'utf8' , 'utf16le' , 'ucs2' , 'base64' , 'latin1' , 'binary' และ 'hex'
|
สิทธิ์ที่เกี่ยวข้อง
ต้องมีสิทธิ์ access_response
ต้องกำหนดค่าสิทธิ์ให้
อนุญาตการเข้าถึงเป็นอย่างน้อย
body
setResponseHeader
ตั้งค่าส่วนหัวในการตอบกลับที่จะส่งคืน หาก API นี้ตั้งค่าส่วนหัวที่มีชื่อนี้ (ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) ไว้ก่อนหน้านี้ การเรียกหลังจะเขียนทับหรือล้างค่าที่ผู้เรียกใช้ก่อนหน้ากำหนดไว้
โปรดทราบว่าต้องมีการเรียก returnResponse เพื่อให้ส่งคำตอบกลับไปยังไคลเอ็นต์
ไวยากรณ์
setResponseHeader(name, value);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
name |
สตริง | ชื่อส่วนหัว ชื่อส่วนหัว HTTP ไม่คำนึงถึงตัวพิมพ์เล็กหรือใหญ่ ดังนั้นชื่อส่วนหัวจะเป็นตัวพิมพ์เล็ก |
value |
string ไม่ระบุ | ค่าของส่วนหัว หากเป็น Null หรือไม่ได้กำหนด การดำเนินการนี้จะล้างส่วนหัวที่มีชื่อออกจากการตอบกลับที่จะแสดง |
สิทธิ์ที่เกี่ยวข้อง
ต้องมีสิทธิ์ access_response
ต้องกำหนดค่าสิทธิ์ให้
อนุญาตการเข้าถึงเป็นอย่างน้อย
headers
setResponseStatus
ตั้งรหัสสถานะ HTTP ของการตอบกลับที่จะแสดง
โปรดทราบว่าต้องมีการเรียก returnResponse เพื่อให้ส่งคำตอบกลับไปยังไคลเอ็นต์
ไวยากรณ์
setResponseStatus(statusCode);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
statusCode |
ตัวเลข | รหัสสถานะ HTTP ที่จะแสดง |
สิทธิ์ที่เกี่ยวข้อง
ต้องมีสิทธิ์ access_response
ต้องกำหนดค่าสิทธิ์ให้
อนุญาตการเข้าถึงเป็นอย่างน้อย
status
sha256
จะคำนวณไดเจสต์ SHA-256 ของอินพุตและเรียกใช้โค้ดเรียกกลับที่มีไดเจสต์ที่เข้ารหัสใน base64 เว้นแต่ออบเจ็กต์ options
จะระบุการเข้ารหัสเอาต์พุตอื่น
ลายเซ็นและลักษณะการทํางานของ API นี้ตรงกับ API ของ sha256
สําหรับคอนเทนเนอร์เว็บ อย่างไรก็ตาม เทมเพลตที่กําหนดเองในคอนเทนเนอร์เซิร์ฟเวอร์ควรใช้ API sha256Sync
เพื่อให้โค้ดง่ายขึ้น
ตัวอย่าง
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
const sha256 = require('sha256');
sha256('inputString', (digest) => {
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digest));
});
sha256('inputString', (digest) => {
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digest));
}, {outputEncoding: 'hex'});
ไวยากรณ์
sha256(input, onSuccess, options = undefined);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
input |
สตริง | สตริงที่จะแฮช |
onSuccess |
ของ Google |
เรียกใช้ด้วยไดเจสต์ผลลัพธ์ที่เข้ารหัสใน base64 เว้นแต่ออบเจ็กต์ options จะระบุการเข้ารหัสเอาต์พุตอื่น
|
options |
ออบเจ็กต์ |
ออบเจ็กต์ตัวเลือกไม่บังคับสำหรับระบุการเข้ารหัสเอาต์พุต หากระบุไว้ ออบเจ็กต์ควรมีคีย์ outputEncoding ซึ่งมีค่าเป็น base64 หรือ hex
|
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
sha256Sync
คำนวณและแสดงผลไดเจสต์ SHA-256 ของอินพุตที่เข้ารหัสใน base64 เว้นแต่ออบเจ็กต์ options
จะระบุการเข้ารหัสเอาต์พุตอื่น
ตัวอย่าง
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
const sha256Sync = require('sha256Sync');
const digestBase64 = sha256Sync('inputString');
const digestHex = sha256Sync('inputString', {outputEncoding: 'hex'});
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digestBase64));
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digestHex));
ไวยากรณ์
sha256Sync(input, options = undefined);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
input |
สตริง | สตริงที่จะแฮช |
options |
ออบเจ็กต์ |
ออบเจ็กต์ตัวเลือกไม่บังคับสำหรับระบุการเข้ารหัสเอาต์พุต หากระบุไว้ ออบเจ็กต์ควรมีคีย์ outputEncoding ซึ่งมีค่าเป็น base64 หรือ hex
|
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
templateDataStorage
แสดงผลออบเจ็กต์ที่มีเมธอดในการเข้าถึงพื้นที่เก็บข้อมูลของเทมเพลต พื้นที่เก็บข้อมูลเทมเพลตช่วยให้แชร์ข้อมูลระหว่างการดำเนินการต่างๆ ของเทมเพลตเดียวได้ ข้อมูลที่จัดเก็บไว้ในพื้นที่เก็บข้อมูลเทมเพลตจะยังคงอยู่ในเซิร์ฟเวอร์ที่เรียกใช้คอนเทนเนอร์ ในกรณีส่วนใหญ่ จะมีเซิร์ฟเวอร์หลายเครื่องที่เรียกใช้คอนเทนเนอร์ ดังนั้นการจัดเก็บข้อมูลในพื้นที่เก็บข้อมูลของเทมเพลตจึงไม่ได้รับประกันว่าคำขอหลังจากนั้นทุกรายการจะมีสิทธิ์เข้าถึงข้อมูล
"data" ในชื่อ "templateDataStorage" หมายถึงข้อเท็จจริงที่ว่าเฉพาะข้อมูลประเภทธรรมดาที่ไม่ใช่ฟังก์ชันเท่านั้นที่สามารถจัดเก็บโดยใช้ API นี้ได้ ระบบจะเก็บฟังก์ชันหรือการอ้างอิงไปยังฟังก์ชันที่ส่งไปยัง API เป็น null
แทน
ไวยากรณ์
const templateDataStorage = require('templateDataStorage');
// Returns a copy of the value stored for the given key, or null if nothing
// is stored with that key.
templateDataStorage.getItemCopy(key);
// Stores a copy of the value for the given key (or removes the data stored
// for the given key if the input value is null).
templateDataStorage.setItemCopy(key, value);
// Removes the value stored for the given key, if present.
templateDataStorage.removeItem(key);
// Deletes all values stored for the current template.
templateDataStorage.clear();
ตัวอย่าง
const sendHttpGet = require('sendHttpGet');
const setResponseBody = require('setResponseBody');
const setResponseStatus = require('setResponseStatus');
const templateDataStorage = require('templateDataStorage');
// Check to see if the item is in the cache.
const cachedBody = templateDataStorage.getItemCopy(data.key);
if (cachedBody) {
setResponseBody(cachedBody);
data.gtmOnSuccess();
return;
}
sendHttpGet(data.url).then((result) => {
if (result.statusCode >= 200 && result.statusCode < 300) {
setResponseBody(result.body);
templateDataStorage.setItemCopy(data.key, result.body);
data.gtmOnSuccess();
} else {
data.gtmOnFailure();
}
setResponseStatus(result.statusCode);
});
สิทธิ์ที่เกี่ยวข้อง
testRegex
ทดสอบสตริงกับนิพจน์ทั่วไปที่สร้างผ่าน API ของ createRegex
แสดงผล true
หากนิพจน์ทั่วไปตรงกัน แสดงผล false
หากไม่เป็นเช่นนั้น
นิพจน์ทั่วไปที่สร้างด้วยแฟล็กส่วนกลางจะเป็นแบบเก็บสถานะ โปรดดูรายละเอียดในเอกสารประกอบ RegExp
ตัวอย่าง
const createRegex = require('createRegex');
const testRegex = require('testRegex');
const domainRegex = createRegex('\\w+\\.com', 'i');
// createRegex returns null if the regex is invalid or Re2 is not available.
if (domainRegex === null) return;
// Returns true
testRegex(domainRegex, 'example.com/foobar');
ไวยากรณ์
testRegex(regex, string);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
regex |
ออบเจ็กต์ | นิพจน์ทั่วไปที่จะทดสอบ แสดงผลจาก createRegex API |
string |
สตริง | ทดสอบสตริงเพื่อทดสอบ |
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
toBase64
เข้ารหัสสตริงเป็น base64 หรือ base64url ค่าเริ่มต้นคือการเข้ารหัส base64
ไวยากรณ์
toBase64(input, options);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
input |
สตริง | สตริงที่จะเข้ารหัส |
options
|
ออบเจ็กต์ | การกำหนดค่า API ไม่บังคับ (ดูตัวเลือกด้านล่าง) |
ตัวเลือก
ตัวเลือก | ประเภท | คำอธิบาย | เวอร์ชันขั้นต่ำ |
---|---|---|---|
urlEncoding
|
boolean | หาก "จริง" ผลลัพธ์จะเข้ารหัสโดยใช้รูปแบบ base64url |
1.0.0 |
ตัวอย่าง
const toBase64 = require('toBase64');
const base64Hello = toBase64('hello');
const base64UrlHello = toBase64('hello', {urlEncoding: true});
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
BigQuery
แสดงผลออบเจ็กต์ที่มีฟังก์ชัน BigQuery
ฟังก์ชัน BigQuery.insert
ช่วยให้เขียนข้อมูลลงในตาราง BigQuery ได้ โดยจะส่งคืนคำสัญญาที่ได้รับการแก้ไขเมื่อการแทรกหรือการปฏิเสธสำเร็จเมื่อเกิดข้อผิดพลาด
เมื่อการแทรกสําเร็จ คำสัญญาจะจบลงโดยไม่มีอาร์กิวเมนต์
เมื่อการแทรกล้มเหลว คำสัญญาจะปฏิเสธด้วยรายการออบเจ็กต์ที่มีเหตุผลของข้อผิดพลาด และอาจเป็นออบเจ็กต์แถวหากเกิดข้อผิดพลาด คำขอบางส่วนอาจดำเนินการสำเร็จ ในขณะที่ส่วนอื่นๆ ไม่สามารถทำได้ ในกรณีนี้ คำสัญญาจะถูกปฏิเสธ พร้อมด้วยรายการข้อผิดพลาดสำหรับแต่ละแถวที่มีออบเจ็กต์แถวเพื่อช่วยแยกแยะแถวที่แทรก (ดูตัวอย่างข้อผิดพลาดด้านล่าง) ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของ BigQuery เกี่ยวกับข้อความแสดงข้อผิดพลาด
ไวยากรณ์
BigQuery.insert(connectionInfo, rows[, options]);
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
connectionInfo |
ออบเจ็กต์ |
กำหนดข้อมูลที่จำเป็นเพื่อเชื่อมต่อกับตาราง BigQuery มีพารามิเตอร์ที่ไม่บังคับ 1 รายการและพารามิเตอร์ที่จําเป็น 2 รายการ ได้แก่
|
rows |
อาร์เรย์ | แถวที่จะแทรกในตาราง |
options |
ออบเจ็กต์ | ตัวเลือกคำขอที่ไม่บังคับ ตัวเลือกที่รองรับ ได้แก่ ignoreUnknownValues และ skip invalidRows ระบบจะไม่สนใจคีย์ตัวเลือกที่ไม่รู้จัก (ดูตัวเลือกด้านล่าง) |
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
ignoreUnknownValues |
boolean | หากตั้งค่าเป็น true ให้ยอมรับแถวที่มีค่าซึ่งไม่ตรงกับสคีมา ระบบจะไม่สนใจค่าที่ไม่รู้จัก ค่าเริ่มต้นคือ false |
skipInvalidRows |
boolean | หากตั้งค่าเป็น true ให้แทรกแถวที่ถูกต้องทั้งหมดของคำขอ แม้ว่าจะมีแถวที่ไม่ถูกต้องอยู่ก็ตาม ค่าเริ่มต้นคือ false |
ข้อผิดพลาด "ไม่พบโมดูล" หมายความว่าคอนเทนเนอร์เซิร์ฟเวอร์อาจเรียกใช้รูปภาพเวอร์ชันเก่าที่ยังไม่ได้รวมโมดูล BigQuery ไว้ โปรดทำให้คอนเทนเนอร์เซิร์ฟเวอร์ใช้งานได้อีกครั้งด้วยการตั้งค่าเดิมโดยใช้สคริปต์การติดตั้งใช้งานของเรา โมดูลนี้จะถูกรวมไว้โดยอัตโนมัติเมื่อการดำเนินการเสร็จสิ้น
โดยทั่วไป ข้อผิดพลาดที่ไม่ใช่การแทรกจะมีออบเจ็กต์ข้อผิดพลาด 1 รายการซึ่งมีคีย์ reason
ดังนี้
[{reason: 'invalid'}]
ข้อผิดพลาดในการแทรกอาจมีออบเจ็กต์ข้อผิดพลาดหลายรายการที่มีอาร์เรย์ errors
และออบเจ็กต์ row
ต่อไปนี้คือตัวอย่างการตอบสนองข้อผิดพลาดจากการแทรก 2 แถวที่มีข้อผิดพลาดเพียงแถวเดียว
[
{
"errors": [
{
"reason":"invalid"
}
],
"row": {
"string_col":"otherString",
"number_col":-3,
"bool_col":3
}
},
{
"errors": [
{
"reason":"stopped"
}
],
"row": {
"string_col":"stringValue",
"number_col":5,
"bool_col:false
}
}
]
ตัวอย่าง
const BigQuery = require('BigQuery');
const connectionInfo = {
'projectId': 'gcp-cloud-project-id',
'datasetId': 'destination-dataset',
'tableId': 'destination-table',
};
const rows = [{
'column1': 'String1',
'column2': 1234,
}];
const options = {
'ignoreUnknownValues': true,
'skipInvalidRows': false,
};
BigQuery.insert(connectionInfo, rows, options)
.then(data.gtmOnSuccess, data.gtmOnFailure);
สิทธิ์ที่เกี่ยวข้อง
Firestore
แสดงผลออบเจ็กต์ที่มีฟังก์ชัน Firestore
API นี้รองรับเฉพาะ Firestore ในโหมดเนทีฟ ไม่ใช่ Firestore ในโหมด Datastore
Firestore.read
ฟังก์ชัน Firestore.read
จะอ่านข้อมูลจากเอกสาร Firestore และแสดงผลสัญญาที่แปลงไปยังออบเจ็กต์ที่มี 2 คีย์ ได้แก่ id
และ data
หากไม่มีเอกสารอยู่ คำสัญญาจะปฏิเสธด้วยออบเจ็กต์ที่มีคีย์ reason
เท่ากับ not_found
ไวยากรณ์
Firestore.read(path[, options]);
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
path |
สตริง | เส้นทางไปยังเอกสารหรือคอลเล็กชัน ต้องไม่ขึ้นต้นหรือลงท้ายด้วย "/" |
options |
ออบเจ็กต์ | ตัวเลือกคำขอไม่บังคับ ตัวเลือกที่รองรับ ได้แก่ projectId, disableCache และ transaction ระบบจะละเว้นคีย์ตัวเลือกที่ไม่รู้จัก (ดูตัวเลือกด้านล่าง) |
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
projectId |
สตริง | Optional รหัสโปรเจ็กต์ Google Cloud Platform หากไม่ระบุ ระบบจะดึง projectId จากตัวแปรสภาพแวดล้อม GOOGLE_CLOUD_PROJECT ตราบใดที่การตั้งค่าสิทธิ์ access_firestore สำหรับรหัสโปรเจ็กต์เป็น * หรือ GOOGLE_CLOUD_PROJECT หากคอนเทนเนอร์เซิร์ฟเวอร์กำลังทำงานอยู่บน Google Cloud ระบบจะตั้งค่า GOOGLE_CLOUD_PROJECT เป็นรหัสของโปรเจ็กต์ Google Cloud อยู่แล้ว |
disableCache |
boolean | Optional กำหนดว่าจะปิดใช้งานแคชหรือไม่ การแคชจะเปิดใช้โดยค่าเริ่มต้น ซึ่งจะแคชผลลัพธ์ตามระยะเวลาของคำขอ |
transaction |
สตริง | Optional ค่าที่ดึงมาจาก Firestore.runTransaction() ทำเครื่องหมายการดำเนินการที่จะใช้ภายในธุรกรรม |
ตัวอย่าง
const Firestore = require('Firestore');
return Firestore.read('collection/document', {
projectId: 'gcp-cloud-project-id',
}).then((result) => result.data.key, () => undefined);
Firestore.write
ฟังก์ชัน Firestore.write
จะเขียนข้อมูลไปยังเอกสารหรือคอลเล็กชัน Firestore หากเป็นเส้นทางไปยังคอลเล็กชัน ระบบจะสร้างเอกสารด้วยรหัสที่สร้างขึ้นแบบสุ่ม หากเส้นทางไปยังเอกสารไม่มีอยู่ ระบบจะสร้างเส้นทางนั้นขึ้นมา โดย API นี้จะคืนค่าสัญญาที่แปลงไปเป็นรหัสของเอกสารที่มีการเพิ่มหรือแก้ไข หากใช้ตัวเลือกธุรกรรม API จะยังคงแสดงคำสัญญา แต่จะไม่มีรหัสเนื่องจากการเขียนเป็นกลุ่มๆ
ไวยากรณ์
Firestore.write(path, input[, options]);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
path |
สตริง | เส้นทางไปยังเอกสารหรือคอลเล็กชัน ต้องไม่ขึ้นต้นหรือลงท้ายด้วย "/" |
input |
ออบเจ็กต์ | ค่าที่จะเขียนลงในเอกสาร หากตั้งค่าตัวเลือกการรวมไว้ API จะรวมคีย์จากอินพุตลงในเอกสาร |
options |
ออบเจ็กต์ | ตัวเลือกคำขอไม่บังคับ ตัวเลือกที่รองรับ ได้แก่ projectId, merge และ transaction ระบบจะไม่สนใจคีย์ตัวเลือกที่ไม่รู้จัก (ดูตัวเลือกด้านล่าง) |
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
projectId |
สตริง | Optional รหัสโปรเจ็กต์ Google Cloud Platform หากไม่ระบุ ระบบจะดึง projectId จากตัวแปรสภาพแวดล้อม GOOGLE_CLOUD_PROJECT ตราบใดที่การตั้งค่าสิทธิ์ access_firestore สำหรับรหัสโปรเจ็กต์เป็น * หรือ GOOGLE_CLOUD_PROJECT หากคอนเทนเนอร์เซิร์ฟเวอร์กำลังทำงานอยู่บน Google Cloud ระบบจะตั้งค่า GOOGLE_CLOUD_PROJECT เป็นรหัสของโปรเจ็กต์ Google Cloud อยู่แล้ว |
merge |
boolean | Optional หากตั้งค่าเป็น true ให้ผสานคีย์จากอินพุตเข้ากับเอกสาร มิเช่นนั้น เมธอดจะลบล้างทั้งเอกสาร ค่าเริ่มต้นคือ false |
transaction |
สตริง | Optional ค่าที่ดึงมาจาก Firestore.runTransaction() ทำเครื่องหมายการดำเนินการที่จะใช้ภายในธุรกรรม |
ตัวอย่าง
const Firestore = require('Firestore');
const input = {key1: 'value1', key2: 12345};
Firestore.write('collection/document', input, {
projectId: 'gcp-cloud-project-id',
merge: true,
}).then((id) => {
data.gtmOnSuccess();
}, data.gtmOnFailure);
Firestore.query
ฟังก์ชัน Firestore.query
จะค้นหาคอลเล็กชันที่ระบุและแสดงผลสัญญาที่แก้ไขเป็นอาร์เรย์ของเอกสาร Firestore ที่ตรงกับเงื่อนไขการค้นหา ออบเจ็กต์เอกสารของ Firestore เหมือนกับที่ระบุไว้ข้างต้นใน Firestore.read
หากไม่มีเอกสารที่ตรงกับเงื่อนไขการค้นหา คำสัญญาที่แสดงจะแสดงค่าเป็นอาร์เรย์เปล่า
ไวยากรณ์
Firestore.query(collection, queryConditions[, options]);
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
collection |
สตริง | เส้นทางไปยังคอลเล็กชัน ต้องไม่ขึ้นต้นหรือลงท้ายด้วย "/" |
queryConditions |
อาร์เรย์ | อาร์เรย์ของเงื่อนไขการค้นหา การค้นหาแต่ละรายการจะอยู่ในรูปของอาร์เรย์ที่มีค่า 3 ค่า ได้แก่ key, operator และ expectedValue E.g.:
[[‘id’, ‘<’, ‘5’], [‘state’, ‘==’, ‘CA’]] เงื่อนไขต่างๆ จะใช้ AND ร่วมกันเพื่อสร้างผลการค้นหา โปรดดู โอเปอเรเตอร์การค้นหาของ Firestore เพื่อดูรายการโอเปอเรเตอร์การค้นหาที่เข้ากันได้ |
options |
ออบเจ็กต์ | ตัวเลือกคำขอไม่บังคับ ตัวเลือกที่รองรับ ได้แก่ projectId, disableCache, limit และ transaction ระบบจะละเว้นคีย์ตัวเลือกที่ไม่รู้จัก (ดูตัวเลือกด้านล่าง) |
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
projectId |
สตริง | Optional รหัสโปรเจ็กต์ Google Cloud Platform หากไม่ระบุ ระบบจะดึง projectId จากตัวแปรสภาพแวดล้อม GOOGLE_CLOUD_PROJECT ตราบใดที่การตั้งค่าสิทธิ์ access_firestore สำหรับรหัสโปรเจ็กต์เป็น * หรือ GOOGLE_CLOUD_PROJECT หากคอนเทนเนอร์เซิร์ฟเวอร์กำลังทำงานอยู่บน Google Cloud ระบบจะตั้งค่า GOOGLE_CLOUD_PROJECT เป็นรหัสของโปรเจ็กต์ Google Cloud อยู่แล้ว |
disableCache |
boolean | Optional กำหนดว่าจะปิดใช้งานแคชหรือไม่ การแคชจะเปิดใช้โดยค่าเริ่มต้น ซึ่งจะแคชผลลัพธ์ตามระยะเวลาของคำขอ |
limit |
ตัวเลข | Optional เปลี่ยนจำนวนสูงสุดของผลลัพธ์ที่แสดงจากคำค้นหา โดยค่าเริ่มต้นเป็น 5 |
transaction |
สตริง | Optional ค่าที่ดึงมาจาก Firestore.runTransaction() ทำเครื่องหมายการดำเนินการที่จะใช้ภายในธุรกรรม |
ตัวอย่าง
const Firestore = require('Firestore');
const queries = const queries = [['id', '==', '5']];
return Firestore.query('collection', queries, {
projectId: 'gcp-cloud-project-id',
limit: 1,
}).then((documents) => documents[0].data.key, () => undefined);
Firestore.runTransaction
ฟังก์ชัน Firestore.runTransaction
ช่วยให้ผู้ใช้อ่านและเขียนจาก Firestore ได้โดยอัตโนมัติ หากเกิดข้อขัดแย้งในการเขียนพร้อมกันหรือธุรกรรมอื่น ระบบจะลองทำธุรกรรมอีกครั้งสูงสุด 2 ครั้ง หากดำเนินการไม่สำเร็จหลังจากพยายามครบ 3 ครั้ง API จะปฏิเสธโดยมีข้อผิดพลาด โดย API นี้จะส่งคืนสัญญาที่แปลงไปเป็นอาร์เรย์ของรหัสเอกสารสำหรับการดำเนินการเขียนแต่ละครั้ง หากธุรกรรมดำเนินการสำเร็จ และจะปฏิเสธโดยมีข้อผิดพลาดหากดำเนินการไม่สำเร็จ
ไวยากรณ์
Firestore.runTransaction(callback[, options]);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
callback |
ของ Google | โค้ดเรียกกลับที่มีการเรียกใช้ด้วยรหัสธุรกรรมสตริง คุณส่งรหัสธุรกรรมไปในการเรียก API แบบอ่าน/เขียน/ค้นหาได้ ฟังก์ชันเรียกกลับนี้ต้องแสดงผลสัญญา โค้ดเรียกกลับอาจทำงานสูงสุด 3 ครั้งก่อนล้มเหลว |
options |
ออบเจ็กต์ | ตัวเลือกคำขอไม่บังคับ ตัวเลือกที่รองรับเท่านั้นคือ projectId ระบบจะไม่สนใจคีย์ตัวเลือกที่ไม่รู้จัก (ดูตัวเลือกด้านล่าง) |
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
projectId |
สตริง | Optional รหัสโปรเจ็กต์ Google Cloud Platform หากไม่ระบุ ระบบจะดึง projectId จากตัวแปรสภาพแวดล้อม GOOGLE_CLOUD_PROJECT ตราบใดที่การตั้งค่าสิทธิ์ access_firestore สำหรับรหัสโปรเจ็กต์เป็น * หรือ GOOGLE_CLOUD_PROJECT หากคอนเทนเนอร์เซิร์ฟเวอร์กำลังทำงานอยู่บน Google Cloud ระบบจะตั้งค่า GOOGLE_CLOUD_PROJECT เป็นรหัสของโปรเจ็กต์ Google Cloud อยู่แล้ว |
ตัวอย่าง
const Firestore = require('Firestore');
const path = 'collection/document';
const projectId = 'gcp-cloud-project-id';
Firestore.runTransaction((transaction) => {
const transactionOptions = {
projectId: projectId,
transaction: transaction,
};
// Must return a promise.
return Firestore.read(path, transactionOptions).then((result) => {
const newInputCount = result.data.inputCount + 1;
const input = {key1: 'value1', inputCount: newInputCount};
return Firestore.write(path, input, transactionOptions);
});
}, {
projectId: projectId
}).then((ids) => {
data.gtmOnSuccess();
}, data.gtmOnFailure);
ข้อผิดพลาดที่มีในฟังก์ชัน Firestore แต่ละรายการจะถูกปฏิเสธเมื่อใช้ออบเจ็กต์ที่มีคีย์ reason
ดังนี้
Firestore.read(...).then(onSuccess, (error) => {
if (error.reason === 'unknown') {
// Handle the unknown error here.
}
});
สาเหตุของข้อผิดพลาดอาจมีแต่ไม่จำกัดเพียงรหัสข้อผิดพลาดของ Firestore REST API
สิทธิ์ที่เกี่ยวข้อง
JSON
แสดงผลออบเจ็กต์ที่มีฟังก์ชัน JSON
ฟังก์ชัน parse()
จะแยกวิเคราะห์สตริง JSON เพื่อสร้างค่าหรือออบเจ็กต์ที่อธิบายโดยสตริง หากแยกวิเคราะห์ค่าไม่ได้ (เช่น JSON ที่มีรูปแบบไม่ถูกต้อง) ฟังก์ชันจะแสดงผล undefined
หากค่าอินพุตไม่ใช่สตริง ระบบจะเปลี่ยนอินพุตเป็นสตริง
ฟังก์ชัน stringify()
จะแปลงอินพุตเป็นสตริง JSON หากแยกวิเคราะห์ค่าไม่ได้ (เช่น ออบเจ็กต์มีวงจร) เมธอดจะแสดงผล undefined
ตัวอย่าง
const JSON = require('JSON');
// The JSON input string is converted to an object.
const object = JSON.parse('{"foo":"bar"}');
// The input object is converted to a JSON string.
const str = JSON.stringify({foo: 'bar'});
ไวยากรณ์
JSON.parse(stringInput);
JSON.stringify(value);
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
Math
ออบเจ็กต์ที่มีฟังก์ชัน Math
ไวยากรณ์
const Math = require('Math');
// Retrieve the absolute value.
const absolute = Math.abs(-3);
// Round the input down to the nearest integer.
const roundedDown = Math.floor(3.6);
// Round the input up to the nearest integer.
const roundedUp = Math.ceil(2.2);
// Round the input to the nearest integer.
const rounded = Math.round(3.1);
// Return the largest argument.
const biggest = Math.max(1, 3);
// Return the smallest argument.
const smallest = Math.min(3, 5);
// Return the first argument raised to the power of the second argument.
const powerful = Math.pow(3, 1);
// Return the square root of the argument.
const unsquared = Math.sqrt(9);
พารามิเตอร์
ระบบจะแปลงพารามิเตอร์ฟังก์ชันทางคณิตศาสตร์เป็นตัวเลข
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
Messages
API ต่อไปนี้ทำงานร่วมกันเพื่อให้ส่งข้อความระหว่างส่วนต่างๆ ของคอนเทนเนอร์ได้
addMessageListener
เพิ่มฟังก์ชันที่ฟังข้อความประเภทหนึ่งๆ เมื่อมีการส่งข้อความประเภทนั้นโดยใช้ sendMessage
API (โดยปกติจะเป็นแท็ก) การเรียกกลับจะทำงานพร้อมกัน โค้ดเรียกกลับจะทำงานโดยมีพารามิเตอร์ 2 ตัวดังนี้
messageType:string
message:Object
หากมีการเพิ่มโค้ดเรียกกลับในไคลเอ็นต์ โค้ดเรียกกลับจะได้รับข้อความในเหตุการณ์ทั้งหมดที่ไคลเอ็นต์สร้างขึ้น หากโค้ดเรียกกลับควรได้รับข้อความจากบางเหตุการณ์ ให้เชื่อมโยง API นี้กับเหตุการณ์โดยใช้ bindToEvent
ในฟังก์ชัน onStart
ของ runContainer
API ดูตัวอย่าง
ไวยากรณ์
const addMessageListener = require('addMessageListener');
addMessageListener('send_pixel', (messageType, message) => {
// This will be run whenever something sends a 'send_pixel' message.
});
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
messageType |
สตริง | ประเภทข้อความที่ต้องการฟัง หากค่าไม่ใช่สตริง ระบบจะเปลี่ยนค่าเป็นสตริง |
callback |
ของ Google | โค้ดเรียกกลับที่จะทำงานเมื่อมีการส่งข้อความในประเภทข้อความที่เกี่ยวข้อง หากการเรียกกลับไม่ใช่ฟังก์ชัน API จะไม่ดำเนินการใดๆ |
ตัวอย่าง
const addMessageListener = require('addMessageListener');
const claimRequest = require('claimRequest');
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
claimRequest();
addMessageListener('send_pixel', (messageType, message) => {
// This will be run whenever a tag sends a 'send_pixel' message.
});
const events = extractEventsFromMpv1();
let eventsCompleted = 0;
events.forEach((event, i) => {
runContainer(events[i], /* onComplete= */ () => {
if (events.length === ++eventsCompleted) {
returnResponse();
}
}, /* onStart= */ (bindToEvent) => {
if (i === 0) {
bindToEvent(addMessageListener)('send_pixel', (messageType, message) => {
// This will be called whenever a tag for the first event sends a
// 'send_pixel' message.
});
}
});
});
สิทธิ์ที่เกี่ยวข้อง
ต้องมีสิทธิ์ use_message
สิทธิ์จะต้องได้รับการกำหนดค่าดังต่อไปนี้
- ประเภทข้อความที่มี
Usage
จากlisten
หรือlisten_and_send
hasMessageListener
แสดงผลเป็น "จริง" หากมีการเพิ่ม Listener ข้อความสำหรับประเภทข้อความที่ระบุ หากไม่เช่นนั้น จะแสดงผลเป็น "เท็จ"
ไวยากรณ์
const hasMessageListener = require('hasMessageListener');
hasMessageListener('send_pixel');
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
sendMessage
ส่งข้อความประเภทที่ระบุไปยัง Listener ที่ลงทะเบียน ซึ่งสามารถใช้เพื่อส่งข้อความจากแท็กกลับไปยังไคลเอ็นต์ที่เรียกใช้คอนเทนเนอร์
ไวยากรณ์
const sendMessage = require('sendMessage');
sendMessage('send_pixel', {url: 'https://analytics.example.com/collect'});
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
messageType |
สตริง | ประเภทข้อความที่จะส่ง หากค่าไม่ใช่สตริง ระบบจะเปลี่ยนค่าเป็นสตริง |
message |
ออบเจ็กต์ | ข้อความที่จะส่ง หากข้อความไม่ใช่ออบเจ็กต์ API จะไม่ดำเนินการใดๆ |
สิทธิ์ที่เกี่ยวข้อง
ต้องมีสิทธิ์ use_message
สิทธิ์จะต้องได้รับการกำหนดค่าดังต่อไปนี้
- ประเภทข้อความที่มี
Usage
จากlisten_and_send
หรือsend
Object
แสดงผลออบเจ็กต์ที่ระบุเมธอด Object
เมธอด keys()
จะมีลักษณะการทำงานของไลบรารีมาตรฐาน Object.keys() โดยจะแสดงผลอาร์เรย์ของชื่อพร็อพเพอร์ตี้ที่แจกแจงได้ของออบเจ็กต์หนึ่งๆ ในลำดับเดียวกันกับที่ลูป for...in...
จะแสดง หากค่าอินพุตไม่ใช่ออบเจ็กต์ ระบบจะบังคับให้ค่าดังกล่าวเป็นออบเจ็กต์
เมธอด values()
จะมีลักษณะการทำงานของไลบรารีมาตรฐาน Object.values() โดยจะแสดงผลอาร์เรย์ของค่าพร็อพเพอร์ตี้ที่แจกแจงได้ของออบเจ็กต์นั้นๆ ในลำดับเดียวกันกับที่ลูป for...in...
จะแสดง หากค่าอินพุตไม่ใช่ออบเจ็กต์ ระบบจะบังคับให้เป็นออบเจ็กต์
เมธอด entries()
จะมีลักษณะการทำงานของ Object.entries() ของไลบรารีมาตรฐาน โดยจะแสดงผลอาร์เรย์ของพร็อพเพอร์ตี้ที่แจกแจงได้ของออบเจ็กต์ที่ระบุ [key, value]
ในลำดับเดียวกันกับที่ลูป for...in...
จะแสดง หากค่าอินพุตไม่ใช่ออบเจ็กต์ ระบบจะบังคับให้เป็นออบเจ็กต์
เมธอด freeze()
จะมีลักษณะการทำงานของไลบรารีมาตรฐาน Object.freeze() วัตถุที่ตรึงไว้จะเปลี่ยนแปลงไม่ได้แล้ว การตรึงออบเจ็กต์จะป้องกันไม่ให้เพิ่มพร็อพเพอร์ตี้ใหม่ นำพร็อพเพอร์ตี้ที่มีอยู่ออก และเปลี่ยนค่าของพร็อพเพอร์ตี้ที่มีอยู่ freeze()
จะแสดงผลออบเจ็กต์เดียวกับที่มีการส่งผ่านเข้ามา อาร์กิวเมนต์พื้นฐานหรือ Null จะถือว่าเป็น
หากเป็นออบเจ็กต์ที่ตรึงไว้ และจะแสดงผล
เมธอด delete()
จะมีลักษณะการทำงานที่ใช้ลบโอเปอเรเตอร์ของไลบรารีมาตรฐาน โดยจะนำคีย์ที่ระบุออกจากออบเจ็กต์ เว้นแต่ว่าออบเจ็กต์จะถูกตรึงไว้
เช่นเดียวกับโอเปอเรเตอร์การลบไลบรารีมาตรฐาน พารามิเตอร์นี้จะแสดง true
หากค่าอินพุตแรก (objectInput
) เป็นออบเจ็กต์ที่ไม่ตรึงแม้ว่าค่าอินพุตที่สอง (keyToDelete
) จะระบุคีย์ที่ไม่มีอยู่ และแสดงผล false
ในกรณีอื่นๆ ทั้งหมด แต่จะแตกต่างจากโอเปอเรเตอร์การลบไลบรารีมาตรฐานในลักษณะต่อไปนี้
keyToDelete
ไม่สามารถเป็นสตริงที่คั่นด้วยจุดซึ่งระบุคีย์ที่ฝังอยู่- ไม่สามารถใช้
delete()
เพื่อลบองค์ประกอบออกจากอาร์เรย์ - ไม่สามารถใช้
delete()
เพื่อนำพร็อพเพอร์ตี้ใดๆ ออกจากขอบเขตรวม
ไวยากรณ์
Object.keys(objectInput)
Object.values(objectInput)
Object.entries(objectInput)
Object.freeze(objectInput)
Object.delete(objectInput, keyToDelete)
พารามิเตอร์
Object.keys
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
objectInput | ทั้งหมด | ออบเจ็กต์ที่มีคีย์ในการแจกแจง หากอินพุตไม่ใช่ออบเจ็กต์ ระบบจะบังคับให้อินพุตเป็นออบเจ็กต์ |
Object.values
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
objectInput | ทั้งหมด | ออบเจ็กต์ที่มีค่าที่แจกแจง หากอินพุตไม่ใช่ออบเจ็กต์ ระบบจะบังคับให้เป็นออบเจ็กต์ |
Object.entries
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
objectInput | ทั้งหมด | ออบเจ็กต์ที่มีคู่คีย์/ค่าที่ต้องการแจกแจง หากอินพุตไม่ใช่ออบเจ็กต์ ระบบจะบังคับให้เป็นออบเจ็กต์ |
Object.freeze
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
objectInput | ทั้งหมด | วัตถุที่ต้องการตรึง หากอินพุตไม่ใช่วัตถุ ระบบจะถือว่าเป็นวัตถุที่ตรึงไว้ |
Object.delete
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
objectInput | ทั้งหมด | ออบเจ็กต์ที่มีคีย์ที่จะลบ |
keyToDelete | สตริง | คีย์ระดับบนสุดที่จะลบ |
ตัวอย่าง
const Object = require('Object');
// The keys of an object are enumerated in an array.
const keys = Object.keys({foo: 'bar'});
// The values of an object are enumerated in an array.
const values = Object.values({foo: 'bar'});
// The key/value pairs of an object are enumerated in an array.
const entries = Object.entries({foo: 'bar'});
// The input object is frozen.
const frozen = Object.freeze({foo: 'bar'});
// The key is removed from the input object.
const obj1 = {deleteme: 'value'};
Object.delete(obj1, 'deleteme');
// Only a top-level key can be specified as the key to delete.
const obj2 = {nested: {key: 'value'}};
Object.delete(obj2, 'nested.key'); // This has no effect.
Object.delete(obj2.nested, 'key'); // This deletes the nested key.
Promise
แสดงผลออบเจ็กต์ที่ระบุเมธอดสำหรับการโต้ตอบกับคำสัญญา
คำสัญญามีฟังก์ชันการทำงานเทียบเท่ากับคำสัญญา JavaScript แต่ละอินสแตนซ์จะมี 3 วิธีที่แสดงผลเป็น "คำสัญญา" ซึ่งจะอนุญาตให้ดำเนินการต่อไปได้เมื่อคำสัญญาตกลงเรียบร้อยแล้ว ดังนี้
.then()
- จัดการทั้งกรณีที่ได้รับการแก้ไขและถูกปฏิเสธ จะมีการเรียกกลับ 2 รายการเป็นพารามิเตอร์ รายการหนึ่งสำหรับกรณีสำเร็จและอีกรายการหนึ่งสำหรับกรณีล้มเหลว.catch()
- จัดการเคสที่ถูกปฏิเสธเท่านั้น ใช้โค้ดเรียกกลับ เป็นพารามิเตอร์.finally()
- ระบุวิธีเรียกใช้โค้ดไม่ว่าสัญญาจะได้รับการแก้ไขหรือปฏิเสธ ใช้โค้ดเรียกกลับ 1 รายการเป็นพารามิเตอร์ที่ถูกเรียกใช้โดยไม่มีอาร์กิวเมนต์
ตัวแปรที่แสดงผลสัญญาจะเท่ากับค่าที่แปลงแล้วของคำมั่นสัญญา หรือ false
หากคำสัญญาปฏิเสธ
ตัวอย่าง
promise.then((resolvedValue) => {
// Handles when promise resolves.
}, (rejectedValue) => {
// Handles when promise rejects.
});
promise.catch((rejectedValue) => {
// Handles when promise rejects.
});
promise.finally(() => {
// Runs regardless of whether or not the previous promise resolves or
// rejects.
});
Promise.all
จะแสดงคำมั่นสัญญาที่
- แก้ไขเมื่ออินพุตทั้งหมดแก้ไขปัญหาแล้ว หรือ
- ปฏิเสธเมื่ออินพุตใดก็ตามปฏิเสธ
ไวยากรณ์
Promise.all(inputs);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
inputs |
อาร์เรย์ | อาร์เรย์ของค่าหรือสัญญา หากอินพุตไม่ใช่คำสัญญา ระบบจะส่งอินพุตนั้นเสมือนว่าเป็นค่าที่แปลงแล้วของคำสัญญา จะแสดงข้อผิดพลาดหากอินพุตไม่ใช่อาร์เรย์ |
ตัวอย่าง
const Promise = require('Promise');
const sendHttpGet = require('sendHttpGet');
return Promise.all(['a', sendHttpGet('https://example.com')])
.then((results) => {
// results will equal: ['a', {statusCode: 200, headers: {}, body: ''}]
});
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
Promise.create
สร้างคำสัญญาที่มีฟังก์ชันการทำงานเทียบเท่ากับคำสัญญา JavaScript
ไวยากรณ์
Promise.create(resolver);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
resolver |
ของ Google | ฟังก์ชันที่เรียกใช้โดยมี 2 ฟังก์ชัน ได้แก่ แปลค่าและปฏิเสธ สัญญาที่ส่งคืนจะแก้ไขหรือปฏิเสธเมื่อมีการเรียกใช้พารามิเตอร์ที่เกี่ยวข้อง แสดงข้อผิดพลาดหากรีโซลเวอร์ไม่ใช่ฟังก์ชัน |
ตัวอย่าง
const Promise = require('Promise');
return Promise.create((resolve, reject) => {
// Do asynchronous work that eventually calls resolve() or reject()
});
สิทธิ์ที่เกี่ยวข้อง
ไม่มี
API ทดสอบ
API เหล่านี้ทำงานร่วมกับการทดสอบ JavaScript แบบแซนด์บ็อกซ์เพื่อสร้างการทดสอบสำหรับเทมเพลตที่กำหนดเองใน Google Tag Manager API ทดสอบเหล่านี้ไม่จำเป็นต้องมีคำสั่ง require()
[ดูข้อมูลเพิ่มเติมเกี่ยวกับการทดสอบเทมเพลตที่กำหนดเอง]
assertApi
แสดงผลออบเจ็กต์ตัวจับคู่ที่ใช้เพื่อยืนยัน API ที่ระบุได้อย่างคล่องแคล่ว
ไวยากรณ์
assertApi(apiName)
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
apiName |
สตริง | ชื่อของ API ที่จะตรวจสอบ ซึ่งเป็นสตริงเดียวกันกับที่ส่งไปยัง require()
|
ตัวจับคู่
Subject.wasCalled()
Subject.wasNotCalled()
Subject.wasCalledWith(...expected)
Subject.wasNotCalledWith(...expected)
ตัวอย่าง
assertApi('sendPixel').wasCalled();
assertApi('getUrl').wasNotCalled();
assertApi('makeNumber').wasCalledWith('8');
assertApi('setInWindow').wasNotCalledWith('myVar', 'theWrongValue');
assertThat
assertThat
API สร้างขึ้นตามไลบรารี [Truth] ของ Google โดยจะส่งคืนออบเจ็กต์ที่สามารถใช้ยืนยันคุณค่าของวัตถุได้อย่างคล่องแคล่ว ข้อผิดพลาดในการยืนยันจะทำให้การทดสอบหยุดลงทันทีและทำเครื่องหมายว่าล้มเหลว อย่างไรก็ตาม ความล้มเหลวในการทดสอบหนึ่งจะไม่ส่งผลกระทบต่อกรอบการทดสอบอื่นๆ
ไวยากรณ์
assertThat(actual, opt_message)
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
actual |
ทั้งหมด | ค่าที่จะใช้ในการตรวจสอบอย่างคล่องแคล่ว |
opt_message |
สตริง | ข้อความเสริมที่จะพิมพ์หากการยืนยันล้มเหลว |
ตัวจับคู่
ตัวจับคู่ | คำอธิบาย |
---|---|
isUndefined() |
ยืนยันว่าเรื่องคือ undefined |
isDefined() |
ยืนยันว่าหัวข้อไม่ใช่ undefined |
isNull() |
ยืนยันว่าเรื่องคือ null |
isNotNull() |
ยืนยันว่าหัวข้อไม่ใช่ null |
isFalse() |
ยืนยันว่าเรื่องคือ false |
isTrue() |
ยืนยันว่าเรื่องคือ true |
isFalsy() |
ยืนยันว่าหัวข้อนั้นไม่ถูกต้อง ค่าที่ไม่ถูกต้องคือ undefined , null , false , NaN , 0 และ '' (สตริงว่างเปล่า) |
isTruthy() |
ยืนยันว่าเนื้อหาตรงตามความจริง ค่าที่ไม่ถูกต้องคือ undefined , null , false , NaN , 0 และ '' (สตริงว่างเปล่า) |
isNaN() |
ยืนยันว่าวัตถุเป็นค่า NaN |
isNotNaN() |
ยืนยันว่าวัตถุเป็นค่าใดๆ ที่ไม่ใช่ NaN |
isInfinity() |
ยืนยันว่าวัตถุเป็นค่าอนันต์ที่เป็นบวกหรือลบ |
isNotInfinity() |
ยืนยันว่าวัตถุเป็นค่าใดๆ ที่นอกเหนือจากค่าอนันต์ที่เป็นบวกหรือลบ |
isEqualTo(expected) |
ยืนยันว่าวัตถุเท่ากับค่าที่ระบุ นี่คือการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบข้อมูลอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์แบบวนรอบ |
isNotEqualTo(expected) |
ยืนยันว่าวัตถุไม่เท่ากับค่าที่ระบุ นี่คือการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบข้อมูลอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์แบบวนรอบ |
isAnyOf(...expected) |
ยืนยันว่าวัตถุเท่ากับค่าที่ระบุค่าใดค่าหนึ่ง นี่คือการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบข้อมูลอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์แบบวนรอบ |
isNoneOf(...expected) |
ยืนยันว่าวัตถุไม่เท่ากับค่าใดๆ ที่ระบุ นี่คือการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบข้อมูลอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์แบบวนซ้ำ |
isStrictlyEqualTo(expected) |
ยืนยันว่าวัตถุตรงกับค่าที่ระบุอย่างเคร่งครัด (=== ) |
isNotStrictlyEqualTo(expected) |
ยืนยันว่าวัตถุไม่เท่ากัน (!== ) กับค่าที่ระบุ |
isGreaterThan(expected) |
ยืนยันว่าวัตถุมากกว่า (> ) ค่าที่กำหนดในการเปรียบเทียบตามลำดับ |
isGreaterThanOrEqualTo(expected) |
ยืนยันว่าวัตถุมากกว่าหรือเท่ากับ (>= ) ค่าที่ระบุในการเปรียบเทียบตามลำดับ |
isLessThan(expected) |
ยืนยันว่าวัตถุน้อยกว่า (< ) ค่าที่กำหนดในการเปรียบเทียบตามลำดับ |
isLessThanOrEqualTo(expected) |
ยืนยันว่าวัตถุดังกล่าวน้อยกว่าหรือเท่ากับ (<= )
ค่าที่กำหนดในการเปรียบเทียบตามลำดับ |
contains(...expected) |
ยืนยันว่าเรื่องเป็นอาร์เรย์หรือสตริงที่มีค่าที่ระบุทั้งหมดโดยเรียงลำดับอย่างไรก็ได้ นี่คือการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบข้อมูลอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์แบบวนรอบ |
doesNotContain(...expected) |
ยืนยันว่าเรื่องเป็นอาร์เรย์หรือสตริงที่ไม่มีค่าที่ระบุ นี่คือการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบข้อมูลอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์แบบวนรอบ |
containsExactly(...expected) |
ยืนยันว่าหัวเรื่องเป็นอาร์เรย์ที่มีค่าที่ระบุทั้งหมด โดยเรียงลำดับอย่างไรก็ได้ และไม่มีค่าอื่นๆ นี่คือการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบข้อมูลอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์แบบวนรอบ |
doesNotContainExactly(...expected) |
ยืนยันว่าเรื่องเป็นอาร์เรย์ที่มีชุดค่าที่แตกต่างจากค่าที่ระบุ โดยเรียงลำดับอย่างไรก็ได้ นี่คือการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบข้อมูลอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์แบบวนรอบ |
hasLength(expected) |
ยืนยันว่าหัวเรื่องเป็นอาร์เรย์หรือสตริงที่มีความยาวตามที่กำหนด การยืนยันจะล้มเหลวเสมอหากค่าไม่ใช่อาร์เรย์หรือสตริง |
isEmpty() |
ยืนยันว่าเรื่องเป็นอาร์เรย์หรือสตริงที่ว่างเปล่า (length = 0) การยืนยันจะล้มเหลวเสมอหากค่าไม่ใช่อาร์เรย์หรือสตริง |
isNotEmpty() |
ยืนยันว่าเรื่องเป็นอาร์เรย์หรือสตริงที่ไม่ว่างเปล่า (ความยาว > 0) การยืนยันจะล้มเหลวเสมอหากค่าไม่ใช่อาร์เรย์หรือสตริง |
isArray() |
ยืนยันว่าประเภทของเรื่องเป็นอาร์เรย์ |
isBoolean() |
ยืนยันว่าประเภทของเรื่องเป็นบูลีน |
isFunction() |
ยืนยันว่าประเภทของวัตถุเป็นฟังก์ชัน |
isNumber() |
ยืนยันว่าประเภทของวัตถุเป็นตัวเลข |
isObject() |
ยืนยันว่าประเภทของวัตถุเป็นวัตถุ |
isString() |
ยืนยันว่าประเภทของเรื่องเป็นสตริง |
ตัวอย่าง
assertThat(undefined).isUndefined();
assertThat(id, 'ID must be defined').isDefined();
assertThat(null).isNull();
assertThat(undefined).isNotNull();
assertThat(true).isTrue();
assertThat(false).isFalse();
assertThat(1).isTruthy();
assertThat('').isFalsy();
assertThat(1/0).isInfinity();
assertThat(0).isNotInfinity();
assertThat(-'foo').isNaN();
assertThat(100).isNotNaN();
assertThat(sentUrl).isEqualTo('https://endpoint.example.com/?account=12345');
assertThat(category).isNotEqualTo('premium');
assertThat(5).isAnyOf(1, 2, 3, 4, 5);
assertThat(42).isNoneOf('the question', undefined, 41.9);
assertThat('value').isStrictlyEqualTo('value');
assertThat('4').isNotStrictlyEqualTo(4);
assertThat(['a', 'b', 'c']).contains('a', 'c');
assertThat(['x', 'y', 'z']).doesNotContain('f');
assertThat(['1', '2', '3']).containsExactly('3', '2', '1');
assertThat(['4', '5']).doesNotContainExactly('4');
assertThat('a string').hasLength(8);
assertThat([]).isEmpty();
assertThat('another string').isNotEmpty();
fail
ทดสอบปัจจุบันไม่สำเร็จทันทีและพิมพ์ข้อความที่ระบุ หากมี
ไวยากรณ์
fail(opt_message);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
opt_message |
สตริง | ข้อความแสดงข้อผิดพลาดที่ไม่บังคับ |
ตัวอย่าง
fail('This test has failed.');
mock
mock
API ช่วยให้คุณลบล้างลักษณะการทำงานของ API ที่แซนด์บ็อกซ์ได้ API จำลองปลอดภัยที่จะใช้ในโค้ดของเทมเพลต แต่จะไม่สามารถใช้งานได้เมื่อไม่ได้อยู่ในโหมดทดสอบ ระบบจะรีเซ็ตการจำลองก่อนทำการทดสอบแต่ละครั้ง
ไวยากรณ์
mock(apiName, returnValue);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
apiName |
สตริง | ชื่อ API ที่จะจำลอง ซึ่งเป็นสตริงเดียวกันกับที่ส่งไปยัง require() |
returnValue |
ทั้งหมด | ค่าที่จะแสดงผลสำหรับ API หรือฟังก์ชันที่มีการเรียกใช้แทน API หาก returnValue เป็นฟังก์ชัน ระบบจะเรียกใช้ฟังก์ชันนั้นแทน API ที่แซนด์บ็อกซ์ หาก returnValue เป็นอย่างอื่นที่ไม่ใช่ฟังก์ชัน ระบบจะแสดงผลค่านั้นแทน API ที่แซนด์บ็อกซ์ |
ตัวอย่าง
mock('encodeUri', "https://endpoint.example.com/?account=12345");
mock('sendPixel', function(url, onSuccess, onFailure) {
onSuccess();
});
runCode
เรียกใช้โค้ดสำหรับเทมเพลต ซึ่งก็คือเนื้อหาแท็บโค้ด ในสภาพแวดล้อมการทดสอบปัจจุบันที่มีออบเจ็กต์ข้อมูลอินพุตที่กำหนด
ไวยากรณ์
runCode(data)
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
data |
ออบเจ็กต์ | ออบเจ็กต์ข้อมูลที่จะใช้ในการทดสอบ |
ผลลัพธ์
แสดงผลค่าตัวแปรสำหรับเทมเพลตตัวแปร แสดงผล undefined
สำหรับเทมเพลตประเภทอื่นๆ ทั้งหมด
ตัวอย่าง
runCode({field1: 123, field2: 'value'});