เอกสารนี้อธิบาย API สำหรับการติดแท็กฝั่งเซิร์ฟเวอร์
addEventCallback
ลงทะเบียนฟังก์ชัน Callback ที่จะเรียกใช้เมื่อเหตุการณ์สิ้นสุด ระบบจะเรียกใช้ การเรียกกลับเมื่อแท็กทั้งหมดสำหรับเหตุการณ์ทำงานเสร็จแล้ว callback จะส่งค่า 2 ค่า ได้แก่ รหัสของคอนเทนเนอร์ที่เรียกใช้ฟังก์ชัน และออบเจ็กต์ที่มีข้อมูลเกี่ยวกับเหตุการณ์
เมื่อใช้ API นี้ในแท็ก ระบบจะเชื่อมโยง API กับเหตุการณ์ปัจจุบัน เมื่อใช้ API นี้ในไคลเอ็นต์ จะต้องเชื่อมโยงกับเหตุการณ์ที่เฉพาะเจาะจงโดยใช้ฟังก์ชัน runContainerbindToEvent ของ API ดูรายละเอียดเพิ่มเติมได้ที่ตัวอย่าง
ไวยากรณ์
const addEventCallback = require('addEventCallback');
addEventCallback((containerId, eventData) => {
// Take some action based on the event data.
});
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
callback |
function | ฟังก์ชันที่จะเรียกใช้เมื่อสิ้นสุดเหตุการณ์ |
ออบเจ็กต์ eventData มีข้อมูลต่อไปนี้
| ชื่อคีย์ | ประเภท | คำอธิบาย |
|---|---|---|
tags |
อาร์เรย์ |
อาร์เรย์ของออบเจ็กต์ข้อมูลแท็ก แท็กทุกแท็กที่ทริกเกอร์ระหว่างเหตุการณ์
จะมีรายการในอาร์เรย์นี้ ออบเจ็กต์ข้อมูลแท็กประกอบด้วยรหัสของแท็ก (id) สถานะการดำเนินการ (status) และเวลาดำเนินการ (executionTime) นอกจากนี้ ข้อมูลแท็กยังมีข้อมูลเมตาแท็กเพิ่มเติมที่กำหนดค่าไว้ในแท็กด้วย
|
ในไคลเอ็นต์
const addEventCallback = require('addEventCallback');
const claimRequest = require('claimRequest');
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const logToConsole = require('logToConsole');
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
claimRequest();
const events = extractEventsFromMpv1();
let eventsCompleted = 0;
events.forEach((evt, i) => {
runContainer(evt, /* onComplete= */ (bindToEvent) => {
bindToEvent(addEventCallback)((containerId, eventData) => {
logToConsole('Event Number: ' + i);
eventData.tags.forEach((tag) => {
logToConsole('Tag ID: ' + tag.id);
logToConsole('Tag Status: ' + tag.status);
logToConsole('Tag Execution Time: ' + tag.executionTime);
});
});
if (events.length === ++eventsCompleted) {
returnResponse();
}
});
});
ในแท็ก
const addEventCallback = require('addEventCallback');
addEventCallback((containerId, eventData) => {
// This will be called at the end of the current event.
});
สิทธิ์ที่เชื่อมโยง
callLater
กำหนดเวลาการเรียกฟังก์ชันให้เกิดขึ้นแบบไม่พร้อมกัน ระบบจะเรียกใช้ฟังก์ชัน
หลังจากที่โค้ดปัจจุบันแสดงผล ซึ่งเทียบเท่ากับ
setTimeout(<function>, 0)
ตัวอย่าง
const callLater = require('callLater');
const logToConsole = require('logToConsole');
callLater(() => {
logToConsole('Logged asynchronously');
});
ไวยากรณ์
callLater(function)
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
function |
function | ฟังก์ชันที่จะเรียกใช้ |
สิทธิ์ที่เชื่อมโยง
ไม่มี
claimRequest
ใช้ API นี้ในไคลเอ็นต์เพื่ออ้างสิทธิ์คำขอ เมื่อมีการอ้างสิทธิ์ในคำขอแล้ว คอนเทนเนอร์จะไม่เรียกใช้ไคลเอ็นต์เพิ่มเติม
API นี้จะส่งข้อยกเว้นหากมีการเรียกใช้ในแท็กหรือตัวแปร API นี้จะส่งข้อยกเว้นหากมีการเรียกใช้หลังจากที่ไคลเอ็นต์แสดงผล (เช่น หากมีการเรียกใช้ใน Callback แบบไม่พร้อมกัน เช่น ใน callLater หรือฟังก์ชัน runContainer onComplete)
ไคลเอ็นต์ควรอ้างสิทธิ์คำขอโดยใช้ API นี้ก่อนเรียกใช้
runContainer API
ตัวอย่าง
const claimRequest = require('claimRequest');
claimRequest();
ไวยากรณ์
claimRequest();
สิทธิ์ที่เชื่อมโยง
ไม่มี
computeEffectiveTldPlusOne
แสดงผลโดเมนระดับบนสุดที่มีผล + 1 (eTLD+1) ของโดเมนหรือ URL ที่ระบุ ระบบจะคำนวณ eTLD+1 โดยการประเมินโดเมนเทียบกับกฎของรายการคำต่อท้ายสาธารณะ โดยปกติแล้ว eTLD+1 คือโดเมนระดับสูงสุดที่คุณตั้งค่าคุกกี้ได้
หากอาร์กิวเมนต์เป็น Null หรือไม่ได้กำหนด ระบบจะแสดงค่าอาร์กิวเมนต์ โดยไม่มีการเปลี่ยนแปลง มิฉะนั้น ระบบจะบังคับให้อาร์กิวเมนต์เป็นสตริง หากอาร์กิวเมนต์ไม่ใช่โดเมนหรือ URL ที่ถูกต้อง ระบบจะแสดงผลสตริงว่าง หากเซิร์ฟเวอร์ดึงข้อมูลรายการคำต่อท้ายสาธารณะไม่ได้ ระบบจะแสดงค่าอาร์กิวเมนต์โดยไม่มีการเปลี่ยนแปลง
ตัวอย่าง
const computeEffectiveTldPlusOne = require('computeEffectiveTldPlusOne');
// Returns 'example.co.uk'
computeEffectiveTldPlusOne('analytics.example.co.uk');
// Returns 'example.co.uk'
computeEffectiveTldPlusOne('https://analytics.example.co.uk/path');
ไวยากรณ์
computeEffectiveTldPlusOne(domainOrUrl);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
domainOrUrl |
สตริง | โดเมนหรือ URL ที่จะใช้คำนวณ eTLD+1 |
สิทธิ์ที่เชื่อมโยง
ไม่มี
createRegex
สร้างอินสแตนซ์นิพจน์ทั่วไปใหม่และแสดงผลโดยห่อไว้ในออบเจ็กต์ คุณไม่สามารถ
เข้าถึงนิพจน์ทั่วไปได้โดยตรง อย่างไรก็ตาม คุณสามารถส่งไปยัง testRegex API,
String.replace(), String.match() และ String.search() ได้
แสดงผล null หากนิพจน์ทั่วไปไม่ถูกต้องหรือ Re2 ไม่พร้อมใช้งานในเซิร์ฟเวอร์
API นี้ใช้การติดตั้งใช้งาน Re2 รูปภาพ Docker ของเซิร์ฟเวอร์ต้องเป็นเวอร์ชัน 2.0.0 ขึ้นไป
ตัวอย่าง
const createRegex = require('createRegex');
const domainRegex = createRegex('\\w+\\.com', 'i');
// Returns '/foobar'
'example.com/foobar'.replace(domainRegex, '');
ไวยากรณ์
createRegex(pattern, flags);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
pattern |
สตริง | ข้อความของนิพจน์ทั่วไป |
flags |
สตริง | สตริงที่ไม่บังคับซึ่งมีค่าสถานะสำหรับนิพจน์ทั่วไปที่กำลังสร้าง รองรับ `g` (ทั่วโลก) และ `i` (ไม่คำนึงถึงตัวพิมพ์ใหญ่/เล็ก) ระบบจะไม่สนใจอักขระอื่นๆ ทั้งหมด โดยไม่มีการแจ้งเตือน |
สิทธิ์ที่เชื่อมโยง
ไม่มี
เวอร์ชันรูปภาพขั้นต่ำ
decodeUri
ถอดรหัสอักขระที่เข้ารหัสใน URI ที่ระบุ แสดงผลสตริงที่
แสดง URI ที่ถอดรหัสแล้ว แสดงผล undefined เมื่อระบุอินพุตที่ไม่ถูกต้อง
ตัวอย่าง
const decodeUri = require('decodeUri');
const decodedUrl = decodeUri(data.encodedUrl);
if (decodedUrl) {
// ...
}
ไวยากรณ์
decodeUri(encoded_uri);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
encoded_uri |
สตริง |
URI ที่เข้ารหัสโดย
encodeUri() หรือโดยวิธีอื่นๆ
|
สิทธิ์ที่เชื่อมโยง
ไม่มี
decodeUriComponent
ถอดรหัสอักขระที่เข้ารหัสในคอมโพเนนต์ URI ที่ระบุ แสดงผลสตริงที่แสดงถึงคอมโพเนนต์ URI ที่ถอดรหัสแล้ว แสดงผล undefined เมื่อ
ได้รับอินพุตที่ไม่ถูกต้อง
ตัวอย่าง
const decodeUriComponent = require('decodeUriComponent');
const decodedQuery = decodeUriComponent(data.query);
if (decodedQuery) {
// ...
}
ไวยากรณ์
decodeUriComponent(encoded_uri_component);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
encoded_uri_component |
สตริง |
คอมโพเนนต์ URI ที่เข้ารหัสโดย
encodeUriComponent()
หรือโดยวิธีอื่นๆ
|
สิทธิ์ที่เชื่อมโยง
ไม่มี
encodeUri
แสดงผล Uniform Resource Identifier (URI) ที่เข้ารหัสโดยหลีกเลี่ยงอักขระพิเศษ แสดงผลสตริงที่แสดงสตริงที่ระบุซึ่งเข้ารหัส เป็น 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 ต้องกำหนดค่าสิทธิ์เพื่อ
อนุญาตให้เข้าถึงอย่างน้อยรายการต่อไปนี้
bodyquery parameters
extractEventsFromMpv2
แปลคำขอ Measurement Protocol V2 ที่เข้ามาเป็นรายการเหตุการณ์ในรูปแบบสคีมาแบบรวม แสดงรายการกิจกรรมที่ดึงข้อมูล แสดงข้อผิดพลาดหาก คำขอมีรูปแบบไม่ถูกต้อง
ตัวอย่าง
const extractEventsFromMpv2 = require('extractEventsFromMpv2');
const isRequestMpv2 = require('isRequestMpv2');
if (isRequestMpv2()) {
const events = extractEventsFromMpv2();
for (let i = 0; i < events.length; ++i) {
const event = events[i];
// Process event.
}
}
ไวยากรณ์
extractEventsFromMpv2();
สิทธิ์ที่เชื่อมโยง
ต้องได้รับสิทธิ์จาก read_request ต้องกำหนดค่าสิทธิ์เพื่อ
อนุญาตให้เข้าถึงอย่างน้อยรายการต่อไปนี้
bodyquery parameters
fromBase64
ถอดรหัสสตริงที่เข้ารหัส Base64 แสดง undefined หากอินพุตไม่ถูกต้อง
ไวยากรณ์
fromBase64(base64EncodedString);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
base64EncodedString |
สตริง | สตริงที่เข้ารหัส Base64 |
ตัวอย่าง
const fromBase64 = require('fromBase64');
const greeting = fromBase64('aGVsbG8=');
if (greeting === 'hello') {
// ...
}
สิทธิ์ที่เชื่อมโยง
ไม่มี
generateRandom
แสดงผลตัวเลข (จำนวนเต็ม) แบบสุ่มภายในช่วงที่กำหนด
ตัวอย่าง
const generateRandom = require('generateRandom');
const randomValue = generateRandom(0, 10000000);
ไวยากรณ์
generateRandom(min, max);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
min |
number | ค่าต่ำสุดที่เป็นไปได้ของจำนวนเต็มที่ส่งคืน (รวม) |
max |
number | ค่าสูงสุดที่เป็นไปได้ของจำนวนเต็มที่แสดงผล (รวม) |
สิทธิ์ที่เชื่อมโยง
ไม่มี
getAllEventData
แสดงผลสําเนาของข้อมูลเหตุการณ์
ไวยากรณ์
getAllEventData();
สิทธิ์ที่เชื่อมโยง
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 |
any |
เส้นทางของคีย์จะมีจุดคั่นระหว่างคอมโพเนนต์เส้นทาง ซึ่งอาจเป็นคีย์ในออบเจ็กต์หรือดัชนีในอาร์เรย์ก็ได้ หาก
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 ที่กำหนดไว้ล่วงหน้า และแสดงผลPromise พร้อมสคริปต์และข้อมูลเมตาการแคชที่เชื่อมโยง
Promise จะเปลี่ยนเป็นออบเจ็กต์ที่มีคีย์ 2 รายการ ได้แก่ script และ
metadata หากคำขอไม่สำเร็จ Promise จะปฏิเสธด้วยคีย์ 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 |
object | ตัวเลือกคำขอที่ไม่บังคับ ดูตัวเลือกที่รองรับได้ที่ด้านล่าง |
ตัวเลือก
| ตัวเลือก | ประเภท | คำอธิบาย |
|---|---|---|
id |
สตริง |
ใช้ได้กับ 'GTAG' ที่มีรหัสการวัด gtag และ
'GTM' ที่มีรหัสคอนเทนเนอร์เว็บ (เช่น GTM-XXXX)
|
debug |
any | หากเป็นจริง ระบบจะขอและแสดงผลสคริปต์การวัดผลเวอร์ชันแก้ไขข้อบกพร่อง |
timeout |
number |
ระยะหมดเวลาของคำขอเป็นมิลลิวินาที ระบบจะไม่สนใจค่าที่ไม่ใช่ค่าบวก หาก
คำขอหมดเวลา ระบบจะเรียกใช้การเรียกกลับด้วย
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
แสดงผลค่าของส่วนหัวคำขอที่มีชื่อเป็น 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
แสดงผลตัวเลขที่แสดงเวลาปัจจุบันเป็นมิลลิวินาทีตั้งแต่ Epoch ของ Unix
ตามที่ Date.now() แสดงผล
ไวยากรณ์
getTimestamp();
สิทธิ์ที่เชื่อมโยง
ไม่มี
getTimestampMillis
แสดงผลตัวเลขที่แสดงเวลาปัจจุบันเป็นมิลลิวินาทีตั้งแต่ Epoch ของ Unix
ตามที่ Date.now() แสดงผล
ไวยากรณ์
getTimestampMillis();
สิทธิ์ที่เชื่อมโยง
ไม่มี
getType
แสดงผลสตริงที่อธิบายประเภทของค่าที่ระบุ
| ประเภทอินพุต | ค่าที่แสดง |
|---|---|
| สตริง | 'string' |
| number | 'number' |
| บูลีน | 'boolean' |
| null | 'null' |
| undefined | '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 |
any | ค่าอินพุต |
สิทธิ์ที่เชื่อมโยง
ไม่มี
hmacSha256
คำนวณลายเซ็นที่เข้ารหัสโดยใช้รหัสการตรวจสอบสิทธิ์ข้อความตามแฮช (HMAC) ด้วย SHA-256 ค่าเริ่มต้นคือการเข้ารหัส base64url
หากต้องการใช้ API นี้ ให้ตั้งค่าตัวแปรสภาพแวดล้อม SGTM_CREDENTIALS ในเซิร์ฟเวอร์
เป็นเส้นทางของไฟล์คีย์ JSON ที่เข้ารหัส UTF-8 ที่มีรูปแบบต่อไปนี้
{
"keys": {
"key1": "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5",
"key2": "OTg3NjU0MzIxMHp5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2Jh",
...
}
}
ค่าคือคีย์ HMAC ที่เข้ารหัส Base64 ข้อความ JSON ต้องไม่ขึ้นต้นด้วยเครื่องหมายระบุลำดับไบต์
ตัวอย่าง
const hmacSha256 = require('hmacSha256');
const toBase64 = require('toBase64');
const header = toBase64('{"alg":"HS256","typ":"JWT"}', {urlEncoding: true});
const claim = toBase64('{"sub":"1234567890","iat":1698164946}', {urlEncoding: true});
const signature = hmacSha256(header + '.' + claim, 'key1');
const jwt = header + "." + claim + '.' + signature;
ไวยากรณ์
hmacSha256(data, keyId, options)
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
data |
สตริง | ข้อมูลที่จะใช้คำนวณค่า HMAC |
keyId
|
สตริง | รหัสคีย์จากไฟล์คีย์ JSON ที่อ้างอิงถึง คีย์ที่จะใช้ |
options
|
object | การกำหนดค่า 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
จากตัวสํารวจบันทึก ให้เรียกใช้การค้นหา logName =~ "stdout" เพื่อดูรายการบันทึก
ที่สร้างโดย API นี้
ตัวอย่าง
const logToConsole = require('logToConsole');
const that = 123;
const those = { ... };
logToConsole('that is: ', that, ' and those is: ', those);
ไวยากรณ์
logToConsole(argument1[, argument2, ...]);
พารามิเตอร์
API จะรับอาร์กิวเมนต์อย่างน้อย 1 รายการ ซึ่งแต่ละรายการจะแปลงเป็นสตริงหากจำเป็น และบันทึกลงในคอนโซล
สิทธิ์ที่เชื่อมโยง
makeInteger
แปลงค่าที่ระบุเป็นตัวเลข (จำนวนเต็ม)
ไวยากรณ์
makeInteger(value);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
value |
ประเภทใดก็ได้ | ค่าที่จะแปลง |
สิทธิ์ที่เชื่อมโยง
ไม่มี
makeNumber
แปลงค่าที่ระบุเป็นตัวเลข
ไวยากรณ์
makeNumber(value);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
value |
ประเภทใดก็ได้ | ค่าที่จะแปลง |
สิทธิ์ที่เชื่อมโยง
ไม่มี
makeString
แสดงผลค่าที่ระบุเป็นสตริง
ไวยากรณ์
makeString(value);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
value |
ประเภทใดก็ได้ | ค่าที่จะแปลง |
สิทธิ์ที่เชื่อมโยง
ไม่มี
makeTableMap
แปลงออบเจ็กต์ตารางแบบง่ายที่มี 2 คอลัมน์เป็น Map ซึ่งใช้เพื่อ
เปลี่ยนSIMPLE_TABLEฟิลด์เทมเพลตที่มี 2 คอลัมน์เป็นรูปแบบที่จัดการได้ง่ายขึ้น
เช่น ฟังก์ชันนี้อาจแปลงออบเจ็กต์ตารางได้
[
{'key': 'k1', 'value': 'v1'},
{'key': 'k2', 'value': 'v2'}
]
ลงในแผนที่
{
'k1': 'v1',
'k2': 'v2'
}
แสดงผลออบเจ็กต์: ระบบได้เพิ่ม Map ของคู่คีย์-ค่าที่แปลงแล้วลงในออบเจ็กต์ หรือ null ในกรณีอื่นๆ
ไวยากรณ์
makeTableMap(tableObj, keyColumnName, valueColumnName);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
tableObj |
List |
ออบเจ็กต์ตารางที่จะแปลง ซึ่งเป็นรายการของแผนที่ที่แต่ละ
Map แสดงถึงแถวในตาราง ชื่อพร็อพเพอร์ตี้แต่ละรายการในออบเจ็กต์แถวคือชื่อคอลัมน์ และค่าพร็อพเพอร์ตี้คือค่าคอลัมน์ในแถว
|
keyColumnName |
สตริง |
ชื่อของคอลัมน์ที่มีค่าจะกลายเป็นคีย์ใน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 นี้ในระหว่างการเรียกใช้คอนเทนเนอร์ ระบบจะเรียกใช้คอนเทนเนอร์อีกครั้ง
Callback onComplete และ onStart จะรับฟังก์ชันที่ชื่อ bindToEvent
ใช้ bindToEvent เพื่อเรียกใช้ API ในบริบทของเหตุการณ์
ดูรายละเอียดเพิ่มเติมได้ที่ตัวอย่าง addEventCallback
ขอแนะนำให้ใช้ API นี้จากเทมเพลตไคลเอ็นต์
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
// Runs the container with a simple pageview event and then returns a response.
runContainer({'event_name': 'pageview'}, () => returnResponse());
ไวยากรณ์
runContainer(event, onComplete, onStart);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
event |
object | พารามิเตอร์เหตุการณ์ |
onComplete |
function | การเรียกกลับที่เรียกใช้หลังจากแท็กทั้งหมดเริ่มทำงานเสร็จแล้ว |
onStart |
function | การเรียกกลับที่เรียกใช้ทันทีก่อนที่แท็กจะเริ่มทํางาน |
สิทธิ์ที่เชื่อมโยง
sendEventToGoogleAnalytics
ส่งเหตุการณ์เดียวโดยใช้ข้อมูลเหตุการณ์ทั่วไปไปยัง Google Analytics และแสดงPromise ที่เปลี่ยนเป็นออบเจ็กต์ที่มีคีย์ location หรือปฏิเสธเป็นออบเจ็กต์ที่มีคีย์ reason ปลายทาง 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 |
object | เหตุการณ์ในรูปแบบสคีมาแบบรวม |
สิทธิ์ที่เชื่อมโยง
ต้องได้รับสิทธิ์จาก 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
|
object | ตัวเลือกคำขอไม่บังคับ (ดูตัวเลือกด้านล่าง) |
ตัวเลือก
| ตัวเลือก | ประเภท | คำอธิบาย |
|---|---|---|
headers |
สตริง | ส่วนหัวของคำขอเพิ่มเติม |
timeout
|
number | ระยะหมดเวลาเป็นมิลลิวินาทีก่อนที่ระบบจะยกเลิกคำขอ ค่าเริ่มต้นคือ 15000 |
authorization
|
object | ออบเจ็กต์การให้สิทธิ์ไม่บังคับจาก
การเรียกใช้ getGoogleAuth เพื่อรวม
ส่วนหัวการให้สิทธิ์เมื่อส่งคำขอ
ไปยัง googleapis.com |
สิทธิ์ที่เชื่อมโยง
sendHttpRequest
ส่งคำขอ HTTP ไปยัง URL ที่ระบุ และแสดงผล Promise ที่แก้ไขด้วยการตอบกลับเมื่อคำขอเสร็จสมบูรณ์หรือหมดเวลา
ผลลัพธ์ที่ได้คือออบเจ็กต์ที่มีคีย์ 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
|
object | ตัวเลือกคำขอไม่บังคับ (ดูตัวเลือกด้านล่าง) |
body |
สตริง | เนื้อหาคำขอที่ไม่บังคับ |
ตัวเลือก
| ตัวเลือก | ประเภท | คำอธิบาย |
|---|---|---|
headers |
สตริง | ส่วนหัวของคำขอเพิ่มเติม |
method |
object | เมธอดคำขอ ค่าเริ่มต้นคือ GET |
timeout
|
number | ระยะหมดเวลาเป็นมิลลิวินาทีก่อนที่ระบบจะยกเลิกคำขอ ค่าเริ่มต้นคือ 15000 |
authorization
|
object | ออบเจ็กต์การให้สิทธิ์ไม่บังคับจาก
การเรียกใช้ 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 |
object | แอตทริบิวต์คุกกี้ที่ไม่บังคับ:domain expires fallbackDomain,httpOnly, max- age, path, secure และsameSite (ดูตัวเลือกด้านล่าง) |
noEncode |
บูลีน |
หากเป็นจริง ระบบจะไม่เข้ารหัสค่าคุกกี้ ค่าเริ่มต้นคือ
false
|
โดเมน: โฮสต์ที่จะส่งคุกกี้ไป หากกำหนดเป็นค่าพิเศษ 'อัตโนมัติ' แล้ว ระบบจะคำนวณโฮสต์โดยอัตโนมัติโดยใช้กลยุทธ์ต่อไปนี้
- eTLD+1 ของส่วนหัว
Forwardedหากมี - eTLD+1 ของส่วนหัว
X-Forwarded-Hostหากมี - eTLD+1 ของส่วนหัว
Host
- eTLD+1 ของส่วนหัว
หมดอายุ: อายุการใช้งานสูงสุดของคุกกี้ ต้องเป็นสตริงวันที่ในรูปแบบ UTC เช่น "Sat, 26 Oct 1985 08:21:00 GMT" หากตั้งค่าทั้ง
expiresและmax-ageไว้max-ageจะมีความสำคัญเหนือกว่าhttpOnly: ห้ามไม่ให้ JavaScript เข้าถึงคุกกี้หาก
truemax-age: จำนวนวินาทีก่อนที่คุกกี้จะหมดอายุ หากระบุเป็น 0 หรือตัวเลขติดลบ คุกกี้จะหมดอายุทันที หากตั้งค่าทั้ง
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-typecache-controlexpirespragma
bodystatus
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 |
สตริง undefined | ค่าของส่วนหัว หากเป็นค่าว่างหรือไม่ได้กำหนด ระบบจะล้างส่วนหัวที่มีชื่อออกจากคำตอบที่จะแสดง |
สิทธิ์ที่เชื่อมโยง
ต้องได้รับสิทธิ์จาก access_response ต้องกำหนดค่าสิทธิ์เพื่อ
อนุญาตให้เข้าถึงอย่างน้อยรายการต่อไปนี้
headers
setResponseStatus
ตั้งค่ารหัสสถานะ HTTP ของการตอบกลับที่จะแสดง
โปรดทราบว่าต้องเรียกใช้ returnResponse เพื่อส่งการตอบกลับ กลับไปยังไคลเอ็นต์
ไวยากรณ์
setResponseStatus(statusCode);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
statusCode |
number | รหัสสถานะ 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 |
function |
เรียกใช้ด้วยข้อมูลสรุปที่ได้ ซึ่งเข้ารหัสใน Base64 เว้นแต่
ออบเจ็กต์ options จะระบุการเข้ารหัสเอาต์พุตอื่น
|
options |
object |
ออบเจ็กต์ตัวเลือกไม่บังคับเพื่อระบุการเข้ารหัสเอาต์พุต หากระบุ ออบเจ็กต์ควรมีคีย์ outputEncoding
ที่มีค่าเป็น base64 หรือ hex
|
สิทธิ์ที่เชื่อมโยง
ไม่มี
sha256Sync
คำนวณและแสดงไดเจสต์ SHA-256 ของอินพุตที่เข้ารหัสใน base64
เว้นแต่optionsออบเจ็กต์จะระบุการเข้ารหัสเอาต์พุตอื่น
ตัวอย่าง
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
const sha256Sync = require('sha256Sync');
const digestBase64 = sha256Sync('inputString');
const digestHex = sha256Sync('inputString', {outputEncoding: 'hex'});
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digestBase64));
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digestHex));
ไวยากรณ์
sha256Sync(input, options = undefined);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
input |
สตริง | สตริงที่จะแฮช |
options |
object |
ออบเจ็กต์ตัวเลือกไม่บังคับเพื่อระบุการเข้ารหัสเอาต์พุต หากระบุ ออบเจ็กต์ควรมีคีย์ outputEncoding
ที่มีค่าเป็น base64 หรือ hex
|
สิทธิ์ที่เชื่อมโยง
ไม่มี
templateDataStorage
แสดงผลออบเจ็กต์ที่มีเมธอดสำหรับการเข้าถึงที่เก็บข้อมูลเทมเพลต ที่เก็บข้อมูลเทมเพลต ช่วยให้แชร์ข้อมูลในการดำเนินการเทมเพลตเดียวได้ ข้อมูลที่จัดเก็บไว้ในที่เก็บข้อมูลเทมเพลตจะยังคงอยู่ในเซิร์ฟเวอร์ที่เรียกใช้คอนเทนเนอร์ ในกรณีส่วนใหญ่จะมีเซิร์ฟเวอร์หลายเครื่องที่เรียกใช้คอนเทนเนอร์ ดังนั้นการจัดเก็บข้อมูลในพื้นที่เก็บข้อมูลเทมเพลตจึงไม่รับประกันว่าคำขอที่ตามมาทุกรายการจะมีสิทธิ์เข้าถึงข้อมูล
"data" ในชื่อ "templateDataStorage" หมายถึงข้อเท็จจริงที่ว่าระบบจะจัดเก็บได้เฉพาะประเภทข้อมูลธรรมดาที่ไม่ใช่ฟังก์ชันโดยใช้ API นี้
ระบบจะจัดเก็บฟังก์ชันหรือการอ้างอิงฟังก์ชันที่ส่งไปยัง API เป็น null แทน
ไวยากรณ์
const templateDataStorage = require('templateDataStorage');
// Returns a copy of the value stored for the given key, or null if nothing
// is stored with that key.
templateDataStorage.getItemCopy(key);
// Stores a copy of the value for the given key (or removes the data stored
// for the given key if the input value is null).
templateDataStorage.setItemCopy(key, value);
// Removes the value stored for the given key, if present.
templateDataStorage.removeItem(key);
// Deletes all values stored for the current template.
templateDataStorage.clear();
ตัวอย่าง
const sendHttpGet = require('sendHttpGet');
const setResponseBody = require('setResponseBody');
const setResponseStatus = require('setResponseStatus');
const templateDataStorage = require('templateDataStorage');
// Check to see if the item is in the cache.
const cachedBody = templateDataStorage.getItemCopy(data.key);
if (cachedBody) {
setResponseBody(cachedBody);
data.gtmOnSuccess();
return;
}
sendHttpGet(data.url).then((result) => {
if (result.statusCode >= 200 && result.statusCode < 300) {
setResponseBody(result.body);
templateDataStorage.setItemCopy(data.key, result.body);
data.gtmOnSuccess();
} else {
data.gtmOnFailure();
}
setResponseStatus(result.statusCode);
});
สิทธิ์ที่เชื่อมโยง
testRegex
ทดสอบสตริงกับนิพจน์ทั่วไปที่สร้างผ่าน createRegex API แสดง true
หากนิพจน์ทั่วไปตรงกัน ไม่เช่นนั้นจะแสดงผลเป็น false
นิพจน์ทั่วไปที่สร้างขึ้นด้วยแฟล็กส่วนกลางจะเป็นแบบมีสถานะ ดูรายละเอียดได้ที่เอกสารประกอบของ RegExp
ตัวอย่าง
const createRegex = require('createRegex');
const testRegex = require('testRegex');
const domainRegex = createRegex('\\w+\\.com', 'i');
// createRegex returns null if the regex is invalid or Re2 is not available.
if (domainRegex === null) return;
// Returns true
testRegex(domainRegex, 'example.com/foobar');
ไวยากรณ์
testRegex(regex, string);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
regex |
ออบเจ็กต์ | นิพจน์ทั่วไปที่จะทดสอบ ซึ่งส่งคืนจาก createRegex API |
string |
สตริง | สตริงทดสอบเพื่อทดสอบ |
สิทธิ์ที่เชื่อมโยง
ไม่มี
toBase64
เข้ารหัสสตริงเป็น base64 หรือ base64url ค่าเริ่มต้นคือการเข้ารหัส Base64
ไวยากรณ์
toBase64(input, options);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
input |
สตริง | สตริงที่จะเข้ารหัส |
options
|
object | การกำหนดค่า API ไม่บังคับ (ดูตัวเลือกด้านล่าง) |
ตัวเลือก
| ตัวเลือก | ประเภท | คำอธิบาย | เวอร์ชันต่ำสุด |
|---|---|---|---|
urlEncoding
|
บูลีน | หากเป็นจริง ระบบจะเข้ารหัสผลลัพธ์โดยใช้รูปแบบ base64url |
1.0.0 |
ตัวอย่าง
const toBase64 = require('toBase64');
const base64Hello = toBase64('hello');
const base64UrlHello = toBase64('hello', {urlEncoding: true});
สิทธิ์ที่เชื่อมโยง
ไม่มี
BigQuery
แสดงออบเจ็กต์ที่ให้ฟังก์ชัน BigQuery
ฟังก์ชัน BigQuery.insert ช่วยให้เขียนข้อมูลลงในตาราง BigQuery ได้ โดยจะ
แสดงผลสัญญาที่ดำเนินการเมื่อแทรกสำเร็จ หรือ
ปฏิเสธเมื่อเกิดข้อผิดพลาด
เมื่อการแทรกสำเร็จ Promise จะได้รับการแก้ไขโดยไม่มีอาร์กิวเมนต์
เมื่อการแทรกไม่สำเร็จ สัญญาจะปฏิเสธพร้อมกับรายการออบเจ็กต์ที่มี เหตุผลของข้อผิดพลาดและอาจมีออบเจ็กต์แถวหากเกิดข้อผิดพลาด คำขออาจดำเนินการสำเร็จเพียงบางส่วนเท่านั้น ในกรณีนี้ ระบบจะปฏิเสธ Promise พร้อมรายการข้อผิดพลาดสำหรับแต่ละแถวที่มีออบเจ็กต์แถวเพื่อช่วยแยกแยะแถวที่แทรก (ดูตัวอย่างข้อผิดพลาดด้านล่าง) ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของ BigQuery เกี่ยวกับข้อความแสดงข้อผิดพลาด
ไวยากรณ์
BigQuery.insert(connectionInfo, rows[, options]);
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
connectionInfo |
object |
กำหนดข้อมูลที่จำเป็นในการเชื่อมต่อกับตาราง BigQuery โดยมีพารามิเตอร์ที่ไม่บังคับ 1 รายการและพารามิเตอร์ที่ต้องระบุ 2 รายการ ดังนี้
|
rows |
อาร์เรย์ | แถวที่จะแทรกลงในตาราง |
options |
object | ตัวเลือกคำขอที่ไม่บังคับ ตัวเลือกที่รองรับมีดังนี้ ignoreUnknownValues และ skipInvalidRows ระบบจะไม่สนใจคีย์ตัวเลือกที่ไม่รู้จัก (ดูตัวเลือกด้านล่าง) |
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
ignoreUnknownValues |
บูลีน | หากตั้งค่าเป็น true ให้ยอมรับแถวที่มีค่าที่ไม่ตรงกับสคีมา ระบบจะไม่สนใจค่าที่ไม่รู้จัก ค่าเริ่มต้น
คือ false |
skipInvalidRows |
บูลีน | หากตั้งค่าเป็น true ให้แทรกแถวที่ถูกต้องทั้งหมดของคำขอ
แม้ว่าจะมีแถวที่ไม่ถูกต้องอยู่ก็ตาม ค่าเริ่มต้นคือ false |
ข้อผิดพลาด "ไม่พบโมดูล" หมายความว่าคอนเทนเนอร์ฝั่งเซิร์ฟเวอร์ของคุณน่าจะใช้ อิมเมจเวอร์ชันเก่าของเราที่ยังไม่มีโมดูล BigQuery โปรดทําให้คอนเทนเนอร์เซิร์ฟเวอร์ใช้งานได้อีกครั้งด้วยการตั้งค่าเดิมโดยใช้สคริปต์การติดตั้งใช้งานของเรา ระบบจะรวมโมดูลโดยอัตโนมัติเมื่อการดำเนินการเสร็จสิ้น
โดยปกติแล้ว ข้อผิดพลาดที่ไม่ใช่การแทรกจะมีออบเจ็กต์ข้อผิดพลาด 1 รายการที่มีคีย์ reason
[{reason: 'invalid'}]
ข้อผิดพลาดในการแทรกอาจมีออบเจ็กต์ข้อผิดพลาดหลายรายการที่มีerrorsอาร์เรย์
และออบเจ็กต์row ตัวอย่างต่อไปนี้คือการตอบกลับข้อผิดพลาดจากการ
แทรก 2 แถวที่มีข้อผิดพลาดเพียงแถวเดียว
[
{
"errors": [
{
"reason":"invalid"
}
],
"row": {
"string_col":"otherString",
"number_col":-3,
"bool_col":3
}
},
{
"errors": [
{
"reason":"stopped"
}
],
"row": {
"string_col":"stringValue",
"number_col":5,
"bool_col:false
}
}
]
ตัวอย่าง
const BigQuery = require('BigQuery');
const connectionInfo = {
'projectId': 'gcp-cloud-project-id',
'datasetId': 'destination-dataset',
'tableId': 'destination-table',
};
const rows = [{
'column1': 'String1',
'column2': 1234,
}];
const options = {
'ignoreUnknownValues': true,
'skipInvalidRows': false,
};
BigQuery.insert(connectionInfo, rows, options)
.then(data.gtmOnSuccess, data.gtmOnFailure);
สิทธิ์ที่เชื่อมโยง
Firestore
แสดงผลออบเจ็กต์ที่มีฟังก์ชัน Firestore
API นี้รองรับเฉพาะ Firestore ในโหมดเนทีฟ ไม่รองรับ Firestore ในโหมด Datastore นอกจากนี้ API ยังรองรับเฉพาะการใช้ฐานข้อมูลเริ่มต้น
Firestore.read
ฟังก์ชัน Firestore.read จะอ่านข้อมูลจากเอกสาร Firestore และ
ส่งคืนสัญญาที่แปลงเป็นออบเจ็กต์ที่มีคีย์ 2 รายการ ได้แก่ id และ data หากไม่มีเอกสารอยู่จริง Promise จะปฏิเสธด้วยออบเจ็กต์ที่มีคีย์ reason เท่ากับ not_found
ไวยากรณ์
Firestore.read(path[, options]);
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
path |
สตริง | เส้นทางไปยังเอกสารหรือคอลเล็กชัน ต้องไม่ขึ้นต้นหรือลงท้ายด้วย "/" |
options |
object | ตัวเลือกคำขอไม่บังคับ ตัวเลือกที่รองรับมีดังนี้ projectId, disableCache และ transaction ระบบจะไม่สนใจคีย์ตัวเลือก ที่ไม่รู้จัก (ดูตัวเลือกด้านล่าง) |
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
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 นี้จะแสดงผล Promise ที่เปลี่ยนเป็นรหัสของ
เอกสารที่เพิ่มหรือแก้ไข หากใช้ตัวเลือกธุรกรรม API จะยังคง
แสดงผลสัญญา แต่จะไม่มีรหัสเนื่องจากมีการเขียนแบบเป็นกลุ่ม
ไวยากรณ์
Firestore.write(path, input[, options]);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
path |
สตริง | เส้นทางไปยังเอกสารหรือคอลเล็กชัน ต้องไม่ขึ้นต้นหรือลงท้ายด้วย "/" |
input |
object | ค่าที่จะเขียนลงในเอกสาร หากตั้งค่าตัวเลือกการผสาน API จะผสานคีย์จากอินพุตลงในเอกสาร |
options |
object | ตัวเลือกคำขอไม่บังคับ ตัวเลือกที่รองรับมีดังนี้ projectId, merge และ transaction ระบบจะไม่สนใจคีย์ตัวเลือกที่ไม่รู้จัก (ดูตัวเลือกด้านล่าง) |
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
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 จะค้นหาคอลเล็กชันที่ระบุและแสดงผล
Promise ที่เปลี่ยนเป็นอาร์เรย์ของเอกสาร Firestore ที่ตรงกับเงื่อนไขการค้นหา
ออบเจ็กต์เอกสาร Firestore จะเหมือนกับที่ระบุไว้ข้างต้นใน
Firestore.read หากไม่มีเอกสารที่ตรงกับเงื่อนไขการค้นหา
สัญญาที่แสดงผลจะเปลี่ยนเป็นอาร์เรย์ว่าง
ไวยากรณ์
Firestore.query(collection, queryConditions[, options]);
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
collection |
สตริง | เส้นทางไปยังคอลเล็กชัน ต้องไม่ขึ้นต้นหรือลงท้ายด้วย "/" |
queryConditions |
อาร์เรย์ | อาร์เรย์ของเงื่อนไขการค้นหา แต่ละคำค้นหาจะอยู่ในรูปแบบอาร์เรย์ที่มีค่า 3 ค่า ได้แก่ คีย์
โอเปอเรเตอร์ และexpectedValue เช่น
[[‘id’, ‘<’, ‘5’], [‘state’, ‘==’, ‘CA’]] ระบบจะรวมเงื่อนไขเข้าด้วยกันเพื่อสร้างผลการค้นหา โปรดดูรายการโอเปอเรเตอร์การค้นหาที่เข้ากันได้ใน โอเปอเรเตอร์การค้นหาของ Firestore |
options |
object | ตัวเลือกคำขอไม่บังคับ ตัวเลือกที่รองรับมีดังนี้ 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 |
number | ไม่บังคับ เปลี่ยนจำนวนผลลัพธ์สูงสุดที่คำค้นหาแสดงผล โดยค่าเริ่มต้นคือ 5 |
transaction |
สตริง | ไม่บังคับ ค่าที่ดึงมาจาก Firestore.runTransaction() ทำเครื่องหมายการดำเนินการที่จะใช้ภายใน ธุรกรรม |
ตัวอย่าง
const Firestore = require('Firestore');
const queries = const queries = [['id', '==', '5']];
return Firestore.query('collection', queries, {
projectId: 'gcp-cloud-project-id',
limit: 1,
}).then((documents) => documents[0].data.key, () => undefined);
Firestore.runTransaction
ฟังก์ชัน Firestore.runTransaction ช่วยให้ผู้ใช้สามารถอ่านและเขียนจาก Firestore ได้อย่างเป็นหน่วย
หากเกิดการเขียนพร้อมกันหรือธุรกรรมอื่น
ที่ขัดแย้งกัน ระบบจะลองทำธุรกรรมอีกครั้งสูงสุด 2 ครั้ง หากไม่สำเร็จหลังจากพยายามทั้งหมด 3 ครั้ง API จะปฏิเสธพร้อมข้อผิดพลาด API นี้จะแสดงผล
Promise ที่เปลี่ยนเป็นอาร์เรย์ของรหัสเอกสารสำหรับการดำเนินการเขียนแต่ละครั้ง
หากธุรกรรมสำเร็จ และจะปฏิเสธพร้อมข้อผิดพลาดหากไม่สำเร็จ
ไวยากรณ์
Firestore.runTransaction(callback[, options]);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
callback |
function | การเรียกกลับที่เรียกใช้ด้วยรหัสธุรกรรมสตริง คุณส่งรหัสธุรกรรมไปยังการเรียก API สำหรับการอ่าน/เขียน/ค้นหาได้ ฟังก์ชัน Callback นี้ต้องแสดงผล Promise การเรียกกลับอาจทำงานได้สูงสุด 3 ครั้งก่อนที่จะล้มเหลว |
options |
object | ตัวเลือกคำขอไม่บังคับ ตัวเลือกที่รองรับเพียงตัวเลือกเดียวคือ 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 (โดยปกติจะส่งโดยแท็ก) ระบบจะเรียกใช้
การเรียกกลับแบบซิงโครนัส ระบบจะเรียกใช้การเรียกกลับด้วยพารามิเตอร์ 2 รายการ ดังนี้
messageType:stringmessage:Object
หากเพิ่มการเรียกกลับในไคลเอ็นต์ การเรียกกลับจะได้รับข้อความใน
เหตุการณ์ทั้งหมดที่ไคลเอ็นต์สร้างขึ้น หาก 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 |
function | การเรียกกลับที่จะเรียกใช้เมื่อมีการส่งข้อความประเภทข้อความที่เกี่ยวข้อง หาก Callback ไม่ใช่ฟังก์ชัน API จะไม่ดำเนินการใดๆ |
ตัวอย่าง
const addMessageListener = require('addMessageListener');
const claimRequest = require('claimRequest');
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
claimRequest();
addMessageListener('send_pixel', (messageType, message) => {
// This will be run whenever a tag sends a 'send_pixel' message.
});
const events = extractEventsFromMpv1();
let eventsCompleted = 0;
events.forEach((event, i) => {
runContainer(events[i], /* onComplete= */ () => {
if (events.length === ++eventsCompleted) {
returnResponse();
}
}, /* onStart= */ (bindToEvent) => {
if (i === 0) {
bindToEvent(addMessageListener)('send_pixel', (messageType, message) => {
// This will be called whenever a tag for the first event sends a
// 'send_pixel' message.
});
}
});
});
สิทธิ์ที่เชื่อมโยง
ต้องได้รับสิทธิ์จาก use_message ต้องกำหนดค่าสิทธิ์เพื่ออนุญาต
อย่างน้อยดังนี้
- ประเภทข้อความที่มี
Usageเป็นlistenหรือlisten_and_send
hasMessageListener
แสดงค่าเป็นจริงหากมีการเพิ่ม Listener ของข้อความสำหรับประเภทข้อความที่ระบุ หากไม่ จะแสดงค่า "เท็จ"
ไวยากรณ์
const hasMessageListener = require('hasMessageListener');
hasMessageListener('send_pixel');
สิทธิ์ที่เชื่อมโยง
ไม่มี
sendMessage
ส่งข้อความประเภทที่ระบุไปยัง Listener ที่ลงทะเบียน ซึ่งใช้ เพื่อส่งข้อความจากแท็กกลับไปยังไคลเอ็นต์ที่เรียกใช้คอนเทนเนอร์ได้
ไวยากรณ์
const sendMessage = require('sendMessage');
sendMessage('send_pixel', {url: 'https://analytics.example.com/collect'});
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
messageType |
สตริง | ประเภทข้อความที่จะส่ง หากค่าไม่ใช่สตริง ระบบจะบังคับให้เป็นสตริง |
message |
object | ข้อความที่จะส่ง หากข้อความไม่ใช่ออบเจ็กต์ 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() จะแสดงผลออบเจ็กต์เดียวกันกับที่ส่งเข้ามา ระบบจะถือว่าอาร์กิวเมนต์ดั้งเดิมหรืออาร์กิวเมนต์ที่เป็นค่าว่างเป็น
ออบเจ็กต์ที่ตรึงไว้และจะแสดงผล
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 | any | ออบเจ็กต์ที่จะแจงนับคีย์ หากอินพุตไม่ใช่ออบเจ็กต์ ระบบจะบังคับให้เป็นออบเจ็กต์ |
Object.values
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
| objectInput | any | ออบเจ็กต์ที่จะแจงนับค่า หากอินพุตไม่ใช่ออบเจ็กต์ ระบบจะบังคับให้อินพุตเป็นออบเจ็กต์ |
Object.entries
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
| objectInput | any | ออบเจ็กต์ที่จะแจงนับคู่คีย์/ค่า หากอินพุตไม่ใช่ ออบเจ็กต์ ระบบจะบังคับให้อินพุตเป็นออบเจ็กต์ |
Object.freeze
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
| objectInput | any | ออบเจ็กต์ที่จะตรึง หากอินพุตไม่ใช่ออบเจ็กต์ ระบบจะถือว่าเป็นออบเจ็กต์ที่ตรึงไว้ |
Object.delete
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
| objectInput | any | ออบเจ็กต์ที่มีคีย์ที่จะลบ |
| 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
Promise มีฟังก์ชันการทำงานเทียบเท่ากับ Promise ของ JavaScript แต่ละอินสแตนซ์มี 3 วิธีที่ส่งคืน Promise ซึ่งอนุญาตให้ดำเนินการเพิ่มเติมเมื่อ Promise เสร็จสมบูรณ์
.then()- จัดการทั้งเคสที่แก้ไขแล้วและเคสที่ถูกปฏิเสธ โดยจะใช้ฟังก์ชันเรียกกลับ 2 รายการเป็นพารามิเตอร์ ได้แก่ ฟังก์ชันหนึ่งสำหรับกรณีที่สำเร็จและอีกฟังก์ชันหนึ่งสำหรับกรณีที่ล้มเหลว.catch()- จัดการเฉพาะเคสที่ถูกปฏิเสธ ใช้ Callback เป็น พารามิเตอร์.finally()- มีวิธีให้เรียกใช้โค้ดได้ไม่ว่า Promise จะได้รับการ แก้ไขหรือถูกปฏิเสธ ใช้ฟังก์ชันเรียกกลับ 1 รายการเป็นพารามิเตอร์ที่เรียกใช้โดยไม่มีอาร์กิวเมนต์
ตัวแปรที่แสดงผลพรอมิสจะเท่ากับค่าที่แก้ไขแล้วของพรอมิส หรือ
false หากพรอมิสปฏิเสธ
ตัวอย่าง
promise.then((resolvedValue) => {
// Handles when promise resolves.
}, (rejectedValue) => {
// Handles when promise rejects.
});
promise.catch((rejectedValue) => {
// Handles when promise rejects.
});
promise.finally(() => {
// Runs regardless of whether or not the previous promise resolves or
// rejects.
});
Promise.all
แสดงผล Promise ที่มีลักษณะอย่างใดอย่างหนึ่งต่อไปนี้
- จะแก้ไขเมื่ออินพุตทั้งหมดได้รับการแก้ไข หรือ
- ปฏิเสธเมื่ออินพุตใดก็ตามปฏิเสธ
ไวยากรณ์
Promise.all(inputs);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
inputs |
อาร์เรย์ | อาร์เรย์ของค่าหรือสัญญา หากอินพุตไม่ใช่ Promise ระบบจะส่งอินพุต ผ่านไปราวกับว่าเป็นค่าที่ Promise แก้ไขแล้ว แสดง ข้อผิดพลาดหากอินพุตไม่ใช่อาร์เรย์ |
ตัวอย่าง
const Promise = require('Promise');
const sendHttpGet = require('sendHttpGet');
return Promise.all(['a', sendHttpGet('https://example.com')])
.then((results) => {
// results will equal: ['a', {statusCode: 200, headers: {}, body: ''}]
});
สิทธิ์ที่เชื่อมโยง
ไม่มี
Promise.create
สร้าง Promise ที่เทียบเท่ากับ Promise ของ JavaScript
ไวยากรณ์
Promise.create(resolver);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
resolver |
function | ฟังก์ชันที่เรียกใช้พร้อมฟังก์ชัน 2 รายการ ได้แก่ resolve และ reject Promise ที่แสดงผลจะได้รับการแก้ไขหรือถูกปฏิเสธเมื่อมีการเรียกใช้พารามิเตอร์ที่เกี่ยวข้อง แสดงข้อผิดพลาดหากตัวแก้ไขไม่ใช่ฟังก์ชัน |
ตัวอย่าง
const Promise = require('Promise');
return Promise.create((resolve, reject) => {
// Do asynchronous work that eventually calls resolve() or reject()
});
สิทธิ์ที่เชื่อมโยง
ไม่มี
API การทดสอบ
API เหล่านี้ทำงานร่วมกับการทดสอบ JavaScript ที่แยกจากกันเพื่อสร้างการทดสอบสำหรับเทมเพลตที่กำหนดเองใน Google Tag Manager API สำหรับการทดสอบเหล่านี้ไม่จำเป็นต้องมีrequire()
ข้อความ [ดูข้อมูลเพิ่มเติมเกี่ยวกับการทดสอบเทมเพลตที่กำหนดเอง]
assertApi
แสดงผลออบเจ็กต์ Matcher ที่ใช้เพื่อยืนยันเกี่ยวกับ API ที่ระบุได้อย่างราบรื่น
ไวยากรณ์
assertApi(apiName)
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
apiName |
สตริง | ชื่อของ API ที่จะตรวจสอบ สตริงเดียวกับที่ส่งไปยัง
require()
|
Matchers
Subject.wasCalled()Subject.wasNotCalled()Subject.wasCalledWith(...expected)Subject.wasNotCalledWith(...expected)
ตัวอย่าง
assertApi('sendPixel').wasCalled();
assertApi('getUrl').wasNotCalled();
assertApi('makeNumber').wasCalledWith('8');
assertApi('setInWindow').wasNotCalledWith('myVar', 'theWrongValue');
assertThat
assertThat API ได้รับการออกแบบตามไลบรารี [Truth] ของ Google โดยจะแสดงผลออบเจ็กต์ที่ใช้เพื่อยืนยันค่าของออบเจ็กต์ได้อย่างราบรื่น การยืนยันที่ไม่สำเร็จจะหยุดการทดสอบทันทีและทำเครื่องหมายว่าไม่สำเร็จ อย่างไรก็ตาม
การทดสอบหนึ่งไม่สำเร็จจะไม่ส่งผลต่อกรณีทดสอบอื่นๆ
ไวยากรณ์
assertThat(actual, opt_message)
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
actual |
any | ค่าที่จะใช้ในการตรวจสอบที่ราบรื่น |
opt_message |
สตริง | ข้อความที่ไม่บังคับที่จะพิมพ์หากการยืนยันไม่สำเร็จ |
Matchers
| Matcher | คำอธิบาย |
|---|---|
isUndefined() |
ยืนยันว่าเรื่องคือ undefined |
isDefined() |
ยืนยันว่าเรื่องนี้ไม่ใช่ undefined |
isNull() |
ยืนยันว่าเรื่องคือ null |
isNotNull() |
ยืนยันว่าเรื่องนี้ไม่ใช่ null |
isFalse() |
ยืนยันว่าเรื่องคือ false |
isTrue() |
ยืนยันว่าเรื่องคือ true |
isFalsy() |
ยืนยันว่าออบเจ็กต์เป็นเท็จ ค่าที่ถือว่าเป็นเท็จ ได้แก่
undefined, null, false,
NaN, 0 และ "" (สตริงว่าง) |
isTruthy() |
ยืนยันว่าออบเจ็กต์เป็นค่าที่ถือว่าเป็นจริง ค่าที่ถือว่าเป็นเท็จ ได้แก่
undefined, null, false,
NaN, 0 และ "" (สตริงว่าง) |
isNaN() |
ยืนยันว่าเรื่องคือค่า NaN |
isNotNaN() |
ยืนยันว่าออบเจ็กต์เป็นค่าใดก็ได้นอกเหนือจาก NaN |
isInfinity() |
ยืนยันว่าเรื่องเป็นอนันต์บวกหรือลบ |
isNotInfinity() |
ยืนยันว่าเรื่องนี้เป็นค่าใดก็ได้นอกเหนือจากค่าบวกหรือค่าลบ อนันต์ |
isEqualTo(expected) |
ยืนยันว่าเรื่องเท่ากับค่าที่กำหนด นี่คือการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบการอ้างอิง เนื้อหาของออบเจ็กต์และอาร์เรย์ จะได้รับการเปรียบเทียบแบบเรียกซ้ำ |
isNotEqualTo(expected) |
ยืนยันว่าเรื่องไม่เท่ากับค่าที่กำหนด นี่คือ การเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบการอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์แบบเรียกซ้ำ |
isAnyOf(...expected) |
ยืนยันว่าเรื่องเท่ากับค่าใดค่าหนึ่งที่ระบุ นี่คือ การเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบการอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์แบบเรียกซ้ำ |
isNoneOf(...expected) |
ยืนยันว่าเรื่องไม่เท่ากับค่าที่ระบุ นี่ คือการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบการอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์ และอาร์เรย์แบบเรียกซ้ำ |
isStrictlyEqualTo(expected) |
ยืนยันว่าเรื่องเท่ากับ (===) ค่าที่ระบุอย่างเคร่งครัด
|
isNotStrictlyEqualTo(expected) |
ยืนยันว่าเรื่องไม่เท่ากับ (!==) ค่าที่ระบุอย่างเคร่งครัด
|
isGreaterThan(expected) |
ยืนยันว่าเรื่องนั้นมากกว่า (>) ค่าที่ระบุ
ในการเปรียบเทียบที่เรียงลำดับ |
isGreaterThanOrEqualTo(expected) |
ยืนยันว่าออบเจ็กต์มากกว่าหรือเท่ากับ
(>=) ค่าที่ระบุในการเปรียบเทียบตามลำดับ |
isLessThan(expected) |
ยืนยันว่าเรื่องน้อยกว่า (<) ค่าที่ระบุ
ในการเปรียบเทียบที่เรียงลำดับ |
isLessThanOrEqualTo(expected) |
ยืนยันว่าเรื่องน้อยกว่าหรือเท่ากับ (<=)
ค่าที่ระบุในการเปรียบเทียบที่เรียงลำดับ |
contains(...expected) |
ยืนยันว่าออบเจ็กต์เป็นอาร์เรย์หรือสตริงที่มีค่าที่ระบุทั้งหมดตามลำดับใดก็ได้ ของค่าที่ระบุ นี่เป็นการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบ การอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์ แบบเรียกซ้ำ |
doesNotContain(...expected) |
ยืนยันว่าเรื่องเป็นอาร์เรย์หรือสตริงที่ไม่มีค่าที่กำหนด นี่เป็นการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบการอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์แบบเรียกซ้ำ |
containsExactly(...expected) |
ยืนยันว่าออบเจ็กต์เป็นอาร์เรย์ที่มีค่าที่ระบุทั้งหมด ตามลำดับใดก็ได้ และไม่มีค่าอื่นๆ นี่เป็นการเปรียบเทียบค่า ไม่ใช่ การเปรียบเทียบการอ้างอิง ระบบจะเปรียบเทียบเนื้อหาของออบเจ็กต์และอาร์เรย์ แบบเรียกซ้ำ |
doesNotContainExactly(...expected) |
ยืนยันว่าออบเจ็กต์เป็นอาร์เรย์ที่มีชุดค่าที่แตกต่างกัน จากค่าที่ระบุในลำดับใดก็ได้ นี่คือการเปรียบเทียบค่า ไม่ใช่การเปรียบเทียบการอ้างอิง เนื้อหาของออบเจ็กต์และอาร์เรย์จะ ได้รับการเปรียบเทียบแบบเรียกซ้ำ |
hasLength(expected) |
ยืนยันว่าออบเจ็กต์เป็นอาร์เรย์หรือสตริงที่มีความยาวที่ระบุ การยืนยันจะล้มเหลวเสมอหากค่าไม่ใช่อาร์เรย์หรือสตริง |
isEmpty() |
ยืนยันว่าเรื่องเป็นอาร์เรย์หรือสตริงที่ว่างเปล่า (ความยาว = 0) การยืนยันจะล้มเหลวเสมอหากค่าไม่ใช่อาร์เรย์หรือ สตริง |
isNotEmpty() |
ยืนยันว่าเรื่องเป็นอาร์เรย์หรือสตริงที่ไม่ว่าง (ความยาว > 0) การยืนยันจะล้มเหลวเสมอหากค่าไม่ใช่อาร์เรย์ หรือสตริง |
isArray() |
ยืนยันว่าประเภทของ Subject เป็นอาร์เรย์ |
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 |
any | ค่าที่จะแสดงผลสำหรับ API หรือฟังก์ชันที่เรียกใช้แทน API หาก returnValue เป็นฟังก์ชัน ระบบจะเรียกใช้ฟังก์ชันนั้นแทน Sandboxed API หาก returnValue เป็นอย่างอื่นที่ไม่ใช่ฟังก์ชัน ระบบจะแสดงค่าดังกล่าวแทน Sandboxed API |
ตัวอย่าง
mock('encodeUri', "https://endpoint.example.com/?account=12345");
mock('sendPixel', function(url, onSuccess, onFailure) {
onSuccess();
});
mockObject
mockObject API ช่วยให้คุณลบล้างลักษณะการทำงานของ Sandboxed API ที่
แสดงผลออบเจ็กต์ได้ API นี้ปลอดภัยที่จะใช้ในโค้ดเทมเพลต แต่จะใช้งานได้ในโหมดทดสอบเท่านั้น ระบบจะรีเซ็ตการจำลองก่อนเรียกใช้การทดสอบแต่ละครั้ง
ไวยากรณ์
mockObject(apiName, objectMock);
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
apiName |
สตริง | ชื่อของ API ที่จะจำลอง สตริงเดียวกับที่ส่งไปยัง
require() |
objectMock |
object | ค่าที่จะแสดงผลสำหรับ API หรือฟังก์ชันที่เรียกใช้แทน API ต้องเป็นออบเจ็กต์ |
ตัวอย่าง
const storage = {};
let firestoreId = 1;
function asTestPromise(result) {
return {
then: (callback) => callback(result)
};
}
mockObject('Firestore', {
write: (collection, input) => {
storage[collection + '/' + (++firestoreId)] = input;
return asTestPromise(firestoreId);
},
read: (document) => asTestPromise({data: storage[document]})
});
runCode
เรียกใช้โค้ดสำหรับเทมเพลต ซึ่งก็คือเนื้อหาของแท็บโค้ด ในสภาพแวดล้อมการทดสอบปัจจุบันด้วยออบเจ็กต์ข้อมูลอินพุตที่ระบุ
ไวยากรณ์
runCode(data)
พารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
data |
object | ออบเจ็กต์ข้อมูลที่จะใช้ในการทดสอบ |
ค่าที่ส่งคืน
แสดงค่าของตัวแปรสำหรับเทมเพลตตัวแปร และแสดง undefined สำหรับ
เทมเพลตประเภทอื่นๆ ทั้งหมด
ตัวอย่าง
runCode({field1: 123, field2: 'value'});