Tài liệu này trình bày các API để gắn thẻ phía máy chủ.
addEventCallback
Đăng ký một hàm callback sẽ được gọi ở cuối sự kiện. Chiến lược phát hành đĩa đơn lệnh gọi lại sẽ được gọi khi tất cả các thẻ cho sự kiện đã được thực thi. Chiến lược phát hành đĩa đơn lệnh gọi lại được truyền hai giá trị: id của vùng chứa gọi hàm và một đối tượng chứa thông tin về sự kiện đó.
Khi được sử dụng trong một thẻ, API này sẽ được liên kết với sự kiện hiện tại. Khi việc này
API được sử dụng trong một ứng dụng, phải được liên kết với một sự kiện cụ thể bằng cách sử dụng
Hàm bindToEvent
của API runContainer
. Xem
ví dụ để biết thêm chi tiết.
Cú pháp
const addEventCallback = require('addEventCallback');
addEventCallback((containerId, eventData) => {
// Take some action based on the event data.
});
Tham số
Thông số | Loại | Mô tả |
---|---|---|
callback |
hàm | Hàm gọi khi kết thúc sự kiện. |
Đối tượng eventData
chứa dữ liệu sau:
Tên khóa | Loại | Mô tả |
---|---|---|
tags |
Mảng |
Một mảng gồm các đối tượng dữ liệu thẻ. Tất cả các thẻ được kích hoạt trong sự kiện
sẽ có một mục trong mảng này. Đối tượng dữ liệu thẻ chứa
mã nhận dạng của thẻ (id ), trạng thái thực thi của thẻ
(status ) và thời gian thực thi
(executionTime ). Dữ liệu thẻ cũng sẽ bao gồm
siêu dữ liệu thẻ đã được định cấu hình trên thẻ.
|
Trong một ứng dụng:
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();
}
});
});
Trong một thẻ:
const addEventCallback = require('addEventCallback');
addEventCallback((containerId, eventData) => {
// This will be called at the end of the current event.
});
Các quyền được liên kết
callLater
Lên lịch cho lệnh gọi đến một hàm diễn ra không đồng bộ. Chức năng này sẽ là
được gọi sau khi mã hiện tại trả về. Điều này tương đương với
setTimeout(<function>, 0)
.
Ví dụ
const callLater = require('callLater');
const logToConsole = require('logToConsole');
callLater(() => {
logToConsole('Logged asynchronously');
});
Cú pháp
callLater(function)
Tham số
Thông số | Loại | Mô tả |
---|---|---|
function |
hàm | Hàm cần gọi. |
Các quyền được liên kết
Không có.
claimRequest
Hãy dùng API này trong một ứng dụng để xác nhận yêu cầu. Sau khi một yêu cầu được xác nhận, vùng chứa không chạy ứng dụng bổ sung.
API này gửi ra một trường hợp ngoại lệ nếu được gọi trong một thẻ hoặc biến. API này gửi một
ngoại lệ nếu được gọi sau khi ứng dụng trả về (ví dụ: nếu được gọi trong chế độ không đồng bộ
lệnh gọi lại như trong callLater
hoặc hàm onComplete
runContainer
).
Ứng dụng nên xác nhận yêu cầu bằng API này trước khi gọi
API runContainer
.
Ví dụ
const claimRequest = require('claimRequest');
claimRequest();
Cú pháp
claimRequest();
Các quyền được liên kết
Không có.
computeEffectiveTldPlusOne
Trả về miền cấp cao nhất có hiệu lực + 1 (eTLD+1) của miền hoặc URL đã cho. eTLD+1 được tính toán bằng cách đánh giá miền theo Danh sách hậu tố công khai quy tắc. eTLD+1 thường là miền cấp cao nhất mà bạn có thể đặt cookie.
Nếu đối số rỗng hoặc không xác định, thì giá trị đối số sẽ được trả về không thay đổi. Nếu không, đối số sẽ bị buộc thành một chuỗi. Nếu đối số không một miền hoặc URL hợp lệ, thì hệ thống sẽ trả về một chuỗi trống. Nếu máy chủ không thể để tìm nạp danh sách hậu tố công khai, thì giá trị đối số được trả về không thay đổi.
Ví dụ
const computeEffectiveTldPlusOne = require('computeEffectiveTldPlusOne');
// Returns 'example.co.uk'
computeEffectiveTldPlusOne('analytics.example.co.uk');
// Returns 'example.co.uk'
computeEffectiveTldPlusOne('https://analytics.example.co.uk/path');
Cú pháp
computeEffectiveTldPlusOne(domainOrUrl);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
domainOrUrl |
string | Một miền hoặc URL mà dựa vào đó để tính eTLD+1. |
Các quyền được liên kết
Không có.
createRegex
Tạo một thực thể biểu thức chính quy mới và trả về phiên bản được gói trong một đối tượng. Bạn không thể
trực tiếp truy cập vào biểu thức chính quy. Tuy nhiên, bạn có thể truyền mã này vào API testRegex
,
String.replace()
, String.match()
và String.search()
.
Trả về null
nếu biểu thức chính quy không hợp lệ hoặc Re2 không hoạt động trên máy chủ.
API này sử dụng Re2 trong quá trình triển khai. Hình ảnh Docker của máy chủ phải ở phiên bản 2.0.0 trở lên.
Ví dụ
const createRegex = require('createRegex');
const domainRegex = createRegex('\\w+\\.com', 'i');
// Returns '/foobar'
'example.com/foobar'.replace(domainRegex, '');
Cú pháp
createRegex(pattern, flags);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
pattern |
string | Văn bản của biểu thức chính quy. |
flags |
string | Một chuỗi không bắt buộc chứa các cờ cho biểu thức chính quy đang được tạo. "g" (toàn cầu) và "i" (không phân biệt chữ hoa chữ thường) được hỗ trợ. Tất cả các nhân vật khác là đã im lặng bỏ qua. |
Các quyền được liên kết
Không có.
Phiên bản hình ảnh tối thiểu
decodeUri
Giải mã mọi ký tự đã mã hoá trong URI được cung cấp. Trả về một chuỗi
biểu thị URI được giải mã. Trả về undefined
khi được cung cấp với giá trị không hợp lệ
đầu vào.
Ví dụ
const decodeUri = require('decodeUri');
const decodedUrl = decodeUri(data.encodedUrl);
if (decodedUrl) {
// ...
}
Cú pháp
decodeUri(encoded_uri);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
encoded_uri |
string |
URI đã được mã hoá bằng
encodeUri() hoặc bằng các cách khác.
|
Các quyền được liên kết
Không có.
decodeUriComponent
Giải mã mọi ký tự đã mã hoá trong thành phần URI được cung cấp. Trả về a
chuỗi đại diện cho thành phần URI được giải mã. Trả về undefined
khi
đã cung cấp thông tin đầu vào không hợp lệ.
Ví dụ
const decodeUriComponent = require('decodeUriComponent');
const decodedQuery = decodeUriComponent(data.query);
if (decodedQuery) {
// ...
}
Cú pháp
decodeUriComponent(encoded_uri_component);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
encoded_uri_component |
string |
Một thành phần URI đã được mã hoá bằng
encodeUriComponent()
hoặc bằng các cách khác.
|
Các quyền được liên kết
Không có.
encodeUri
Trả về Giá trị nhận dạng tài nguyên đồng nhất (URI) được mã hoá bằng cách thoát đặc biệt ký tự. Trả về một chuỗi đại diện cho chuỗi đã cung cấp đã mã hoá dưới dạng URI.
Ví dụ
const encodeUri = require('encodeUri');
const sendHttpGet = require('sendHttpGet');
sendHttpGet('https://www.example.com/' + encodeUri(pathInput));
Cú pháp
encodeUri(uri);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
uri |
string | Một URI hoàn chỉnh. |
Các quyền được liên kết
Không có.
encodeUriComponent
Trả về Giá trị nhận dạng tài nguyên đồng nhất (URI) được mã hoá bằng cách thoát đặc biệt ký tự. Trả về một chuỗi đại diện cho chuỗi đã cung cấp được mã hoá dưới dạng URI.
Ví dụ
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
sendHttpGet('https://www.example.com/?' + encodeUriComponent(queryInput));
Cú pháp
encodeUriComponent(str);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
str |
string | Một thành phần của URI. |
Các quyền được liên kết
Không có.
extractEventsFromMpv1
Chuyển yêu cầu Measurement Protocol phiên bản 1 đến thành danh sách các sự kiện trong Định dạng giản đồ hợp nhất. Trả về danh sách sự kiện đã trích xuất. Gửi thông báo lỗi nếu yêu cầu không ở định dạng chính xác.
Ví dụ
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.
}
}
Cú pháp
extractEventsFromMpv1();
Các quyền được liên kết
Cần có quyền read_request
. Quyền phải được định cấu hình thành
cho phép truy cập vào ít nhất:
body
query parameters
extractEventsFromMpv2
Chuyển yêu cầu Measurement Protocol phiên bản 2 đến thành danh sách các sự kiện trong Định dạng giản đồ hợp nhất. Trả về danh sách sự kiện đã trích xuất. Gửi thông báo lỗi nếu yêu cầu không ở định dạng chính xác.
Ví dụ
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.
}
}
Cú pháp
extractEventsFromMpv2();
Các quyền được liên kết
Cần có quyền read_request
. Quyền phải được định cấu hình thành
cho phép truy cập vào ít nhất:
body
query parameters
fromBase64
Giải mã một chuỗi được mã hoá base64. Trả về undefined
nếu giá trị nhập vào không hợp lệ.
Cú pháp
fromBase64(base64EncodedString);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
base64EncodedString |
string | Chuỗi mã hóa Base64. |
Ví dụ
const fromBase64 = require('fromBase64');
const greeting = fromBase64('aGVsbG8=');
if (greeting === 'hello') {
// ...
}
Các quyền được liên kết
Không có.
generateRandom
Trả về số (số nguyên) ngẫu nhiên trong dải ô cho trước.
Ví dụ
const generateRandom = require('generateRandom');
const randomValue = generateRandom(0, 10000000);
Cú pháp
generateRandom(min, max);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
min |
số | Giá trị tiềm năng nhỏ nhất của số nguyên được trả về (bao gồm cả giá trị này). |
max |
số | Giá trị tiềm năng lớn nhất của số nguyên được trả về (bao gồm cả giá trị này). |
Các quyền được liên kết
Không có.
getAllEventData
Trả về bản sao của dữ liệu sự kiện.
Cú pháp
getAllEventData();
Các quyền được liên kết
getClientName
Trả về một chuỗi chứa tên của ứng dụng hiện tại.
Cú pháp
getClientName();
Các quyền được liên kết
getContainerVersion
Trả về một đối tượng chứa dữ liệu về vùng chứa hiện tại. Được trả về đối tượng sẽ có các trường sau:
{
containerId: string,
debugMode: boolean,
environmentName: string,
environmentMode: boolean,
previewMode: boolean,
version: string,
}
Ví dụ
const getContainerVersion = require('getContainerVersion');
const containerVersion = getContainerVersion();
const containerId = containerVersion['containerId'];
const isDebug = containerVersion['debugMode'];
Cú pháp
getContainerVersion();
Các quyền được liên kết
getCookieValues
Trả về một mảng chứa giá trị của tất cả cookie có tên cho sẵn.
Ví dụ
const getCookieValues = require('getCookieValues');
const lastVisit = getCookieValues('lastVisit')[0];
if (lastVisit) {
// ...
}
Cú pháp
getCookieValues(name[, noDecode]);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
name |
string | Tên của cookie. |
noDecode |
boolean |
Nếu là true , giá trị cookie sẽ không được giải mã trước khi được
bị trả lại. Giá trị mặc định là false .
|
Các quyền được liên kết
getEventData
Trả về bản sao của giá trị tại đường dẫn đã cho trong dữ liệu sự kiện. Trả lại hàng
undefined
nếu không có dữ liệu sự kiện hoặc không có giá trị tại đường dẫn đã cho.
Ví dụ
const getEventData = require('getEventData');
const campaignId = getEventData('campaign.id');
const itemId = getEventData('items.0.id');
const referrer = getEventData('page_referrer');
Tham số
Thông số | Loại | Mô tả |
---|---|---|
keyPath |
bất kỳ |
Đường dẫn của khóa, trong đó các thành phần đường dẫn được phân tách bằng dấu chấm. Chiến lược phát hành đĩa đơn
thành phần của đường dẫn có thể là các khoá trong một đối tượng hoặc chỉ mục trong mảng. Nếu
keyPath không phải là một chuỗi, nó bị buộc thành một chuỗi.
|
Cú pháp
getEventData(keyPath);
Các quyền được liên kết
getGoogleAuth
Trả về đối tượng uỷ quyền khi được dùng với
sendHttpGet
hoặc sendHttpRequest
, sẽ
bao gồm tiêu đề uỷ quyền cho Google Cloud API. API này sử dụng
Thông tin xác thực mặc định của ứng dụng để tự động tìm thông tin xác thực từ
môi trường máy chủ.
Ví dụ
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();
}
});
Cú pháp
getGoogleAuth(scopes);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
scopes
|
Mảng | Một mảng phạm vi API Google OAuth 2.0 để yêu cầu quyền truy cập. |
Các quyền được liên kết
Cần có quyền use_google_credentials
. Quyền phải
được định cấu hình với một hoặc nhiều phạm vi được phép.
getGoogleScript
Truy xuất tài nguyên từ một tập hợp tập lệnh Google định sẵn rồi trả về một hứa hẹn với tập lệnh và siêu dữ liệu liên quan được lưu vào bộ nhớ đệm.
Lời hứa này sẽ phân giải cho một đối tượng chứa 2 khoá: script
và
metadata
. Nếu yêu cầu không thành công, lời hứa sẽ từ chối bằng khoá reason
.
Đối tượng metadata
sẽ chứa siêu dữ liệu lưu vào bộ nhớ đệm sau đây dựa trên
tiêu đề phản hồi tài nguyên; mỗi trường sẽ chỉ hiển thị nếu
tiêu đề có trong phản hồi tài nguyên.
{
'cache-control': string,
'expires': string,
'last-modified': string,
}
Ví dụ
const getGoogleScript = require('getGoogleScript');
getGoogleScript('ANALYTICS').then((result) => {
// Operate on result.script and result.metadata here.
});
Cú pháp
getGoogleScript(script[, options]);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
script |
string |
Tên của tập lệnh. Các chữ viết được hỗ trợ sau đây là
'ANALYTICS' , 'GTAG' và
'GTM' .'ANALYTICS'
tìm nạp tập lệnh Google Analytics từ
https://www.google-analytics.com/analytics.js .Lựa chọn 'GTAG' tìm nạp thẻ toàn trang web (gtag.js)
tập lệnh của https://www.googletagmanager.com/gtag/js .Tuỳ chọn 'GTM' tìm nạp Trình quản lý thẻ của Google
tập lệnh của https://www.googletagmanager.com/gtm.js .
|
options |
đối tượng | Tuỳ chọn yêu cầu không bắt buộc. Hãy xem phần bên dưới để biết các lựa chọn được hỗ trợ. |
Lựa chọn
Phương thức | Loại | Mô tả |
---|---|---|
id |
string |
Áp dụng cho 'GTAG' có mã đo lường gtag và
'GTM' với mã vùng chứa trên web (ví dụ: GTM-XXXX).
|
debug |
bất kỳ | Nếu chính xác, hãy yêu cầu và trả về phiên bản gỡ lỗi của phép đo tập lệnh. |
timeout |
số |
Thời gian chờ yêu cầu tính bằng mili giây; bỏ qua các giá trị không dương. Nếu
yêu cầu hết giờ, lệnh gọi lại sẽ được gọi bằng
undefined cho giá trị tập lệnh và {} cho giá trị tập lệnh
đối tượng siêu dữ liệu.
|
Các phím tuỳ chọn không nhận dạng được sẽ bị bỏ qua.
Các quyền được liên kết
Cần có quyền send_http
. Bạn phải định cấu hình quyền này để cho phép
quyền truy cập vào ít nhất:
- Cho phép Google Domains
getRemoteAddress
Trả về một chuỗi biểu thị địa chỉ IP trong yêu cầu
bắt nguồn, ví dụ: 12.345.67.890
cho IPv4 hoặc 2001:0db8:85a3:0:0:8a2e:0370:7334
cho IPv6, bằng cách đọc tiêu đề của yêu cầu như được chuyển tiếp và X-Forwarded-For.
Lưu ý: API này sẽ cố gắng hết sức để khám phá IP ban đầu, nhưng
thì không thể đảm bảo rằng kết quả là chính xác.
Cú pháp
getRemoteAddress();
Các quyền được liên kết
Cần có quyền read_request
. Quyền phải được định cấu hình thành
cho phép truy cập vào ít nhất:
- Tiêu đề
Forwarded
vàX-Forwarded-For
- Địa chỉ IP từ xa
getRequestBody
Trả về nội dung yêu cầu dưới dạng chuỗi, nếu có hoặc undefined
nếu không.
Cú pháp
getRequestBody();
Các quyền được liên kết
getRequestHeader
Trả về giá trị của tiêu đề yêu cầu đã đặt tên dưới dạng chuỗi (nếu có) hoặc
undefined
. Nếu tiêu đề lặp lại, thì các giá trị trả về sẽ được kết hợp
cùng với ', '
.
Ví dụ
const getRequestHeader = require('getRequestHeader');
const host = getRequestHeader('host');
Cú pháp
getRequestHeader(headerName);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
headerName |
string | Tên tiêu đề. Giá trị này không phân biệt chữ hoa chữ thường. |
Các quyền được liên kết
getRequestMethod
Trả về phương thức yêu cầu, ví dụ: 'GET'
hoặc 'POST'
, dưới dạng chuỗi.
Ví dụ
const getRequestMethod = require('getRequestMethod');
if (getRequestMethod() === 'POST') {
// Handle the POST request here.
}
Cú pháp
getRequestMethod();
Các quyền được liên kết
Không có.
getRequestPath
Trả về đường dẫn yêu cầu không có chuỗi truy vấn. Ví dụ: nếu URL là
'/foo?id=123'
, giá trị này sẽ trả về '/foo'
. Tự động xoá Máy chủ
vùng chứa khỏi đường dẫn. Ví dụ: nếu URL vùng chứa phía máy chủ là
https://example.com/analytics
và đường dẫn yêu cầu là '/analytics/foo'
, đây là
trả về '/foo'
.
Ví dụ
const getRequestPath = require('getRequestPath');
const requestPath = getRequestPath();
if (requestPath === '/') {
// Handle a request for the root path.
}
Cú pháp
getRequestPath();
Các quyền được liên kết
getRequestQueryParameter
Trả về giá trị đã giải mã của tham số chuỗi truy vấn được đặt tên dưới dạng chuỗi,
hoặc undefined
nếu không có tham số. Nếu tham số lặp lại trong
chuỗi truy vấn, giá trị đầu tiên xuất hiện trong chuỗi truy vấn sẽ là
đã trả lại.
Ví dụ
const getRequestQueryParameter = require('getRequestQueryParameter');
const query = getRequestQueryParameter('query');
if (query) {
// Process query here.
}
Cú pháp
getRequestQueryParameter(name);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
name |
string | Tên tham số truy vấn. |
Các quyền được liên kết
getRequestQueryParameters
Trả về tham số truy vấn của yêu cầu HTTP đến dưới dạng một đối tượng ánh xạ tên tham số truy vấn thành giá trị hoặc các giá trị tương ứng. Tên thông số và giá trị đều được giải mã.
Ví dụ
const getRequestQueryParameters = require('getRequestQueryParameters');
const queryParameters = getRequestQueryParameters();
if (queryParameters['search']) {
// Handle the search query here.
const maxResults = queryParameters['max_results'];
}
Cú pháp
getRequestQueryParameters();
Các quyền được liên kết
getRequestQueryString
Trả về truy vấn yêu cầu dưới dạng một chuỗi, không có dấu chấm hỏi ở đầu hoặc một chuỗi trống nếu URL yêu cầu không bao gồm chuỗi truy vấn.
Ví dụ
const getRequestQueryString = require('getRequestQueryString');
const queryString = getRequestQueryString();
if (queryString !== '') {
// Handle the query string.
}
Cú pháp
getRequestQueryString();
Các quyền được liên kết
getTimestamp
Không dùng nữa. Ưu tiên getTimestampMillis.
Trả về number biểu thị thời gian hiện tại tính bằng mili giây kể từ Unix
thời gian bắt đầu của hệ thống, được Date.now()
trả về.
Cú pháp
getTimestamp();
Các quyền được liên kết
Không có.
getTimestampMillis
Trả về number biểu thị thời gian hiện tại tính bằng mili giây kể từ Unix
thời gian bắt đầu của hệ thống, được Date.now()
trả về.
Cú pháp
getTimestampMillis();
Các quyền được liên kết
Không có.
getType
Trả về một chuỗi mô tả loại của giá trị đã cho.
Loại đầu vào | Giá trị trả về |
---|---|
string | 'string' |
số | 'number' |
boolean | 'boolean' |
rỗng | 'null' |
không xác định | 'undefined' |
Mảng | 'array' |
Đối tượng | 'object' |
Chức năng | 'function' |
Ví dụ
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);
}
Cú pháp
getType(value);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
value |
bất kỳ | Giá trị nhập. |
Các quyền được liên kết
Không có.
hmacSha256
Tính toán chữ ký được mã hoá bằng cách sử dụng Xác thực thư dựa trên hàm băm
Mã (HMAC) có SHA-256. Giá trị mặc định là mã hoá base64url
.
Để sử dụng API này, hãy đặt biến môi trường SGTM_CREDENTIALS
trên máy chủ
đến đường dẫn của tệp khoá JSON được mã hoá UTF-8 có định dạng sau:
{
"key1": "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5",
"key2": "OTg3NjU0MzIxMHp5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2Jh",
...
}
Các giá trị là các khoá HMAC được mã hoá base64.
Ví dụ
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;
Cú pháp
hmacSha256(data, keyId, options)
Tham số
Thông số | Loại | Mô tả |
---|---|---|
data |
string | Dữ liệu để tính toán giá trị HMAC. |
keyId
|
string | Mã khoá từ tệp khoá JSON tham chiếu đến để sử dụng. |
options
|
đối tượng | Không bắt buộc Cấu hình API. (Xem Các tuỳ chọn ở bên dưới.) |
Lựa chọn
Phương thức | Loại | Mô tả |
---|---|---|
outputEncoding
|
string | Chỉ định định dạng mã hoá cho
giá trị trả về. Các định dạng được hỗ trợ là hex ,
base64 hoặc base64url . Mặc định là
base64url nếu không được chỉ định. |
Các quyền được liên kết
Phiên bản hình ảnh tối thiểu
isRequestMpv1
Trả về true
nếu yêu cầu đến là yêu cầu Measurement Protocol phiên bản 1, hoặc
false
nếu không.
Ví dụ
const isRequestMpv1 = require('isRequestMpv1');
if (isRequestMpv1()) {
// Handle Measurement Protocol V1 request.
const events = extractEventsFromMpv1();
}
Cú pháp
isRequestMpv1();
Các quyền được liên kết
Không có.
isRequestMpv2
Trả về true
nếu yêu cầu đến là yêu cầu Measurement Protocol V2, hoặc
false
nếu không.
Ví dụ
const isRequestMpv2 = require('isRequestMpv2');
if (isRequestMpv2()) {
// Handle Measurement Protocol V2 request.
const events = extractEventsFromMpv2();
}
Cú pháp
isRequestMpv2();
Các quyền được liên kết
Không có.
logToConsole
Ghi nhật ký(các) đối số vào bảng điều khiển.
Bạn có thể xem các nhật ký này trong Trình khám phá nhật ký trên Google Cloud Console.
Từ Trình khám phá nhật ký, hãy chạy truy vấn logName =~ "stdout"
để xem các mục nhập nhật ký
do API này tạo.
Ví dụ
const logToConsole = require('logToConsole');
const that = 123;
const those = { ... };
logToConsole('that is: ', that, ' and those is: ', those);
Cú pháp
logToConsole(argument1[, argument2, ...]);
Tham số
API sẽ nhận một hoặc nhiều đối số, mỗi đối số sẽ được chuyển đổi thành một chuỗi nếu cần thiết và đã đăng nhập vào bảng điều khiển.
Các quyền được liên kết
makeInteger
Chuyển đổi giá trị đã cho thành số (số nguyên).
Cú pháp
makeInteger(value);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
value |
loại bất kỳ | Giá trị cần chuyển đổi. |
Các quyền được liên kết
Không có.
makeNumber
Chuyển đổi giá trị đã cho thành số.
Cú pháp
makeNumber(value);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
value |
loại bất kỳ | Giá trị cần chuyển đổi. |
Các quyền được liên kết
Không có.
makeString
Trả về giá trị đã cho dưới dạng chuỗi.
Cú pháp
makeString(value);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
value |
loại bất kỳ | Giá trị cần chuyển đổi. |
Các quyền được liên kết
Không có.
makeTableMap
Chuyển đổi một đối tượng bảng đơn giản có 2 cột thành Map
. Thông tin này dùng để
thay đổi trường mẫu SIMPLE_TABLE
có hai cột thành trường dễ quản lý hơn
.
Ví dụ: hàm này có thể chuyển đổi một đối tượng của bảng:
[
{'key': 'k1', 'value': 'v1'},
{'key': 'k2', 'value': 'v2'}
]
vào một Bản đồ:
{
'k1': 'v1',
'k2': 'v2'
}
Trả về Object (Đối tượng): Map
đã chuyển đổi của các cặp khoá-giá trị đã được thêm vào
hoặc null
nếu không có.
Cú pháp
makeTableMap(tableObj, keyColumnName, valueColumnName);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
tableObj |
List (Danh sách) |
Đối tượng bảng cần chuyển đổi. Đó là danh sách các bản đồ mà mỗi
Map đại diện cho một hàng trong bảng. Mỗi tên thuộc tính trong một
đối tượng hàng là tên cột và giá trị thuộc tính là cột
giá trị trong hàng.
|
keyColumnName |
string |
Tên của cột mà các giá trị sẽ trở thành khóa trong dữ liệu được chuyển đổi
Map .
|
valueColumnName |
string |
Tên của cột mà các giá trị sẽ trở thành giá trị trong cột được chuyển đổi
Map .
|
Các quyền được liên kết
Không có.
parseUrl
Trả về một đối tượng chứa tất cả các phần thành phần của một URL nhất định, tương tự như
đối tượng URL
.
API này sẽ trả về undefined
cho mọi URL không đúng định dạng. Để định dạng đúng
Các URL, các trường không có trong chuỗi URL sẽ có giá trị là một chuỗi trống,
hoặc trong trường hợp searchParams
, là một đối tượng trống.
Đối tượng được trả về sẽ có các trường sau:
{
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,
}
Ví dụ
const parseUrl = require('parseUrl');
const urlObject = parseUrl('https://abc:xyz@example.com:8080/foo?param=val%2Cue#bar');
Cú pháp
parseUrl(url);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
url |
string | URL đầy đủ sẽ được phân tích cú pháp. |
Các quyền được liên kết
Không có.
returnResponse
Xoá phản hồi đã được các mẫu khác đặt trước đó bằng API sửa đổi phản hồi, bao gồm cả setCookie, setPixelResponse, setResponseBody, setResponseHeader và setResponseStatus. Mặc định là mã trạng thái HTTP 200, phần nội dung trống và không có tiêu đề.
Bạn nên sử dụng API này từ một mẫu ứng dụng.
Cú pháp
returnResponse();
Ví dụ
Các quyền được liên kết
runContainer
Chạy logic vùng chứa (biến, trình kích hoạt, thẻ) trong phạm vi của một sự kiện. Nếu API này được gọi trong quá trình thực thi vùng chứa, thì vùng chứa sẽ được chạy lại.
Phương thức gọi lại onComplete
và onStart
nhận được một hàm có tên là
bindToEvent
. Sử dụng bindToEvent
để chạy API trong ngữ cảnh của sự kiện.
Hãy xem ví dụ về addEventCallback để biết thêm thông tin.
Bạn nên sử dụng API này từ một mẫu ứng dụng.
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());
Cú pháp
runContainer(event, onComplete, onStart);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
event |
đối tượng | Thông số sự kiện. |
onComplete |
hàm | Lệnh gọi lại được gọi sau khi tất cả các thẻ kích hoạt xong. |
onStart |
hàm | Lệnh gọi lại được gọi ngay lập tức, trước khi các thẻ bắt đầu kích hoạt. |
Các quyền được liên kết
sendEventToGoogleAnalytics
Gửi một sự kiện duy nhất bằng Dữ liệu sự kiện chung đến Google Analytics và trả về một
hứa hẹn phân giải thành một đối tượng bằng khoá location
hoặc
từ chối một đối tượng có khoá reason
. Điểm đến, Universal
Analytics hoặc Google Analytics 4 dựa trên mã đo lường trong sự kiện
.
Trường location
được đặt thành tiêu đề location
, nếu có.
Ví dụ
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();
});
Cú pháp
sendEventToGoogleAnalytics(event);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
event |
đối tượng | Sự kiện ở định dạng Giản đồ hợp nhất. |
Các quyền được liên kết
Cần có quyền send_http
. Bạn phải định cấu hình quyền này để cho phép
quyền truy cập vào ít nhất:
- Cho phép Google Domains
sendHttpGet
Tạo một yêu cầu HTTP GET đến URL được chỉ định và trả về một hứa hẹn sẽ giải quyết kết quả sau khi yêu cầu hoàn tất hoặc hết giờ.
Kết quả đã phân giải là một đối tượng chứa 3 khoá: statusCode
, headers
,
và body
. Nếu yêu cầu không thành công (ví dụ: URL không hợp lệ, không có tuyến đến máy chủ lưu trữ,
thất bại trong thương lượng SSL, v.v.), lời hứa sẽ từ chối bằng: {reason:
'failed'}
. Nếu bạn đặt tuỳ chọn timeout
và yêu cầu đã hết thời gian chờ, thì
lời hứa sẽ từ chối bằng: {reason: 'timed_out'}
Ví dụ
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);
Cú pháp
sendHttpGet(url[, options]);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
url |
string | URL được yêu cầu. |
options
|
đối tượng | Không bắt buộc đối với các tuỳ chọn yêu cầu. (Xem Các tuỳ chọn ở bên dưới.) |
Lựa chọn
Phương thức | Loại | Mô tả |
---|---|---|
headers |
string | Tiêu đề của yêu cầu bổ sung. |
timeout
|
số | Thời gian chờ, tính bằng mili giây, trước
yêu cầu bị huỷ bỏ. Giá trị mặc định là 15000 . |
authorization
|
đối tượng | Không bắt buộc đối tượng uỷ quyền trong
cuộc gọi đến getGoogleAuth để bao gồm
tiêu đề uỷ quyền khi đưa ra yêu cầu
đến googleapis.com . |
Các quyền được liên kết
sendHttpRequest
Gửi yêu cầu HTTP đến URL đã chỉ định và trả về một hứa hẹn được phân giải bằng phản hồi sau khi yêu cầu hoàn tất hoặc hết giờ.
Kết quả đã phân giải là một đối tượng chứa 3 khoá: statusCode
, headers
,
và body
. Nếu yêu cầu không thành công (ví dụ: URL không hợp lệ, không có tuyến đến máy chủ lưu trữ,
thất bại trong thương lượng SSL, v.v.), lời hứa sẽ từ chối bằng: {reason:
'failed'}
. Nếu bạn đặt tuỳ chọn timeout
và yêu cầu đã hết thời gian chờ, thì
lời hứa sẽ từ chối bằng: {reason: 'timed_out'}
Ví dụ
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']);
});
Cú pháp
sendHttpRequest(url[, options[, body]]);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
url |
string | URL được yêu cầu. |
options
|
đối tượng | Không bắt buộc đối với các tuỳ chọn yêu cầu. (Xem Các tuỳ chọn ở bên dưới.) |
body |
string | Không bắt buộc nội dung yêu cầu. |
Lựa chọn
Phương thức | Loại | Mô tả |
---|---|---|
headers |
string | Tiêu đề của yêu cầu bổ sung. |
method |
đối tượng | Phương thức yêu cầu. Giá trị mặc định là GET . |
timeout
|
số | Thời gian chờ, tính bằng mili giây, trước
yêu cầu bị huỷ bỏ. Giá trị mặc định là 15000 . |
authorization
|
đối tượng | Không bắt buộc đối tượng uỷ quyền trong
cuộc gọi đến getGoogleAuth để bao gồm
tiêu đề uỷ quyền khi đưa ra yêu cầu
đến googleapis.com . |
Các quyền được liên kết
sendPixelFromBrowser
Gửi một lệnh đến trình duyệt để tải URL đã cung cấp dưới dạng thẻ <img>
. Chiến dịch này
Command Protocol được hỗ trợ trong Thẻ Google đối với GA4 và
Thẻ web Google Analytics: Sự kiện GA. Bạn phải định cấu hình vùng chứa phía máy chủ
URL. Hãy xem hướng dẫn để biết thêm chi tiết.
API này trả về false
nếu yêu cầu đến không hỗ trợ lệnh
giao thức hoặc nếu phản hồi đã bị xoá. Nếu không, API này
sẽ trả về true
.
Ví dụ:
const sendPixelFromBrowser = require('sendPixelFromBrowser');
sendPixelFromBrowser('https://example.com/?id=123');
Cú pháp
sendPixelFromBrowser(url)
Tham số
Thông số | Loại | Mô tả |
---|---|---|
url |
string | URL để gửi đến trình duyệt. |
Các quyền được liên kết
setCookie
Đặt hoặc xoá một cookie có tuỳ chọn được chỉ định.
Để xoá cookie, người dùng phải đặt cookie có cùng đường dẫn và miền mà cookie
cookie đã được tạo và chỉ định cho cookie một giá trị hết hạn trong quá khứ,
ví dụ: "Thu, 01 Jan 1970 00:00:00 GMT"
.
Lưu ý là phải gọi returnResponse để phản hồi được gửi lại cho máy khách.
Ví dụ
const setCookie = require('setCookie');
// Sets an httpOnly cookie with a max-age of 3600.
setCookie('cookieName', 'cookieValue', {'max-age': 3600, httpOnly: true});
Cú pháp
setCookie(name, value[, options[, noEncode]]);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
name |
string | Tên cookie. Tên này không phân biệt chữ hoa chữ thường. |
value |
string | Giá trị cookie. |
options |
đối tượng | Thuộc tính cookie không bắt buộc:domain, hết hạn, fallbackDomain,fallbackDomain, max- độ tuổi, đường dẫn, an toàn, và sameSite sử dụng. (Xem Tuỳ chọn, bên dưới.) |
noEncode |
boolean |
Nếu đúng, giá trị cookie sẽ không được mã hoá. Mặc định là
false .
|
domain: Máy chủ lưu trữ mà cookie sẽ được gửi đến. Nếu đặt thành giá trị đặc biệt giá trị 'auto', thì máy chủ lưu trữ sẽ được tự động tính toán bằng cách sử dụng chiến lược sau:
- eTLD+1 của tiêu đề
Forwarded
, nếu có. - eTLD+1 của tiêu đề
X-Forwarded-Host
, nếu có. - eTLD+1 của tiêu đề
Host
.
- eTLD+1 của tiêu đề
hết hạn: Thời gian tồn tại tối đa của cookie. URL này phải có định dạng UTC chuỗi ngày, ví dụ: "Thứ 7, ngày 26 tháng 10 năm 1985 08:21:00 theo giờ GMT". Nếu cả
expires
vàmax-age
đã được đặt,max-age
có mức độ ưu tiên.httpOnly: Cấm JavaScript truy cập vào cookie nếu
true
.max-age: Số giây cho đến khi cookie hết hạn. 0 hoặc số âm sẽ hết hạn cookie ngay lập tức. Nếu cả
expires
vàmax-age
được đặt,max-age
có mức độ ưu tiên.path: Một đường dẫn phải tồn tại trong URL được yêu cầu, nếu không trình duyệt sẽ không gửi tiêu đề Cookie.
secure: Nếu bạn đặt thành
true
, thì cookie chỉ được gửi đến máy chủ khi yêu cầu được thực hiện từ điểm cuốihttps:
.sameSite: Xác nhận rằng không được gửi cookie cùng với nhiều nguồn gốc yêu cầu. Phải là
'strict'
,'lax'
hoặc'none'
.
Các quyền được liên kết
setPixelResponse
Đặt nội dung phản hồi thành GIF 1x1, đặt tiêu đề Loại nội dung thành 'image/gif', thiết lập tiêu đề lưu vào bộ nhớ đệm sao cho tác nhân người dùng sẽ không lưu phản hồi vào bộ nhớ đệm và đặt trạng thái phản hồi thành 200.
Lưu ý là phải gọi returnResponse để phản hồi được gửi lại cho máy khách.
Cú pháp
setPixelResponse();
Các quyền được liên kết
Cần có quyền access_response
. Quyền phải được định cấu hình thành
cho phép truy cập vào ít nhất:
headers
– Phải cho phép các khoá saucontent-type
cache-control
expires
pragma
body
status
setResponseBody
Đặt nội dung phản hồi cho đối số.
Lưu ý là phải gọi returnResponse để phản hồi được gửi lại cho máy khách.
Cú pháp
setResponseBody(body[, encoding]);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
body |
string | Giá trị để đặt làm nội dung phản hồi. |
encoding |
string |
Phương thức mã hoá ký tự của nội dung phản hồi (mặc định là
'utf8' ). Các giá trị được hỗ trợ bao gồm 'ascii' ,
'utf8' , 'utf16le' , 'ucs2'
'base64' , 'latin1' , 'binary' ,
và 'hex' .
|
Các quyền được liên kết
Cần có quyền access_response
. Quyền phải được định cấu hình thành
cho phép truy cập vào ít nhất:
body
setResponseHeader
Đặt tiêu đề trong phản hồi sẽ được trả về. Nếu tiêu đề có tên này (không phân biệt chữ hoa chữ thường) đã được API này đặt trước đó, lệnh gọi sau sẽ ghi đè hoặc xoá giá trị do phương thức gọi trước đó đặt.
Lưu ý là phải gọi returnResponse để phản hồi được gửi lại cho máy khách.
Cú pháp
setResponseHeader(name, value);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
name |
string | Tên tiêu đề. Tên tiêu đề HTTP không phân biệt chữ hoa chữ thường, do đó, tiêu đề tên sẽ được viết thường. |
value |
chuỗi không xác định | Giá trị tiêu đề. Nếu có giá trị rỗng hoặc không xác định, thao tác này sẽ xoá tiêu đề đã đặt tên khỏi phản hồi sẽ được trả về. |
Các quyền được liên kết
Cần có quyền access_response
. Quyền phải được định cấu hình thành
cho phép truy cập vào ít nhất:
headers
setResponseStatus
Thiết lập mã trạng thái HTTP của phản hồi sẽ được trả về.
Lưu ý là phải gọi returnResponse để phản hồi được gửi lại cho máy khách.
Cú pháp
setResponseStatus(statusCode);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
statusCode |
số | Mã trạng thái HTTP cần trả về. |
Các quyền được liên kết
Cần có quyền access_response
. Quyền phải được định cấu hình thành
cho phép truy cập vào ít nhất:
status
sha256
Tính toán chuỗi đại diện SHA-256 của đầu vào và gọi lệnh gọi lại bằng hàm
chuỗi đại diện được mã hoá theo base64, trừ phi đối tượng options
chỉ định một chuỗi đại diện khác
mã hoá đầu ra.
Chữ ký và hành vi API này khớp với API sha256
cho vùng chứa web;
tuy nhiên, Mẫu tùy chỉnh trong vùng chứa phía máy chủ nên sử dụng
sha256Sync
API để viết mã đơn giản hơn.
Ví dụ
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'});
Cú pháp
sha256(input, onSuccess, options = undefined);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
input |
string | Chuỗi cần băm. |
onSuccess |
hàm |
Được gọi bằng thông báo kết quả, được mã hoá trong base64, trừ khi
Đối tượng options chỉ định một phương thức mã hoá đầu ra khác.
|
options |
đối tượng |
Không bắt buộc đối tượng tuỳ chọn để chỉ định phương thức mã hoá đầu ra. Nếu
đã chỉ định, đối tượng phải chứa khoá outputEncoding
có giá trị là base64 hoặc hex .
|
Các quyền được liên kết
Không có.
sha256Sync
Tính toán và trả về chuỗi đại diện SHA-256 của đầu vào, được mã hoá theo base64,
trừ phi đối tượng options
chỉ định một phương thức mã hoá đầu ra khác.
Ví dụ
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));
Cú pháp
sha256Sync(input, options = undefined);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
input |
string | Chuỗi cần băm. |
options |
đối tượng |
Không bắt buộc đối tượng tuỳ chọn để chỉ định phương thức mã hoá đầu ra. Nếu
đã chỉ định, đối tượng phải chứa khoá outputEncoding
có giá trị là base64 hoặc hex .
|
Các quyền được liên kết
Không có.
templateDataStorage
Trả về một đối tượng có các phương thức để truy cập vào bộ nhớ dữ liệu mẫu. Mẫu bộ nhớ dữ liệu cho phép chia sẻ dữ liệu qua các lần thực thi một mẫu duy nhất. Dữ liệu được lưu trữ trong bộ nhớ dữ liệu mẫu vẫn tồn tại trên máy chủ đang chạy vùng chứa. Trong hầu hết các trường hợp, có nhiều máy chủ đang chạy vùng chứa, vì vậy, Việc lưu trữ dữ liệu trong bộ nhớ dữ liệu mẫu không đảm bảo rằng mọi sẽ có quyền truy cập vào dữ liệu.
Trường "Dữ liệu" trong tên "templateDataStorage" nói đến thực tế là chỉ đơn giản,
thì các loại dữ liệu không phải hàm có thể được lưu trữ bằng API này. Bất kỳ hàm hoặc
Thay vào đó, các thông tin tham chiếu đến các hàm được truyền đến API sẽ được lưu trữ dưới dạng null
.
Cú pháp
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();
Ví dụ
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);
});
Các quyền được liên kết
testRegex
Kiểm thử một chuỗi dựa trên một biểu thức chính quy được tạo thông qua API createRegex
. Trả về true
nếu biểu thức chính quy khớp. Nếu không, sẽ trả về false
.
Một biểu thức chính quy được tạo bằng cờ chung sẽ có trạng thái. Xem Tài liệu về RegExp để biết thông tin chi tiết.
Ví dụ
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');
Cú pháp
testRegex(regex, string);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
regex |
Đối tượng | Biểu thức chính quy để kiểm tra, được trả về từ API createRegex. |
string |
string | Chuỗi thử nghiệm cần kiểm tra. |
Các quyền được liên kết
Không có.
toBase64
Mã hoá một chuỗi dưới dạng base64 hoặc base64url. Giá trị mặc định là mã hoá base64.
Cú pháp
toBase64(input, options);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
input |
string | Chuỗi cần mã hoá. |
options
|
đối tượng | Không bắt buộc Cấu hình API. (Xem Các tuỳ chọn ở bên dưới.) |
Lựa chọn
Phương thức | Loại | Mô tả | Phiên bản tối thiểu |
---|---|---|---|
urlEncoding
|
boolean | Nếu đúng, kết quả sẽ
được mã hoá bằng
Định dạng base64url . |
1.0.0 |
Ví dụ
const toBase64 = require('toBase64');
const base64Hello = toBase64('hello');
const base64UrlHello = toBase64('hello', {urlEncoding: true});
Các quyền được liên kết
Không có.
BigQuery
Trả về một đối tượng cung cấp các hàm BigQuery.
Hàm BigQuery.insert
cho phép ghi dữ liệu vào bảng BigQuery. Chiến dịch
trả về một lời hứa sẽ giải quyết khi chèn thành công hoặc
từ chối do có lỗi.
Khi chèn thành công, lời hứa sẽ được phân giải mà không có đối số nào.
Khi chèn không thành công, lời hứa sẽ từ chối kèm theo danh sách các đối tượng chứa nguyên nhân gây ra lỗi và có thể là đối tượng hàng nếu có lỗi. Có thể một phần của yêu cầu để được hoàn tất thành công, trong khi các phần khác thì không. Lời hứa sẽ bị từ chối trong trường hợp này với danh sách các lỗi cho mỗi hàng có đối tượng hàng để giúp phân biệt hàng nào được chèn (Xem phần Ví dụ về các lỗi bên dưới). Xem Tài liệu của BigQuery về lỗi nhắn tin để biết thêm thông tin.
Cú pháp
BigQuery.insert(connectionInfo, rows[, options]);
Thông số | Loại | Mô tả |
---|---|---|
connectionInfo |
đối tượng |
Xác định thông tin cần thiết để kết nối với bảng BigQuery. Có
một tham số không bắt buộc và hai tham số bắt buộc:
|
rows |
Mảng | Các hàng cần chèn vào bảng. |
options |
đối tượng | Tuỳ chọn yêu cầu không bắt buộc. Các tuỳ chọn được hỗ trợ bao gồm: ignoreUnknownValues và skipInvalidRows. Các khoá tuỳ chọn không xác định sẽ bị bỏ qua. (Xem Tuỳ chọn, bên dưới.) |
Thông số | Loại | Mô tả |
---|---|---|
ignoreUnknownValues |
boolean | Nếu bạn đặt thành true , thì hãy chấp nhận các hàng có chứa giá trị
không phù hợp với giản đồ. Những giá trị không xác định sẽ bị bỏ qua. Mặc định
thành false . |
skipInvalidRows |
boolean | Nếu bạn đặt thành true , thì hãy chèn tất cả các hàng hợp lệ của yêu cầu.
ngay cả khi có hàng không hợp lệ. Giá trị mặc định là false . |
Lỗi không tìm thấy mô-đun có nghĩa là vùng chứa phía máy chủ của bạn có thể đang chạy phiên bản hình ảnh cũ hơn chưa bao gồm mô-đun BigQuery. Vui lòng triển khai lại vùng chứa phía máy chủ với cùng chế độ cài đặt bằng cách sử dụng tập lệnh triển khai. Mô-đun này sẽ tự động được thêm vào sau khi thao tác kết thúc.
Lỗi không chèn thường có một đối tượng lỗi bằng khoá reason
:
[{reason: 'invalid'}]
Lỗi chèn có thể chứa nhiều đối tượng lỗi cùng với một mảng errors
và một đối tượng row
. Sau đây là ví dụ về phản hồi lỗi từ
chèn hai hàng trong đó chỉ có một hàng có lỗi:
[
{
"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
}
}
]
Ví dụ
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);
Các quyền được liên kết
Firestore
Trả về một đối tượng cung cấp các hàm Firestore.
API này chỉ hỗ trợ Firestore ở chế độ Gốc chứ không hỗ trợ Firestore trong Chế độ kho dữ liệu. Ngoài ra, API này chỉ hỗ trợ sử dụng cơ sở dữ liệu mặc định.
Firestore.read
Hàm Firestore.read
đọc dữ liệu từ tài liệu trên Firestore và
trả về một promise (lời hứa) phân giải thành một đối tượng chứa 2 khoá:
id
và data
. Nếu tài liệu không tồn tại, lời hứa sẽ bị từ chối bằng
đối tượng chứa khoá reason
bằng not_found
.
Cú pháp
Firestore.read(path[, options]);
Thông số | Loại | Mô tả |
---|---|---|
path |
string | Đường dẫn đến tài liệu hoặc bộ sưu tập. Không được bắt đầu hoặc kết thúc bằng "/". |
options |
đối tượng | Không bắt buộc đối với các tuỳ chọn yêu cầu. Các tuỳ chọn được hỗ trợ bao gồm: projectId, disableCache và giao dịch. Không xác định các khoá tuỳ chọn bị bỏ qua. (Xem Tuỳ chọn, bên dưới.) |
Thông số | Loại | Mô tả |
---|---|---|
projectId |
string | Không bắt buộc. Mã dự án trên Google Cloud Platform. Nếu bỏ qua, giá trị
projectId được truy xuất từ biến môi trường
GOOGLE_CLOUD_PROJECT miễn là
access_firestore
Chế độ cài đặt quyền cho mã dự án được đặt thành * hoặc
GOOGLE_CLOUD_PROJECT . Nếu vùng chứa phía máy chủ đang chạy trên
Google Cloud, GOOGLE_CLOUD_PROJECT sẽ được đặt thành
mã dự án trên Google Cloud. |
disableCache |
boolean | Không bắt buộc. Xác định xem có tắt bộ nhớ đệm hay không. Tính năng lưu vào bộ nhớ đệm được bật theo mặc định, chức năng này sẽ lưu các kết quả vào bộ nhớ đệm thời lượng của yêu cầu. |
transaction |
string | Không bắt buộc. Giá trị được truy xuất từ Firestore.runTransaction(). Đánh dấu thao tác sẽ được sử dụng trong giao dịch. |
Ví dụ
const Firestore = require('Firestore');
return Firestore.read('collection/document', {
projectId: 'gcp-cloud-project-id',
}).then((result) => result.data.key, () => undefined);
Firestore.write
Hàm Firestore.write
ghi dữ liệu vào tài liệu trên Firestore hoặc
bộ sưu tập. Nếu đường dẫn đến một bộ sưu tập, tài liệu sẽ được tạo bằng một
được tạo ngẫu nhiên. Nếu đường dẫn đến một tài liệu nhưng không tồn tại, thì đường dẫn đó
sẽ được tạo. API này trả về một hứa hẹn phân giải thành mã nhận dạng của
tài liệu được thêm hoặc sửa đổi. Nếu tuỳ chọn giao dịch được sử dụng, API vẫn
sẽ trả về một lời hứa (promise) nhưng sẽ không chứa mã nhận dạng (ID) vì các lượt ghi được phân thành lô.
Cú pháp
Firestore.write(path, input[, options]);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
path |
string | Đường dẫn đến tài liệu hoặc bộ sưu tập. Không được bắt đầu hoặc kết thúc bằng "/". |
input |
đối tượng | Giá trị cần ghi vào tài liệu. Nếu tùy chọn hợp nhất được đặt, API sẽ hợp nhất các khoá từ dữ liệu nhập vào tài liệu. |
options |
đối tượng | Không bắt buộc đối với các tuỳ chọn yêu cầu. Các tuỳ chọn được hỗ trợ bao gồm: projectId, merge và giao dịch. Các khoá tuỳ chọn không xác định sẽ bị bỏ qua. (Xem Tuỳ chọn, bên dưới.) |
Thông số | Loại | Mô tả |
---|---|---|
projectId |
string | Không bắt buộc. Mã dự án trên Google Cloud Platform. Nếu bỏ qua, giá trị
projectId được truy xuất từ biến môi trường
GOOGLE_CLOUD_PROJECT miễn là
access_firestore
Chế độ cài đặt quyền cho mã dự án được đặt thành * hoặc
GOOGLE_CLOUD_PROJECT . Nếu vùng chứa phía máy chủ đang chạy trên
Google Cloud, GOOGLE_CLOUD_PROJECT sẽ được đặt thành
mã dự án trên Google Cloud. |
merge |
boolean | Không bắt buộc. Nếu đặt thành
true , sau đó hợp nhất các khoá trong nội dung nhập vào tài liệu
nếu không phương thức này sẽ ghi đè toàn bộ tài liệu. Mặc định là
false . |
transaction |
string | Không bắt buộc. Giá trị được truy xuất từ Firestore.runTransaction(). Đánh dấu thao tác sẽ được sử dụng trong giao dịch. |
Ví dụ
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
Hàm Firestore.query
truy vấn tập hợp đã cho và trả về một tập hợp
hứa sẽ phân giải thành một mảng tài liệu Firestore phù hợp với truy vấn
. Đối tượng tài liệu trên Firestore giống như đã nêu ở trên trong
Firestore.read
. Nếu không có tài liệu nào phù hợp với điều kiện truy vấn,
lời hứa được trả về sẽ phân giải thành một mảng trống.
Cú pháp
Firestore.query(collection, queryConditions[, options]);
Thông số | Loại | Mô tả |
---|---|---|
collection |
string | Đường dẫn đến tập hợp báo cáo. Không được bắt đầu hoặc kết thúc bằng "/". |
queryConditions |
Mảng | Một mảng các điều kiện truy vấn. Mỗi truy vấn có dạng
mảng có 3 giá trị: key,
toán tử và expectedValue. Ví dụ:
[[‘id’, ‘<’, ‘5’], [‘state’, ‘==’, ‘CA’]]. Các điều kiện được kết hợp với nhau bằng toán tử AND để tạo ra kết quả truy vấn. Năn nỉ tham chiếu tới Các toán tử truy vấn của Firestore để có danh sách các truy vấn tương thích các toán tử. |
options |
đối tượng | Không bắt buộc đối với các tuỳ chọn yêu cầu. Các tuỳ chọn được hỗ trợ bao gồm: projectId, disableCache, giới hạn và giao dịch. Không xác định các khoá tuỳ chọn bị bỏ qua. (Xem Tuỳ chọn, bên dưới.) |
Thông số | Loại | Mô tả |
---|---|---|
projectId |
string | Không bắt buộc. Mã dự án trên Google Cloud Platform. Nếu bỏ qua, giá trị
projectId được truy xuất từ biến môi trường
GOOGLE_CLOUD_PROJECT miễn là
access_firestore
Chế độ cài đặt quyền cho mã dự án được đặt thành * hoặc
GOOGLE_CLOUD_PROJECT . Nếu vùng chứa phía máy chủ đang chạy trên
Google Cloud, GOOGLE_CLOUD_PROJECT sẽ được đặt thành
mã dự án trên Google Cloud. |
disableCache |
boolean | Không bắt buộc. Xác định xem có tắt bộ nhớ đệm hay không. Tính năng lưu vào bộ nhớ đệm được bật theo mặc định, chức năng này sẽ lưu các kết quả vào bộ nhớ đệm thời lượng của yêu cầu. |
limit |
số | Không bắt buộc. Thay đổi số lượng kết quả tối đa được trả về bởi truy vấn, giá trị mặc định là 5. |
transaction |
string | Không bắt buộc. Giá trị được truy xuất từ Firestore.runTransaction(). Đánh dấu thao tác sẽ được sử dụng trong giao dịch. |
Ví dụ
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
Hàm Firestore.runTransaction
cho phép người dùng phân tích cú pháp
đọc và ghi trên Firestore. Nếu một giao dịch ghi đồng thời hoặc một giao dịch khác
xung đột xảy ra, giao dịch sẽ được thử lại tối đa hai lần. Nếu không thành công
sau tổng cộng 3 lần thử, API sẽ từ chối kèm theo lỗi. API này trả về
một lời hứa phân giải thành một mảng mã nhận dạng tài liệu, cho mỗi thao tác ghi,
nếu giao dịch thành công và sẽ từ chối kèm theo lỗi nếu giao dịch không thành công.
Cú pháp
Firestore.runTransaction(callback[, options]);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
callback |
hàm | Lệnh gọi lại được gọi bằng mã giao dịch chuỗi. Chiến lược phát hành đĩa đơn mã giao dịch có thể được chuyển vào các lệnh gọi API đọc/ghi/truy vấn. Hàm callback này phải trả về một hứa hẹn. Lệnh gọi lại có thể chạy tối đa 3 lần trước khi không thành công. |
options |
đối tượng | Không bắt buộc đối với các tuỳ chọn yêu cầu. Tuỳ chọn duy nhất được hỗ trợ là projectId. Các khoá tuỳ chọn không xác định sẽ bị bỏ qua. (Xem Tuỳ chọn, bên dưới.) |
Thông số | Loại | Mô tả |
---|---|---|
projectId |
string | Không bắt buộc. Mã dự án trên Google Cloud Platform. Nếu bỏ qua, giá trị
projectId được truy xuất từ biến môi trường
GOOGLE_CLOUD_PROJECT miễn là
access_firestore
Chế độ cài đặt quyền cho mã dự án được đặt thành * hoặc
GOOGLE_CLOUD_PROJECT . Nếu vùng chứa phía máy chủ đang chạy trên
Google Cloud, GOOGLE_CLOUD_PROJECT sẽ được đặt thành
mã dự án trên Google Cloud. |
Ví dụ
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);
Các lỗi có trong mỗi hàm Firestore sẽ bị từ chối kèm theo một đối tượng
chứa khoá reason
:
Firestore.read(...).then(onSuccess, (error) => {
if (error.reason === 'unknown') {
// Handle the unknown error here.
}
});
Những nguyên nhân gây ra lỗi có thể chứa nhưng không giới hạn ở Firestore REST API Error Mã.
Các quyền được liên kết
JSON
Trả về một đối tượng cung cấp các hàm JSON.
Hàm parse()
phân tích cú pháp chuỗi JSON để tạo giá trị hoặc đối tượng
được mô tả bằng chuỗi. Nếu không thể phân tích cú pháp giá trị (ví dụ: JSON không đúng định dạng),
hàm sẽ trả về undefined
. Nếu giá trị nhập không phải là một chuỗi, thì
giá trị nhập vào sẽ được buộc thành một chuỗi.
Hàm stringify()
chuyển đổi dữ liệu đầu vào thành chuỗi JSON. Nếu giá trị
không thể phân tích cú pháp (ví dụ: đối tượng có chu kỳ), phương thức sẽ trả về
undefined
.
Ví dụ
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'});
Cú pháp
JSON.parse(stringInput);
JSON.stringify(value);
Các quyền được liên kết
Không có.
Math
Một đối tượng cung cấp các hàm Math
.
Cú pháp
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);
Tham số
Tham số hàm toán học được chuyển đổi thành số.
Các quyền được liên kết
Không có.
Messages
Các API sau hoạt động cùng nhau để cho phép truyền thông báo giữa các API của vùng chứa.
addMessageListener
Thêm một hàm theo dõi thông báo thuộc một loại cụ thể. Khi một tin nhắn
thuộc loại đó được gửi qua API sendMessage
(thường là bằng một thẻ),
lệnh gọi lại sẽ được chạy đồng bộ. Lệnh gọi lại được chạy với 2 tham số:
messageType:string
message:Object
Nếu lệnh gọi lại được thêm vào một ứng dụng, thì lệnh gọi lại đó sẽ nhận được thông báo trên
tất cả các sự kiện mà ứng dụng tạo ra. Liệu lệnh gọi lại có nhận được thông báo hay không
từ một sự kiện nhất định, sau đó liên kết API này với sự kiện bằng cách sử dụng bindToEvent
trong hàm onStart
của API runContainer
. Xem ví dụ.
Cú pháp
const addMessageListener = require('addMessageListener');
addMessageListener('send_pixel', (messageType, message) => {
// This will be run whenever something sends a 'send_pixel' message.
});
Tham số
Thông số | Loại | Mô tả |
---|---|---|
messageType |
string | Loại tin nhắn muốn nghe. Nếu giá trị không phải là một chuỗi, thì giá trị đó sẽ là bị buộc thành một chuỗi. |
callback |
hàm | Lệnh gọi lại để chạy khi một thông báo thuộc loại thông báo thích hợp là đã gửi. Nếu lệnh gọi lại không phải là một hàm, API sẽ không làm gì cả. |
Ví dụ
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.
});
}
});
});
Các quyền được liên kết
Cần có quyền use_message
. Bạn phải định cấu hình quyền này để cho phép
ít nhất:
- Một loại thông báo có
Usage
/listen
hoặclisten_and_send
.
hasMessageListener
Trả về true nếu bạn thêm trình nghe thông báo cho loại thông báo cho sẵn. Nếu không, sẽ trả về false.
Cú pháp
const hasMessageListener = require('hasMessageListener');
hasMessageListener('send_pixel');
Các quyền được liên kết
Không có.
sendMessage
Gửi một thông báo thuộc loại đã chỉ định tới một trình nghe đã đăng ký. Bạn có thể dùng công cụ này để gửi thông báo từ thẻ trở lại ứng dụng đã chạy vùng chứa.
Cú pháp
const sendMessage = require('sendMessage');
sendMessage('send_pixel', {url: 'https://analytics.example.com/collect'});
Tham số
Thông số | Loại | Mô tả |
---|---|---|
messageType |
string | Loại tin nhắn cần gửi. Nếu giá trị không phải là một chuỗi, thì giá trị đó sẽ bị buộc thành một chuỗi. |
message |
đối tượng | Tin nhắn cần gửi. Nếu thông báo không phải là một đối tượng, API sẽ không làm gì cả. |
Các quyền được liên kết
Cần có quyền use_message
. Bạn phải định cấu hình quyền này để cho phép
ít nhất:
- Một loại thông báo có
Usage
/listen_and_send
hoặcsend
.
Object
Trả về một đối tượng cung cấp các phương thức Object
.
Phương thức keys()
cung cấp Object.keys() Thư viện chuẩn
hành vi. Phương thức này trả về một mảng thuộc tính có thể liệt kê riêng của một đối tượng nhất định
theo thứ tự tương tự như vòng lặp for...in...
. Nếu giá trị nhập là
không phải là đối tượng, nó sẽ bị ép buộc thành một đối tượng.
Phương thức values()
cung cấp Object.values() Thư viện chuẩn
hành vi. Phương thức này trả về một mảng các giá trị thuộc tính có thể liệt kê của riêng một đối tượng nhất định
theo thứ tự tương tự như vòng lặp for...in...
. Nếu giá trị đầu vào không phải là một
thì nó sẽ bị ép gán thành một đối tượng.
Phương thức entries()
cung cấp Object.entries() Thư viện chuẩn
hành vi. Phương thức này trả về một mảng thuộc tính có thể liệt kê riêng của một đối tượng nhất định
[key, value]
ghép nối theo thứ tự mà vòng lặp for...in...
sẽ thực hiện. Nếu
giá trị đầu vào không phải là một đối tượng, nó sẽ bị buộc thành một đối tượng.
Phương thức freeze()
cung cấp Object.freeze() Thư viện chuẩn
hành vi. Không thể thay đổi đối tượng cố định nữa; việc đóng băng một vật thể sẽ giúp ngăn chặn
tài sản mới được thêm vào tài sản đó, các tài sản hiện có sẽ không bị xoá,
và giá trị của các thuộc tính hiện tại bị thay đổi. freeze()
trả về
chính là đối tượng đã được truyền vào. Đối số nguyên thuỷ hoặc đối số rỗng sẽ được coi là
nếu đó là một đối tượng cố định và sẽ được trả về.
Phương thức delete()
cung cấp toán tử xoá của Thư viện chuẩn
hành vi. Thao tác này sẽ xoá khoá đã cho khỏi đối tượng trừ phi đối tượng bị cố định.
Giống như toán tử xoá Thư viện chuẩn, hàm này sẽ trả về true
nếu giá trị nhập đầu tiên
giá trị (objectInput
) là một đối tượng không bị cố định ngay cả khi giá trị nhập vào thứ hai
giá trị (keyToDelete
) chỉ định khoá không tồn tại. Hàm này sẽ trả về false
trong
tất cả các trường hợp khác. Tuy nhiên, toán tử này khác với toán tử xoá trong Thư viện chuẩn
theo các cách sau:
keyToDelete
không được là chuỗi được phân tách bằng dấu chấm để chỉ định một khoá lồng nhau.- Không thể sử dụng
delete()
để xoá các phần tử khỏi một mảng. - Không thể sử dụng
delete()
để xoá bất kỳ thuộc tính nào khỏi phạm vi chung.
Cú pháp
Object.keys(objectInput)
Object.values(objectInput)
Object.entries(objectInput)
Object.freeze(objectInput)
Object.delete(objectInput, keyToDelete)
Tham số
Object.keys
Thông số | Loại | Mô tả |
---|---|---|
objectInput | bất kỳ | Đối tượng có các khoá cần liệt kê. Nếu dữ liệu đầu vào không phải là đối tượng, thì sẽ bị ép buộc thành một đối tượng. |
Object.values
Thông số | Loại | Mô tả |
---|---|---|
objectInput | bất kỳ | Đối tượng có các giá trị cần liệt kê. Nếu dữ liệu đầu vào không phải là đối tượng, nó sẽ bị ép buộc thành một đối tượng. |
Object.entries
Thông số | Loại | Mô tả |
---|---|---|
objectInput | bất kỳ | Đối tượng có các cặp khoá/giá trị cần liệt kê. Nếu dữ liệu đầu vào không phải là thì nó sẽ bị ép gán thành một đối tượng. |
Object.freeze
Thông số | Loại | Mô tả |
---|---|---|
objectInput | bất kỳ | Đối tượng cần cố định. Nếu dữ liệu đầu vào không phải là đối tượng, thì nó sẽ được coi là một vật cố định. |
Object.delete
Thông số | Loại | Mô tả |
---|---|---|
objectInput | bất kỳ | Đối tượng có khoá cần xoá. |
keyToDelete | string | Khoá cấp cao nhất cần xoá. |
Ví dụ
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
Trả về một đối tượng cung cấp các phương thức để tương tác với các hứa hẹn.
Lời hứa có chức năng tương đương với lời hứa trong JavaScript. Mỗi phiên bản có ba phương thức trả về một Lời hứa, cho phép thực hiện hành động khác khi một lời hứa thanh toán:
.then()
– Xử lý cả trường hợp đã giải quyết và bị từ chối. Phải mất hai lệnh gọi lại dưới dạng tham số: một cho trường hợp thành công và một cho trường hợp không thành công trường hợp..catch()
– Chỉ xử lý các trường hợp bị từ chối. Thực hiện một lệnh gọi lại làm một ..finally()
– Cung cấp một cách để chạy mã cho dù lời hứa có phải là đã được giải quyết hoặc bị từ chối. Lấy một lệnh gọi lại làm tham số được gọi bằng không có đối số nào.
Một biến trả về lời hứa tương đương với giá trị đã phân giải của lời hứa đó, hoặc
false
nếu lời hứa bị từ chối.
Ví dụ
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
Trả về hứa hẹn:
- khi tất cả dữ liệu đầu vào đã được phân giải, hoặc
- từ chối khi bất kỳ dữ liệu đầu vào nào từ chối
Cú pháp
Promise.all(inputs);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
inputs |
Mảng | Một mảng giá trị hoặc lời hứa. Nếu dữ liệu đầu vào không phải là lời hứa, thì dữ liệu đầu vào được truyền đi như thể đó là giá trị đã được phân giải của một lời hứa. Gửi một nếu dữ liệu đầu vào không phải là một mảng. |
Ví dụ
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: ''}]
});
Các quyền được liên kết
Không có.
Promise.create
Tạo lời hứa có chức năng tương đương với lời hứa trong JavaScript.
Cú pháp
Promise.create(resolver);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
resolver |
hàm | Một hàm được gọi bằng 2 hàm: phân giải và từ chối. Lời hứa được trả về sẽ giải quyết hoặc từ chối khi sẽ được gọi. Gửi thông báo lỗi nếu trình phân giải không phải là hàm. |
Ví dụ
const Promise = require('Promise');
return Promise.create((resolve, reject) => {
// Do asynchronous work that eventually calls resolve() or reject()
});
Các quyền được liên kết
Không có.
API kiểm thử
Các API này hoạt động với các thử nghiệm JavaScript dạng hộp cát để tạo thử nghiệm cho các tính năng tuỳ chỉnh
trong Trình quản lý thẻ của Google. Các API kiểm thử này không cần có require()
tuyên bố. [Tìm hiểu thêm về thử nghiệm mẫu tuỳ chỉnh].
assertApi
Trả về một đối tượng trình so khớp có thể dùng để đưa ra xác nhận về API nhất định.
Cú pháp
assertApi(apiName)
Tham số
Thông số | Loại | Mô tả |
---|---|---|
apiName |
string | Tên của API cần kiểm tra; cùng một chuỗi như được truyền đến
require() .
|
Trình so khớp
Subject.wasCalled()
Subject.wasNotCalled()
Subject.wasCalledWith(...expected)
Subject.wasNotCalledWith(...expected)
Ví dụ
assertApi('sendPixel').wasCalled();
assertApi('getUrl').wasNotCalled();
assertApi('makeNumber').wasCalledWith('8');
assertApi('setInWindow').wasNotCalledWith('myVar', 'theWrongValue');
assertThat
API assertThat
được mô hình hoá dựa trên thư viện [Truth] của Google. Phương thức này trả về một
đối tượng có thể dùng để xác nhận một cách trôi chảy về giá trị của một đối tượng. Một
lỗi xác nhận sẽ dừng kiểm thử ngay lập tức và đánh dấu là không thành công. Tuy nhiên,
lỗi trong một kiểm thử sẽ không ảnh hưởng đến các trường hợp kiểm thử khác.
Cú pháp
assertThat(actual, opt_message)
Tham số
Thông số | Loại | Mô tả |
---|---|---|
actual |
bất kỳ | Giá trị dùng trong quá trình kiểm tra mức độ thành thạo. |
opt_message |
string | Thông báo không bắt buộc để in nếu xác nhận không thành công. |
Trình so khớp
Trình so khớp | Mô tả |
---|---|
isUndefined() |
Xác nhận rằng chủ đề là undefined . |
isDefined() |
Xác nhận rằng chủ thể không phải là undefined . |
isNull() |
Xác nhận rằng chủ đề là null . |
isNotNull() |
Xác nhận rằng chủ thể không phải là null . |
isFalse() |
Xác nhận rằng chủ đề là false . |
isTrue() |
Xác nhận rằng chủ đề là true . |
isFalsy() |
Xác nhận rằng chủ đề này là sai sự thật. Giá trị sai lệch là
undefined , null , false
NaN , 0 và '' (chuỗi trống). |
isTruthy() |
Xác nhận rằng đối tượng là sự thật. Giá trị sai lệch là
undefined , null , false
NaN , 0 và '' (chuỗi trống). |
isNaN() |
Xác nhận rằng đối tượng là giá trị NaN. |
isNotNaN() |
Xác nhận rằng đối tượng là giá trị bất kỳ ngoài NaN. |
isInfinity() |
Xác nhận rằng đối tượng là vô cực tích cực hay tiêu cực. |
isNotInfinity() |
Xác nhận rằng đối tượng là bất kỳ giá trị nào ngoài giá trị tích cực hoặc tiêu cực Vô hạn. |
isEqualTo(expected) |
Xác nhận rằng tiêu đề bằng với giá trị đã cho. Đây là một giá trị so sánh chứ không phải so sánh tham chiếu. Nội dung của đối tượng và mảng được so sánh đệ quy. |
isNotEqualTo(expected) |
Xác nhận rằng đối tượng không bằng với giá trị đã cho. Đây là một so sánh giá trị, không phải là so sánh tham chiếu. Nội dung của đối tượng và các mảng được so sánh đệ quy. |
isAnyOf(...expected) |
Xác nhận rằng tiêu đề bằng một trong các giá trị đã cho. Đây là một so sánh giá trị, không phải là so sánh tham chiếu. Nội dung của đối tượng và các mảng được so sánh đệ quy. |
isNoneOf(...expected) |
Xác nhận rằng chủ thể không bằng bất kỳ giá trị nào đã cho. Chiến dịch này là so sánh giá trị chứ không phải là so sánh tham chiếu. Nội dung của đối tượng và mảng được so sánh đệ quy. |
isStrictlyEqualTo(expected) |
Xác nhận rằng chủ thể hoàn toàn ngang bằng (=== ) với
giá trị nhất định. |
isNotStrictlyEqualTo(expected) |
Xác nhận rằng chủ thể không hoàn toàn ngang bằng (!== ) với
giá trị đã cho. |
isGreaterThan(expected) |
Xác nhận rằng chủ thể lớn hơn (> ) giá trị đã cho
giá trị trong một phép so sánh theo thứ tự. |
isGreaterThanOrEqualTo(expected) |
Xác nhận rằng chủ thể lớn hơn hoặc bằng
(>= ) giá trị đã cho trong phép so sánh theo thứ tự. |
isLessThan(expected) |
Xác nhận rằng chủ thể dưới (< ) giá trị đã cho
giá trị trong một phép so sánh theo thứ tự. |
isLessThanOrEqualTo(expected) |
Xác nhận rằng chủ thể nhỏ hơn hoặc bằng (<= )
giá trị đã cho trong phép so sánh có thứ tự. |
contains(...expected) |
Xác nhận rằng chủ đề là một mảng hoặc chuỗi chứa tất cả các giá trị đã cho theo thứ tự bất kỳ. Đây là thông tin so sánh giá trị, không phải để tham khảo so sánh. Nội dung của đối tượng và mảng được so sánh theo cách đệ quy. |
doesNotContain(...expected) |
Xác nhận rằng chủ đề là một mảng hoặc chuỗi không chứa các giá trị đã cho. Đây là thông tin so sánh giá trị, không phải là thông tin so sánh tham chiếu. Nội dung của đối tượng và mảng được so sánh theo cách đệ quy. |
containsExactly(...expected) |
Xác nhận rằng tiêu đề là một mảng chứa tất cả các giá trị theo thứ tự bất kỳ và không có giá trị nào khác. Đây là thông tin so sánh giá trị, không phải so sánh tham chiếu. Nội dung của đối tượng và mảng được so sánh theo cách đệ quy. |
doesNotContainExactly(...expected) |
Xác nhận rằng tiêu đề là một mảng chứa một nhóm khác từ các giá trị đã cho theo thứ tự bất kỳ. Đây là một bảng so sánh giá trị, không phải là so sánh tham chiếu. Nội dung của đối tượng và mảng là được so sánh theo cách đệ quy. |
hasLength(expected) |
Xác nhận rằng chủ đề là một mảng hoặc chuỗi có độ dài đã cho. Xác nhận luôn không thành công nếu giá trị không phải là một mảng hoặc chuỗi. |
isEmpty() |
Xác nhận rằng chủ đề là một mảng hoặc chuỗi trống (length = 0). Xác nhận luôn không thành công nếu giá trị không phải là một mảng hoặc . |
isNotEmpty() |
Xác nhận rằng chủ đề là một mảng hoặc chuỗi không trống (độ dài > 0). Xác nhận luôn không thành công nếu giá trị không phải là một mảng hoặc chuỗi. |
isArray() |
Xác nhận rằng kiểu của chủ đề là một mảng. |
isBoolean() |
Xác nhận rằng kiểu của chủ đề là một boolean. |
isFunction() |
Xác nhận rằng kiểu của chủ đề là một hàm. |
isNumber() |
Xác nhận rằng kiểu của chủ đề là một số. |
isObject() |
Xác nhận rằng kiểu của chủ thể là một đối tượng. |
isString() |
Xác nhận rằng kiểu của chủ đề là một chuỗi. |
Ví dụ
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
Ngay lập tức không vượt qua chương trình kiểm thử hiện tại và in thông báo đã cho nếu được cung cấp.
Cú pháp
fail(opt_message);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
opt_message |
string | Nội dung thông báo lỗi không bắt buộc. |
Ví dụ
fail('This test has failed.');
mock
API mock
cho phép bạn ghi đè hành vi của API Hộp cát. Bản mô phỏng
Bạn có thể sử dụng API an toàn trong mã mẫu, nhưng chỉ hoạt động ở chế độ thử nghiệm.
Hệ thống sẽ đặt lại các thông tin mô phỏng trước khi chạy mỗi lượt kiểm thử.
Cú pháp
mock(apiName, returnValue);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
apiName |
string | Tên của API để mô phỏng; cùng một chuỗi như được truyền đến
require() |
returnValue |
bất kỳ | Giá trị cần trả về cho API hoặc một hàm được gọi thay cho
API. Nếu returnValue là một hàm, thì hàm đó sẽ được gọi trong
thay thế của API Hộp cát; nếu returnValue là giá trị khác
hơn một hàm, thì giá trị đó sẽ được trả về thay cho Hộp cát
API. |
Ví dụ
mock('encodeUri', "https://endpoint.example.com/?account=12345");
mock('sendPixel', function(url, onSuccess, onFailure) {
onSuccess();
});
mockObject
API mockObject
cho phép bạn ghi đè hành vi của các API Hộp cát
trả về một đối tượng. API này an toàn để sử dụng trong mã mẫu, nhưng vẫn hoạt động được
chỉ ở chế độ thử nghiệm. Hệ thống sẽ đặt lại các thông tin mô phỏng trước khi chạy mỗi lượt kiểm thử.
Cú pháp
mockObject(apiName, objectMock);
Tham số
Thông số | Loại | Mô tả |
---|---|---|
apiName |
string | Tên của API để mô phỏng; cùng một chuỗi như được truyền đến
require() |
objectMock |
đối tượng | Giá trị cần trả về cho API hoặc một hàm được gọi thay cho API. Phải là một đối tượng. |
Ví dụ
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
Chạy mã cho mẫu, tức là nội dung của thẻ Mã, trong môi trường kiểm thử hiện tại bằng một đối tượng dữ liệu đầu vào nhất định.
Cú pháp
runCode(data)
Tham số
Thông số | Loại | Mô tả |
---|---|---|
data |
đối tượng | Đối tượng dữ liệu được dùng trong kiểm thử. |
Giá trị trả về
Trả về giá trị của một biến cho các mẫu biến; trả về undefined
với giá
tất cả các loại mẫu khác.
Ví dụ
runCode({field1: 123, field2: 'value'});