เอกสารนี้ระบุ API สำหรับการติดแท็กฝั่งเซิร์ฟเวอร์
addEventCallback
ลงทะเบียนฟังก์ชัน Callback ที่จะเรียกใช้เมื่อสิ้นสุดเหตุการณ์ ระบบจะเรียกใช้ Callback เมื่อมีการเรียกใช้แท็กทั้งหมดสำหรับเหตุการณ์ Callback จะส่งผ่านค่า 2 ค่า ได้แก่ รหัสของคอนเทนเนอร์ที่เรียกใช้ฟังก์ชัน และออบเจ็กต์ที่มีข้อมูลเกี่ยวกับเหตุการณ์
เมื่อใช้ 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 นี้มีการส่ง
ข้อยกเว้นหากเรียกใช้หลังจากไคลเอ็นต์แสดงผล (เช่น เรียกใช้ในอะซิงโครนัส)
Callback เช่น ใน callLater
หรือฟังก์ชัน onComplete
runContainer
)
ไคลเอ็นต์ควรอ้างสิทธิ์คำขอโดยใช้ API นี้ก่อนที่จะเรียกใช้
runContainer
API
ตัวอย่าง
const claimRequest = require('claimRequest');
claimRequest();
ไวยากรณ์
claimRequest();
สิทธิ์ที่เชื่อมโยง
ไม่มี
computeEffectiveTldPlusOne
แสดงผลโดเมนระดับบนสุดที่มีผล + 1 (eTLD+1) ของโดเมนหรือ URL ที่ระบุ eTLD+1 จะคำนวณโดยการประเมินโดเมนเทียบกับรายการคำต่อท้ายสาธารณะ กฎ eTLD+1 มักจะเป็นโดเมนระดับสูงสุดที่คุณสามารถตั้งค่า คุกกี้
ถ้าอาร์กิวเมนต์เป็นค่าว่างหรือไม่ได้กำหนด จะแสดงผลค่าอาร์กิวเมนต์ ไม่เปลี่ยนแปลง มิฉะนั้น อาร์กิวเมนต์จะถูกเปลี่ยนเป็นสตริง หากอาร์กิวเมนต์ไม่ใช่ โดเมนหรือ 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 ที่ระบุ ส่งคืน
string ที่แสดงถึงคอมโพเนนต์ 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 |
บูลีน |
หากเป็น 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 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 ที่กำหนดไว้ล่วงหน้า และแสดงผล promise กับสคริปต์และข้อมูลเมตาการแคชที่เกี่ยวข้อง
สัญญาจะมีการแปลงเป็นออบเจ็กต์ที่มี 2 คีย์: script
และ
metadata
หากคำขอล้มเหลว สัญญาจะปฏิเสธด้วยคีย์ reason
ออบเจ็กต์ metadata
จะมีข้อมูลเมตาการแคชต่อไปนี้ตาม
ส่วนหัวการตอบกลับของทรัพยากร แต่ละฟิลด์จะปรากฏก็ต่อเมื่อ
ปรากฏอยู่ในการตอบสนองของทรัพยากร
{
'cache-control': string,
'expires': string,
'last-modified': string,
}
ตัวอย่าง
const getGoogleScript = require('getGoogleScript');
getGoogleScript('ANALYTICS').then((result) => {
// Operate on result.script and result.metadata here.
});
ไวยากรณ์
getGoogleScript(script[, options]);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
script |
สตริง |
ชื่อของสคริปต์ สคริปต์ที่รองรับ ได้แก่
'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
แสดงการแทนค่าสตริงของที่อยู่ 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
แสดงผลค่าที่ถอดรหัสของพารามิเตอร์สตริงคำค้นหาที่มีชื่อเป็นสตริง
หรือ 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' |
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
คำนวณลายเซ็นที่เข้ารหัสโดยใช้การตรวจสอบสิทธิ์ข้อความแบบแฮช
โค้ด (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 ใช้อาร์กิวเมนต์อย่างน้อยหนึ่งรายการ โดยแต่ละอาร์กิวเมนต์จะถูกแปลงเป็นสตริง หาก ที่จำเป็น และบันทึกไว้ในคอนโซลแล้ว
สิทธิ์ที่เชื่อมโยง
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 |
สตริง |
ชื่อคอลัมน์ที่ค่าจะกลายเป็นคีย์ใน Conversion
Map
|
valueColumnName |
สตริง |
ชื่อคอลัมน์ที่ค่าจะกลายเป็นค่าใน Conversion
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 นี้ในระหว่างการดำเนินการคอนเทนเนอร์ คอนเทนเนอร์จะทำงานอีกครั้ง
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 และแสดงผล
promise ที่ตรงกับออบเจ็กต์ที่มีคีย์ 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 ที่ระบุ และแสดงผล promise ซึ่งแก้ไขด้วยผลลัพธ์เมื่อคำขอเสร็จสมบูรณ์ หรือ หมดเวลา
ผลลัพธ์ที่แก้ไขแล้วคือออบเจ็กต์ที่มี 3 คีย์: statusCode
, headers
,
และ body
หากคำขอล้มเหลว (เช่น URL ไม่ถูกต้อง ไม่มีเส้นทางไปยังโฮสต์
การเจรจา SSL ล้มเหลว ฯลฯ) สัญญาจะปฏิเสธพร้อม: {reason:
'failed'}
หากมีการตั้งค่าตัวเลือก timeout
และคำขอหมดเวลา
สัญญาจะปฏิเสธพร้อม: {reason: 'timed_out'}
ตัวอย่าง
const sendHttpGet = require('sendHttpGet');
// Returns the response body as the value for a variable.
return sendHttpGet('https://example.com/item/' + data.itemId, {
headers: {key: 'value'},
timeout: 500,
}).then((result) => result.body, () => undefined);
ไวยากรณ์
sendHttpGet(url[, options]);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
url |
สตริง | 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 วันหมดอายุ fallbackDomain,httpOnly, max- อายุ, เส้นทาง, ปลอดภัย, และ sameSite (โปรดดู ตัวเลือกด้านล่าง) |
noEncode |
บูลีน |
หากเป็น "จริง" ค่าคุกกี้จะไม่เข้ารหัส ค่าเริ่มต้นคือ
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: จำนวนวินาทีที่คุกกี้จะหมดอายุ A 0 หรือค่าลบ จะทำให้คุกกี้หมดอายุทันที หากทั้ง
expires
และmax-age
ได้รับการตั้งค่าแล้วmax-age
มีลำดับความสำคัญเหนือกว่าเส้นทาง: เส้นทางที่ต้องมีใน URL ที่ขอ มิฉะนั้นเบราว์เซอร์จะไม่มี ส่งส่วนหัวของคุกกี้
ปลอดภัย: หากตั้งค่าเป็น
true
คุกกี้จะถูกส่งไปยังเซิร์ฟเวอร์เมื่อ คำขอสร้างขึ้นจากปลายทางhttps:
sameSite: ยืนยันว่าต้องไม่ส่งคุกกี้แบบข้ามต้นทาง คำขอ ต้องเป็น
'strict'
,'lax'
หรือ'none'
สิทธิ์ที่เชื่อมโยง
setPixelResponse
ตั้งค่าเนื้อหาการตอบกลับเป็น GIF ขนาด 1x1 ตั้งค่าส่วนหัว Content-Type เป็น "image/gif" ตั้งค่า Header การแคชเพื่อให้ 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 สำหรับคอนเทนเนอร์เว็บ
แต่เทมเพลตที่กำหนดเองในคอนเทนเนอร์ของเซิร์ฟเวอร์ควรใช้
sha256Sync
API สำหรับโค้ดที่เข้าใจง่ายขึ้น
ตัวอย่าง
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
แสดงผลวัตถุพร้อมกับวิธีการเข้าถึงพื้นที่เก็บข้อมูลของเทมเพลต เทมเพลต การจัดเก็บข้อมูลทำให้สามารถแชร์ข้อมูลระหว่างการใช้งานเทมเพลตเดียวได้ ข้อมูลที่จัดเก็บไว้ในพื้นที่เก็บข้อมูลเทมเพลตจะยังคงอยู่ในเซิร์ฟเวอร์ที่เรียกใช้ คอนเทนเนอร์ ในกรณีส่วนใหญ่ จะมีเซิร์ฟเวอร์หลายตัวที่กำลังใช้งานคอนเทนเนอร์ ดังนั้น การจัดเก็บข้อมูลไว้ในพื้นที่เก็บข้อมูลของเทมเพลต ไม่ได้รับประกันว่า คำขอจะมีสิทธิ์เข้าถึงข้อมูล
"ข้อมูล" ในชื่อ "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
หาก regex ตรงกัน จะแสดงผลเป็น 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
|
บูลีน | หากจริง ผลลัพธ์จะ
เข้ารหัสโดยใช้
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 และ skipInvalidRows. ระบบจะไม่สนใจคีย์ตัวเลือกที่ไม่รู้จัก (โปรดดู ตัวเลือกด้านล่าง) |
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
ignoreUnknownValues |
บูลีน | หากตั้งค่าเป็น true ให้ยอมรับแถวที่มีค่า
ที่ไม่ตรงกับสคีมา ระบบจะไม่สนใจค่าที่ไม่รู้จัก ค่าเริ่มต้น
ไปยัง false |
skipInvalidRows |
บูลีน | หากตั้งค่าเป็น true ให้แทรกแถวที่ถูกต้องทั้งหมดของคำขอ
แม้ว่าจะพบแถวที่ไม่ถูกต้องก็ตาม ค่าเริ่มต้นคือ false |
ข้อผิดพลาด "ไม่พบโมดูล" หมายความว่าคอนเทนเนอร์ของเซิร์ฟเวอร์มีแนวโน้มที่จะเรียกใช้ รูปภาพเวอร์ชันเก่าของเราที่ยังไม่ได้รวมโมดูล BigQuery โปรดทำให้คอนเทนเนอร์เซิร์ฟเวอร์ใช้งานได้อีกครั้งด้วยการตั้งค่าเดียวกันโดยใช้ สคริปต์การติดตั้งใช้งาน ระบบจะรวมโมดูลนี้โดยอัตโนมัติเมื่อการดำเนินการเสร็จสิ้น
ข้อผิดพลาดที่ไม่มีการแทรกมักมีออบเจ็กต์ข้อผิดพลาด 1 รายการที่มีคีย์ reason
ดังนี้
[{reason: 'invalid'}]
ข้อผิดพลาดในการแทรกอาจมีออบเจ็กต์ข้อผิดพลาดหลายรายการที่มีอาร์เรย์ errors
และออบเจ็กต์ row
ต่อไปนี้เป็นตัวอย่างการตอบกลับข้อผิดพลาดจาก
การแทรกแถว 2 แถวที่แถวเดียวเท่านั้นมีข้อผิดพลาด
[
{
"errors": [
{
"reason":"invalid"
}
],
"row": {
"string_col":"otherString",
"number_col":-3,
"bool_col":3
}
},
{
"errors": [
{
"reason":"stopped"
}
],
"row": {
"string_col":"stringValue",
"number_col":5,
"bool_col:false
}
}
]
ตัวอย่าง
const BigQuery = require('BigQuery');
const connectionInfo = {
'projectId': 'gcp-cloud-project-id',
'datasetId': 'destination-dataset',
'tableId': 'destination-table',
};
const rows = [{
'column1': 'String1',
'column2': 1234,
}];
const options = {
'ignoreUnknownValues': true,
'skipInvalidRows': false,
};
BigQuery.insert(connectionInfo, rows, options)
.then(data.gtmOnSuccess, data.gtmOnFailure);
สิทธิ์ที่เชื่อมโยง
Firestore
แสดงผลออบเจ็กต์ที่มีฟังก์ชัน Firestore
API นี้รองรับเฉพาะ Firestore ในโหมดดั้งเดิม ไม่ใช่ Firestore ใน โหมด Datastore นอกจากนี้ API ยังรองรับเฉพาะการใช้ฐานข้อมูลเริ่มต้นเท่านั้น
Firestore.read
ฟังก์ชัน Firestore.read
จะอ่านข้อมูลจากเอกสาร Firestore และ
จะแสดงผล promise ที่แปลงไปเป็นออบเจ็กต์ที่มี 2 คีย์ ได้แก่
id
และ data
หากไม่มีเอกสารอยู่ สัญญาจะปฏิเสธพร้อม
ที่มีคีย์ reason
เท่ากับ not_found
ไวยากรณ์
Firestore.read(path[, options]);
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
path |
สตริง | เส้นทางไปยังเอกสารหรือคอลเล็กชัน ต้องไม่ขึ้นต้นหรือลงท้ายด้วย "/" |
options |
ออบเจ็กต์ | ตัวเลือกคำขอที่ไม่บังคับ ตัวเลือกที่รองรับมีดังนี้ projectId, disableCache และ ธุรกรรม ไม่รู้จัก ระบบจะไม่สนใจคีย์ตัวเลือก (โปรดดู ตัวเลือกด้านล่าง) |
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
projectId |
สตริง | ไม่บังคับ รหัสโปรเจ็กต์ Google Cloud Platform หากไม่ระบุ พารามิเตอร์
projectId ดึงมาจากตัวแปรสภาพแวดล้อม
GOOGLE_CLOUD_PROJECT ตราบใดที่
access_firestore
ตั้งค่าสิทธิ์สำหรับรหัสโปรเจ็กต์เป็น * หรือ
GOOGLE_CLOUD_PROJECT หากคอนเทนเนอร์เซิร์ฟเวอร์กำลังทำงาน
Google Cloud ระบบจะตั้งค่า GOOGLE_CLOUD_PROJECT เป็นอยู่แล้ว
รหัสโปรเจ็กต์ Google Cloud |
disableCache |
บูลีน | ไม่บังคับ กำหนดว่าจะปิดใช้แคชหรือไม่ การแคชจะเปิดใช้โดยค่าเริ่มต้น ซึ่งจะแคชผลลัพธ์สำหรับ ระยะเวลาของคำขอ |
transaction |
สตริง | ไม่บังคับ ค่าที่ดึงมาจาก 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 และ ธุรกรรม ระบบจะไม่สนใจคีย์ตัวเลือกที่ไม่รู้จัก (โปรดดู ตัวเลือกด้านล่าง) |
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
projectId |
สตริง | ไม่บังคับ รหัสโปรเจ็กต์ Google Cloud Platform หากไม่ระบุ พารามิเตอร์
projectId ดึงมาจากตัวแปรสภาพแวดล้อม
GOOGLE_CLOUD_PROJECT ตราบใดที่
access_firestore
ตั้งค่าสิทธิ์สำหรับรหัสโปรเจ็กต์เป็น * หรือ
GOOGLE_CLOUD_PROJECT หากคอนเทนเนอร์เซิร์ฟเวอร์กำลังทำงาน
Google Cloud ระบบจะตั้งค่า GOOGLE_CLOUD_PROJECT เป็นอยู่แล้ว
รหัสโปรเจ็กต์ Google Cloud |
merge |
บูลีน | ไม่บังคับ หากตั้งค่าเป็น
true แล้วผสานคีย์จากอินพุตไปยังเอกสาร
มิฉะนั้นเมธอดจะลบล้างทั้งเอกสาร ค่าเริ่มต้นคือ
false |
transaction |
สตริง | ไม่บังคับ ค่าที่ดึงมาจาก 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 เช่น
[[‘id’, ‘<’, ‘5’], [‘state’, ‘==’, ‘CA’]] ระบบจะใช้เงื่อนไขร่วมกันเพื่อสร้างผลการค้นหา โปรด อ้างอิงถึง โอเปอเรเตอร์การค้นหาของ Firestore สำหรับรายการคำค้นหาที่เข้ากันได้ โอเปอเรเตอร์ |
options |
ออบเจ็กต์ | ตัวเลือกคำขอที่ไม่บังคับ ตัวเลือกที่รองรับมีดังนี้ projectId, disableCache limit และ transaction ไม่รู้จัก ระบบจะไม่สนใจคีย์ตัวเลือก (โปรดดู ตัวเลือกด้านล่าง) |
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
projectId |
สตริง | ไม่บังคับ รหัสโปรเจ็กต์ Google Cloud Platform หากไม่ระบุ พารามิเตอร์
projectId ดึงมาจากตัวแปรสภาพแวดล้อม
GOOGLE_CLOUD_PROJECT ตราบใดที่
access_firestore
ตั้งค่าสิทธิ์สำหรับรหัสโปรเจ็กต์เป็น * หรือ
GOOGLE_CLOUD_PROJECT หากคอนเทนเนอร์เซิร์ฟเวอร์กำลังทำงาน
Google Cloud ระบบจะตั้งค่า GOOGLE_CLOUD_PROJECT เป็นอยู่แล้ว
รหัสโปรเจ็กต์ Google Cloud |
disableCache |
บูลีน | ไม่บังคับ กำหนดว่าจะปิดใช้แคชหรือไม่ การแคชจะเปิดใช้โดยค่าเริ่มต้น ซึ่งจะแคชผลลัพธ์สำหรับ ระยะเวลาของคำขอ |
limit |
ตัวเลข | ไม่บังคับ เปลี่ยนจำนวนผลลัพธ์สูงสุดที่แสดงผลโดย ข้อความค้นหา ค่าเริ่มต้นคือ 5 |
transaction |
สตริง | ไม่บังคับ ค่าที่ดึงมาจาก Firestore.runTransaction(). ทำเครื่องหมายการดำเนินการที่จะใช้ภายใน ธุรกรรม |
ตัวอย่าง
const Firestore = require('Firestore');
const queries = const queries = [['id', '==', '5']];
return Firestore.query('collection', queries, {
projectId: 'gcp-cloud-project-id',
limit: 1,
}).then((documents) => documents[0].data.key, () => undefined);
Firestore.runTransaction
ฟังก์ชัน Firestore.runTransaction
ช่วยให้ผู้ใช้เปลี่ยนค่า
อ่านและเขียนจาก Firestore หากการเขียนพร้อมกันหรือธุรกรรมอื่น
เกิดข้อขัดแย้งขึ้น ระบบจะพยายามทำธุรกรรมใหม่สูงสุด 2 ครั้ง หากล้มเหลว
หลังจากพยายามทั้งหมด 3 ครั้ง API จะปฏิเสธโดยมีข้อผิดพลาด API นี้ส่งคืน
คำมั่นสัญญาว่าจะแก้ไขอาร์เรย์ของรหัสเอกสาร ในการดำเนินการเขียนแต่ละครั้ง
หากธุรกรรมดำเนินการสำเร็จ และจะปฏิเสธพร้อมข้อผิดพลาดหากธุรกรรมล้มเหลว
ไวยากรณ์
Firestore.runTransaction(callback[, options]);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
callback |
ฟังก์ชัน | Callback ที่เรียกใช้ด้วยรหัสธุรกรรมสตริง สามารถส่งรหัสธุรกรรมไปยังการเรียก API แบบอ่าน/เขียน/ค้นหาได้ ฟังก์ชัน Callback นี้ต้องแสดงผลลัพธ์ การติดต่อกลับอาจทำงานสูงสุด 3 ครั้งก่อนที่จะล้มเหลว |
options |
ออบเจ็กต์ | ตัวเลือกคำขอที่ไม่บังคับ ตัวเลือกที่รองรับเท่านั้น คือ projectId ระบบจะไม่สนใจคีย์ตัวเลือกที่ไม่รู้จัก (โปรดดู ตัวเลือกด้านล่าง) |
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
projectId |
สตริง | ไม่บังคับ รหัสโปรเจ็กต์ 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 จะทำงานพร้อมกัน 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
value (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 แต่ละอินสแตนซ์มี สามวิธีที่ให้ผลลัพธ์ตามคำสัญญา ซึ่งช่วยให้สามารถดำเนินการได้มากขึ้นเมื่อมีสัญญา การปิดยอด:
.then()
- จัดการทั้งกรณีที่แก้ไขและถูกปฏิเสธ ต้องใช้ 2 Callback เป็นพารามิเตอร์: รายการหนึ่งสำหรับกรณีสำเร็จและอีก 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 โดยจะแสดงค่า
ที่สามารถใช้ยืนยันคุณค่าของหัวข้อหนึ่งๆ ได้อย่างคล่องแคล่ว CANNOT TRANSLATE
การยืนยันล้มเหลวจะหยุดการทดสอบทันทีและทำเครื่องหมายว่าล้มเหลว อย่างไรก็ตาม
ความล้มเหลวในการทดสอบครั้งหนึ่งจะไม่มีผลต่อกรอบการทดสอบอื่นๆ
ไวยากรณ์
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() |
รับรองว่าเรื่องเป็นอาร์เรย์หรือสตริงที่ไม่ว่างเปล่า (length > 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 ได้ ตัวอย่าง
API ใช้งานได้อย่างปลอดภัยในโค้ดเทมเพลต แต่จะทำงานในโหมดทดสอบเท่านั้น
ระบบจะรีเซ็ตการจำลองก่อนที่จะทำการทดสอบแต่ละครั้ง
ไวยากรณ์
mock(apiName, returnValue);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
apiName |
สตริง | ชื่อของ API ที่จะจำลอง สตริงเดียวกับที่ส่งไปยัง
require() |
returnValue |
ใดก็ได้ | ค่าที่จะส่งคืนสำหรับ API หรือฟังก์ชันที่เรียกแทนพารามิเตอร์
API หาก returnValue เป็นฟังก์ชัน จะมีการเรียกใช้ฟังก์ชันนั้นใน
ตำแหน่งของ Sandboxed API หาก returnValue เป็นอย่างอื่น
มากกว่าฟังก์ชัน ระบบจะแสดงผลค่านั้นแทนที่เครื่องมือแซนด์บ็อกซ์
API |
ตัวอย่าง
mock('encodeUri', "https://endpoint.example.com/?account=12345");
mock('sendPixel', function(url, onSuccess, onFailure) {
onSuccess();
});
mockObject
mockObject
API ช่วยให้คุณลบล้างลักษณะการทำงานของ Sandbox API ที่
แสดงผลออบเจ็กต์ API นี้ใช้ได้อย่างปลอดภัยในโค้ดเทมเพลต แต่ทำงานได้
เฉพาะในโหมดทดสอบเท่านั้น ระบบจะรีเซ็ตการจำลองก่อนที่จะทำการทดสอบแต่ละครั้ง
ไวยากรณ์
mockObject(apiName, objectMock);
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
apiName |
สตริง | ชื่อของ API ที่จะจำลอง สตริงเดียวกับที่ส่งไปยัง
require() |
objectMock |
ออบเจ็กต์ | ค่าที่จะส่งคืนสำหรับ API หรือฟังก์ชันที่เรียกแทนพารามิเตอร์ API ต้องเป็นออบเจ็กต์ |
ตัวอย่าง
const storage = {};
let firestoreId = 1;
function asTestPromise(result) {
return {
then: (callback) => callback(result)
};
}
mockObject('Firestore', {
write: (collection, input) => {
storage[collection + '/' + (++firestoreId)] = input;
return asTestPromise(firestoreId);
},
read: (document) => asTestPromise({data: storage[document]})
});
runCode
เรียกใช้โค้ดสำหรับเทมเพลต นั่นคือเนื้อหาของแท็บโค้ดใน สภาพแวดล้อมการทดสอบปัจจุบันด้วยออบเจ็กต์ข้อมูลอินพุตที่กำหนด
ไวยากรณ์
runCode(data)
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
data |
ออบเจ็กต์ | ออบเจ็กต์ข้อมูลที่จะใช้ในการทดสอบ |
มูลค่าการคืนสินค้า
ส่งคืนค่าของตัวแปรสำหรับเทมเพลตตัวแปร ส่งคืน undefined
สำหรับ
เทมเพลตประเภทอื่นๆ ทั้งหมด
ตัวอย่าง
runCode({field1: 123, field2: 'value'});