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 khi kết thúc sự kiện. Lệnh gọi lại sẽ được gọi khi tất cả các thẻ cho sự kiện đã thực thi. Lệnh gọi lại được truyền 2 giá trị: mã nhận dạng 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 được sử dụng trong một ứng dụng, API này 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
. Hãy xem ví dụ để biết thêm thông tin chi tiết.
Cú pháp
const addEventCallback = require('addEventCallback');
addEventCallback((containerId, eventData) => {
// Take some action based on the event data.
});
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
callback |
hàm | Hàm sẽ gọi khi sự kiện kết thúc. |
Đối tượng eventData
chứa dữ liệu sau:
Tên khóa | Loại | Nội dung mô tả |
---|---|---|
tags |
Mảng |
Một mảng các đối tượng dữ liệu thẻ. Mỗi thẻ được kích hoạt trong sự kiện
sẽ có một mục nhập trong mảng này. Đối tượng dữ liệu thẻ chứa
mã thẻ (id ), trạng thái thực thi
(status ) và thời gian thực thi của thẻ
(executionTime ). Dữ liệu thẻ cũng sẽ bao gồm
siêu dữ liệu bổ sung về 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 một lệnh gọi đến một hàm diễn ra không đồng bộ. Hàm này sẽ được gọi sau khi mã hiện tại trả về. Giá trị 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)
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
function |
hàm | Hàm cần gọi. |
Các quyền được liên kết
Không nội dung nào.
claimRequest
Hãy sử 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 quyền sở hữu, vùng chứa sẽ không chạy các ứng dụng khác.
API này gửi 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 sẽ gửi ra một trường hợp ngoại lệ nếu được gọi sau khi ứng dụng trả về (ví dụ: nếu được gọi trong một lệnh gọi lại không đồng bộ, chẳng hạn như trong callLater
hoặc hàm runContainer
onComplete
).
Ứng dụng phải 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 nội dung nào.
computeEffectiveTldPlusOne
Trả về miền cấp cao nhất hiệu quả + 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 dựa trên quy tắc Danh sách hậu tố công khai. eTLD+1 thường là miền cấp cao nhất mà bạn có thể đặt cookie.
Nếu đối số có giá trị 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 phải là một miền hoặc URL hợp lệ, thì chuỗi trống sẽ được trả về. 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ố sẽ được trả về mà 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);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
domainOrUrl |
string | Một miền hoặc URL để tính eTLD+1. |
Các quyền được liên kết
Không nội dung nào.
createRegex
Tạo một thực thể biểu thức chính quy mới rồi trả về thực thể đó được gói trong một đối tượng. Bạn không thể truy cập trực tiếp vào biểu thức chính quy. Tuy nhiên, bạn có thể truyền dữ liệu 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 có trên máy chủ.
API này sử dụng cách triển khai Re2. 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);
Thông số
Thông số | Loại | Nội dung 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. Hỗ trợ `g` (toàn cầu) và `i` (không phân biệt chữ hoa chữ thường). Tất cả các ký tự khác sẽ bị tự động bỏ qua. |
Các quyền được liên kết
Không nội dung nào.
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 đại diện cho URI đã giải mã. Trả về undefined
khi được cung cấp với thông tin đầu vào không hợp lệ.
Ví dụ
const decodeUri = require('decodeUri');
const decodedUrl = decodeUri(data.encodedUrl);
if (decodedUrl) {
// ...
}
Cú pháp
decodeUri(encoded_uri);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
encoded_uri |
string |
URI được mã hoá bằng encodeUri() hoặc bằng các phương thức khác.
|
Các quyền được liên kết
Không nội dung nào.
decodeUriComponent
Giải mã mọi ký tự mã hoá trong thành phần URI được cung cấp. Trả về một chuỗi đại diện cho thành phần URI đã giải mã. Trả về undefined
khi giá trị nhập 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);
Thông số
Thông số | Loại | Nội dung 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 phương thức khác.
|
Các quyền được liên kết
Không nội dung nào.
encodeUri
Trả về Mã nhận dạng tài nguyên thống nhất (URI) được mã hoá bằng cách thoát các ký tự đặc biệt. Trả về một chuỗi biểu thị chuỗi đã cung cấp được 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);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
uri |
string | URI hoàn chỉnh. |
Các quyền được liên kết
Không nội dung nào.
encodeUriComponent
Trả về Mã nhận dạng tài nguyên thống nhất (URI) được mã hoá bằng cách thoát các ký tự đặc biệt. Trả về một chuỗi biểu thị 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);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
str |
string | Một thành phần của URI. |
Các quyền được liên kết
Không nội dung nào.
extractEventsFromMpv1
Chuyển yêu cầu Measurement Protocol V1 đến thành một danh sách các sự kiện ở định dạng Giản đồ hợp nhất. Trả về danh sách các sự kiện đã trích xuất. Gửi 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 này phải được định cấu hình để cho phép truy cập vào ít nhất:
body
query parameters
extractEventsFromMpv2
Chuyển yêu cầu Measurement Protocol V2 được gửi đến thành một danh sách các sự kiện ở định dạng Giản đồ hợp nhất. Trả về danh sách các sự kiện đã trích xuất. Gửi 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 này phải được định cấu hì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 là không hợp lệ.
Cú pháp
fromBase64(base64EncodedString);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
base64EncodedString |
string | Chuỗi được mã hoá 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 nội dung nào.
generateRandom
Trả về một số (số nguyên) ngẫu nhiên trong dải ô đã cho.
Ví dụ
const generateRandom = require('generateRandom');
const randomValue = generateRandom(0, 10000000);
Cú pháp
generateRandom(min, max);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
min |
số | Giá trị tiềm năng tối thiểu của số nguyên được trả về (bao gồm). |
max |
số | Giá trị tiềm năng lớn nhất của số nguyên được trả về (bao gồm). |
Các quyền được liên kết
Không nội dung nào.
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. Đối tượng được trả về 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.
Ví dụ
const getCookieValues = require('getCookieValues');
const lastVisit = getCookieValues('lastVisit')[0];
if (lastVisit) {
// ...
}
Cú pháp
getCookieValues(name[, noDecode]);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
name |
string | Tên của cookie. |
noDecode |
boolean |
Nếu là true , các giá trị cookie sẽ không được giải mã trước khi được trả về. 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ả về undefined
nếu không có dữ liệu sự kiện hoặc nếu 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');
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
keyPath |
bất kỳ |
Đường dẫn của khoá, trong đó các thành phần của đường dẫn được phân tách bằng dấu chấm. Thành phần đường dẫn có thể là các khoá trong một đối tượng hoặc chỉ mục trong một mảng. Nếu keyPath không phải là một chuỗi thì nó sẽ 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ề một đối tượng uỷ quyền mà khi được dùng với sendHttpGet
hoặc sendHttpRequest
, sẽ bao gồm một tiêu đề uỷ quyền cho các API của Google Cloud. 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);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
scopes
|
Mảng | Một mảng các phạm vi API của 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 này 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 lệnh được xác định trước của Google và trả về một lời hứa bằng tập lệnh và siêu dữ liệu lưu vào bộ nhớ đệm được liên kết.
Lời hứa sẽ phân giải thành một đối tượng chứa hai 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 các tiêu đề phản hồi của tài nguyên; mỗi trường sẽ chỉ xuất hiện nếu tiêu đề tương ứng có trong phản hồi của 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]);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
script |
string |
Tên tập lệnh. Các tập lệnh được hỗ trợ là 'ANALYTICS' , 'GTAG' và 'GTM' .Tuỳ chọn 'ANALYTICS'
tìm nạp tập lệnh Google Analytics từ
https://www.google-analytics.com/analytics.js .Tuỳ chọn 'GTAG' tìm nạp tập lệnh của thẻ toàn trang web (gtag.js)
từ https://www.googletagmanager.com/gtag/js .Tuỳ chọn 'GTM' tìm nạp tập lệnh Trình quản lý thẻ của Google
từ https://www.googletagmanager.com/gtm.js .
|
options |
đối tượng | Tùy chọn yêu cầu không bắt buộc. Xem bên dưới để biết các tuỳ chọn được hỗ trợ. |
Tuỳ chọn
Lựa chọn | Loại | Nội dung mô tả |
---|---|---|
id |
string |
Áp dụng cho 'GTAG' có mã đo lường gtag và
'GTM' có mã vùng chứa web (ví dụ: GTM-XXXX).
|
debug |
bất kỳ | Nếu đúng, hãy yêu cầu và trả về phiên bản gỡ lỗi của tập lệnh đo lường. |
timeout |
số |
Thời gian chờ của yêu cầu tính bằng mili giây; các giá trị không phải là số dương sẽ bị bỏ qua. Nếu yêu cầu hết thời gian chờ, lệnh gọi lại sẽ được gọi bằng undefined cho giá trị tập lệnh và {} cho đối tượng siêu dữ liệu.
|
Các khoá tuỳ chọn không nhận dạng sẽ bị bỏ qua.
Các quyền được liên kết
Cần có quyền send_http
. Quyền này phải được định cấu hình để cho phép truy cập vào ít nhất:
- Cho phép Google Domains
getRemoteAddress
Trả về một chuỗi đại diện cho địa chỉ IP nơi bắt nguồn yêu cầu, ví dụ: 12.345.67.890
cho IPv4 hoặc 2001:0db8:85a3:0:0:8a2e:0370:7334
đối với IPv6, bằng cách đọc các tiêu đề của yêu cầu như Redirected và X-Forwarded-For.
Lưu ý: API này cố gắng hết sức để khám phá IP ban đầu, nhưng 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 này phải được định cấu hì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ó.
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 một 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);
Thông số
Thông số | Loại | Nội dung 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 nội dung nào.
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'
, hàm này sẽ trả về '/foo'
. Tự động xoá tiền tố URL vùng chứa máy chủ 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'
, thì URL này sẽ 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ày. Nếu tham số lặp lại trong chuỗi truy vấn, thì giá trị đầu tiên xuất hiện trong chuỗi truy vấn sẽ được trả về.
Ví dụ
const getRequestQueryParameter = require('getRequestQueryParameter');
const query = getRequestQueryParameter('query');
if (query) {
// Process query here.
}
Cú pháp
getRequestQueryParameter(name);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
name |
string | Tên tham số truy vấn. |
Các quyền được liên kết
getRequestQueryParameters
Trả về các tham số truy vấn của yêu cầu HTTP đến dưới dạng một đối tượng sẽ ánh xạ tên tham số truy vấn tới giá trị hoặc giá trị tương ứng. Tên và giá trị của thông số sẽ đượ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 chứa 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ề một số đại diện cho thời gian hiện tại tính bằng mili giây kể từ thời gian bắt đầu của hệ thống Unix, được Date.now()
trả về.
Cú pháp
getTimestamp();
Các quyền được liên kết
Không nội dung nào.
getTimestampMillis
Trả về một số đại diện cho thời gian hiện tại tính bằng mili giây kể từ thời gian bắt đầu của hệ thống Unix, được Date.now()
trả về.
Cú pháp
getTimestampMillis();
Các quyền được liên kết
Không nội dung nào.
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' |
Hàm | '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);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
value |
bất kỳ | Giá trị nhập. |
Các quyền được liên kết
Không nội dung nào.
hmacSha256
Tính toán chữ ký được mã hoá bằng Mã xác thực thông báo dựa trên hàm băm (HMAC) với SHA-256. 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ủ thành đường dẫn của tệp khoá JSON được mã hoá UTF-8 theo định dạng sau:
{
"key1": "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5",
"key2": "OTg3NjU0MzIxMHp5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2Jh",
...
}
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)
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
data |
string | Dữ liệu để tính toán giá trị HMAC. |
keyId
|
string | Mã khoá của tệp khoá JSON tham chiếu đến khoá cần sử dụng. |
options
|
đối tượng | Cấu hình API không bắt buộc. (Xem Các tuỳ chọn bên dưới.) |
Tuỳ chọn
Lựa chọn | Loại | Nội dung 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 . Giá trị 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 V1 hoặc false
.
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 nội dung nào.
isRequestMpv2
Trả về true
nếu yêu cầu đến là yêu cầu Measurement Protocol V2 hoặc false
.
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 nội dung nào.
logToConsole
Ghi nhật ký(các) đối số của đối số đó vào bảng điều khiển.
Các nhật ký này xuất hiện trong Logs Explorer (Trình khám phá nhật ký) trên Google Cloud Console.
Trong 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, ...]);
Thông số
API sẽ lấy một hoặc nhiều đối số, mỗi đối số trong số đó được chuyển đổi thành một chuỗi (nếu cần) và ghi 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);
Thông số
Thông số | Loại | Nội dung 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 nội dung nào.
makeNumber
Chuyển đổi giá trị đã cho thành số.
Cú pháp
makeNumber(value);
Thông số
Thông số | Loại | Nội dung 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 nội dung nào.
makeString
Trả về giá trị đã cho dưới dạng một chuỗi.
Cú pháp
makeString(value);
Thông số
Thông số | Loại | Nội dung 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 nội dung nào.
makeTableMap
Chuyển đổi một đối tượng bảng đơn giản có hai cột thành Map
. Trường này dùng để thay đổi trường mẫu SIMPLE_TABLE
có 2 cột thành một định dạng dễ quản lý hơn.
Ví dụ: hàm này có thể chuyển đổi một đối tượng bảng:
[
{'key': 'k1', 'value': 'v1'},
{'key': 'k2', 'value': 'v2'}
]
vào một Bản đồ:
{
'k1': 'v1',
'k2': 'v2'
}
Trả về một 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
đã chuyển đổi.
Cú pháp
makeTableMap(tableObj, keyColumnName, valueColumnName);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
tableObj |
List (Danh sách) |
Đối tượng bảng cần chuyển đổi. Đây là danh sách bản đồ, trong đó 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à giá trị cột trong hàng.
|
keyColumnName |
string |
Tên của cột có các giá trị sẽ trở thành khoá trong Map đã chuyển đổi.
|
valueColumnName |
string |
Tên của cột mà các giá trị này sẽ trở thành giá trị trong Map đã chuyển đổi.
|
Các quyền được liên kết
Không nội dung nào.
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. Đối với các URL được định dạng đúng cách, các trường không xuất hiện trong chuỗi URL sẽ có giá trị là một chuỗi trống, hoặc trong trường hợp searchParams
, thì sẽ có 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);
Thông số
Thông số | Loại | Nội dung 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 nội dung nào.
returnResponse
Xoá phản hồi mà các mẫu khác đã đặt trước đó bằng các API sửa đổi phản hồi, bao gồm cả setCookie, setPixelResponse, setResponseBody, setResponseHeader và setResponseStatus. Giá trị mặc định là mã trạng thái HTTP 200, nội dung trống và không có tiêu đề.
Bạn nên sử dụng API này từ mẫu ứng dụng.
Cú pháp
returnResponse();
Ví dụ
Hãy xem ví dụ về runContainer
.
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 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.
Các lệnh 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 bối cảnh sự kiện.
Hãy xem ví dụ về addEventCallback để biết thêm thông tin chi tiết.
Bạn nên sử dụng API này 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);
Thông số
Thông số | Loại | Nội dung 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ẻ hoàn tất việc kích hoạt. |
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 bằng cách sử dụng Dữ liệu sự kiện chung đến Google Analytics và trả về một lời hứa giải quyết một đối tượng bằng khoá location
hoặc từ chối một đối tượng có khoá reason
. Đích đến, Universal Analytics hoặc Google Analytics 4, là dựa trên mã đo lường trong dữ liệu sự kiện.
Trường location
được đặt thành tiêu đề location
(nếu có).
Ví dụ
const sendEventToGoogleAnalytics = require('sendEventToGoogleAnalytics');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');
// Sends an event to Google Analytics and returns failure if the request did not
// succeed. Additionally, if the request resulted in a redirect request, the
// code nominates a redirect response to be returned.
sendEventToGoogleAnalytics(event).then((response) => {
if (response.location) {
setResponseHeader('location', response.location);
setResponseStatus(302);
} else {
setResponseStatus(200);
}
data.gtmOnSuccess();
}, (err) => {
setResponseStatus(500);
data.gtmOnFailure();
});
Cú pháp
sendEventToGoogleAnalytics(event);
Thông số
Thông số | Loại | Nội dung 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
. Quyền này phải được định cấu hình để cho phép 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 promise (đảm bảo) sẽ giải quyết kết quả sau khi yêu cầu hoàn tất hoặc hết thời gian chờ.
Kết quả được 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ó đường dẫn đến máy chủ,
lỗi thương lượng SSL, v.v.), lời hứa sẽ bị từ chối với: {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ẽ bị 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]);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
url |
string | URL được yêu cầu. |
options
|
đối tượng | Tùy chọn yêu cầu không bắt buộc. (Xem Các tuỳ chọn bên dưới.) |
Tuỳ chọn
Lựa chọn | Loại | Nội dung 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 khi yêu cầu bị huỷ. Giá trị mặc định là 15000 . |
authorization
|
đối tượng | Đối tượng uỷ quyền không bắt buộc từ lệnh gọi đến getGoogleAuth để bao gồm các 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
Thực hiện yêu cầu HTTP đến URL được chỉ định và trả về một hứa hẹn (promise) sẽ giải quyết bằng phản hồi sau khi yêu cầu hoàn tất hoặc hết thời gian chờ.
Kết quả được 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ó đường dẫn đến máy chủ,
lỗi thương lượng SSL, v.v.), lời hứa sẽ bị từ chối với: {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ẽ bị 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]]);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
url |
string | URL được yêu cầu. |
options
|
đối tượng | Tùy chọn yêu cầu không bắt buộc. (Xem Các tuỳ chọn bên dưới.) |
body |
string | Nội dung yêu cầu không bắt buộc. |
Tuỳ chọn
Lựa chọn | Loại | Nội dung 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 khi yêu cầu bị huỷ. Giá trị mặc định là 15000 . |
authorization
|
đối tượng | Đối tượng uỷ quyền không bắt buộc từ lệnh gọi đến getGoogleAuth để bao gồm các 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 được cung cấp dưới dạng thẻ <img>
. Giao thức lệnh này được hỗ trợ trong các thẻ web Thẻ Google dành cho GA4 và Google Analytics: Sự kiện GA. Bạn phải định cấu hình URL vùng chứa phía máy chủ. Hãy xem hướng dẫn để biết thêm chi tiết.
API này sẽ trả về false
nếu yêu cầu đến không hỗ trợ giao thức lệnh, hoặc nếu phản hồi đã được đẩy. 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)
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
url |
string | URL cần gửi đến trình duyệt. |
Các quyền được liên kết
setCookie
Đặt hoặc xoá cookie có các tuỳ chọn được chỉ định.
Để xoá cookie, bạn phải đặt cookie có cùng đường dẫn và miền với cookie đã được tạo, đồng thời 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 ý rằng bạn phải gọi returnResponse để phản hồi được gửi lại cho ứng dụng.
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]]);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
name |
string | Tên cookie. Tên không phân biệt chữ hoa chữ thường. |
value |
string | Giá trị cookie. |
options |
đối tượng | Các thuộc tính cookie không bắt buộc:domain, expires, fallbackDomain,httpOnly, max- age, path, secure, vàsameSite. (Xem phần Các tuỳ chọn bên dưới.) |
noEncode |
boolean |
Nếu đúng, giá trị cookie sẽ không được mã hoá. Giá trị mặc định là false .
|
domain: Máy chủ lưu trữ mà cookie sẽ được gửi đến. Nếu được đặt thành giá trị đặc biệt "auto", máy chủ lưu trữ sẽ được tự động tính toán bằ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 đề
Expiration (hết hạn): Thời gian tồn tại tối đa của cookie. Thuộc tính này phải là một chuỗi ngày theo định dạng UTC, ví dụ: "Sat, 26 Oct 1985 08:21:00 GMT". Nếu bạn đặt cả
expires
vàmax-age
, thìmax-age
sẽ được ưu tiên.httpOnly (Chỉ có): 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. Số 0 hoặc số âm sẽ làm hết hạn cookie ngay lập tức. Nếu bạn đặt cả
expires
vàmax-age
, thìmax-age
sẽ được ưu tiên.path: Đườ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.
bảo mật: Nếu bạn đặt thành
true
, cookie chỉ được gửi đến máy chủ khi yêu cầu được đưa ra từ điểm cuốihttps:
.sameSite: Xác nhận rằng không được gửi cookie cùng với yêu cầu nhiều nguồn gốc. 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 ảnh GIF 1x1, đặt tiêu đề Content-Type thành "image/gif", đặt tiêu đề lưu vào bộ nhớ đệm để 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 ý rằng bạn phải gọi returnResponse để phản hồi được gửi lại cho ứng dụng.
Cú pháp
setPixelResponse();
Các quyền được liên kết
Cần có quyền access_response
. Quyền này phải được định cấu hì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 ý rằng bạn phải gọi returnResponse để phản hồi được gửi lại cho ứng dụng.
Cú pháp
setResponseBody(body[, encoding]);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
body |
string | Giá trị cần đặt làm nội dung phản hồi. |
encoding |
string |
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 này phải được định cấu hình để cho phép truy cập vào ít nhất:
body
setResponseHeader
Đặt một tiêu đề trong phản hồi sẽ được trả về. Nếu một 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 đó, thì lệnh gọi sau sẽ ghi đè hoặc xoá giá trị do phương thức gọi trước đặt.
Lưu ý rằng bạn phải gọi returnResponse để phản hồi được gửi lại cho ứng dụng.
Cú pháp
setResponseHeader(name, value);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
name |
string | Tên tiêu đề. Tên tiêu đề HTTP không phân biệt chữ hoa chữ thường, vì vậy, tên tiêu đề sẽ được viết thường. |
value |
chuỗi không xác định | Giá trị tiêu đề. Nếu giá trị rỗng hoặc không xác định, thì 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 này phải được định cấu hình để cho phép truy cập vào ít nhất:
headers
setResponseStatus
Đặt mã trạng thái HTTP của phản hồi sẽ được trả về.
Lưu ý rằng bạn phải gọi returnResponse để phản hồi được gửi lại cho ứng dụng.
Cú pháp
setResponseStatus(statusCode);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
statusCode |
số | Mã trạng thái HTTP sẽ được trả về. |
Các quyền được liên kết
Cần có quyền access_response
. Quyền này phải được định cấu hì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 dữ liệu đầu vào và gọi một lệnh gọi lại có chuỗi đại diện được mã hoá trong base64, trừ khi đối tượng options
chỉ định một cách mã hoá đầu ra khác.
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 tuỳ chỉnh trong vùng chứa phía máy chủ phải sử dụng API sha256Sync
để tạo 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);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
input |
string | Chuỗi cần băm. |
onSuccess |
hàm |
Được gọi bằng chuỗi đại diện kết quả, được mã hoá bằng base64, trừ phi đối tượng options chỉ định một phương thức mã hoá đầu ra khác.
|
options |
đối tượng |
Đối tượng tuỳ chọn không bắt buộc để chỉ định phương thức mã hoá đầu ra. Nếu được 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 nội dung nào.
sha256Sync
Tính toán và trả về chuỗi đại diện SHA-256 của đầu vào, được mã hoá bằng base64, trừ khi đố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);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
input |
string | Chuỗi cần băm. |
options |
đối tượng |
Đối tượng tuỳ chọn không bắt buộc để chỉ định phương thức mã hoá đầu ra. Nếu được 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 nội dung nào.
templateDataStorage
Trả về một đối tượng có phương thức để truy cập vào bộ nhớ dữ liệu mẫu. Bộ nhớ dữ liệu mẫu cho phép chia sẻ dữ liệu trong các quá trình thực thi của 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 yêu cầu tiếp theo sẽ có quyền truy cập vào dữ liệu.
"Dữ liệu" trong tên "templateDataStorage" có nghĩa là chỉ các loại dữ liệu thuần tuý, không phải hàm mới có thể được lưu trữ bằng API này. Mọi hàm hoặc 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 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, hãy trả về false
.
Một biểu thức chính quy được tạo bằng cờ chung có trạng thái. Vui lòng 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);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
regex |
Đối tượng | Biểu thức chính quy để kiểm thử, được trả về từ API createRegex. |
string |
string | Chuỗi kiểm thử để kiểm tra. |
Các quyền được liên kết
Không nội dung nào.
toBase64
Mã hoá một chuỗi dưới dạng base64 hoặc base64url. Mặc định là mã hoá base64.
Cú pháp
toBase64(input, options);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
input |
string | Chuỗi cần mã hoá. |
options
|
đối tượng | Cấu hình API không bắt buộc. (Xem Các tuỳ chọn bên dưới.) |
Tuỳ chọn
Lựa chọn | Loại | Nội dung 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 nội dung nào.
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. Hàm này 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 khi có lỗi.
Khi chèn thành công, lời hứa sẽ được giải quyết mà không có đối số.
Khi chèn không thành công, lời hứa sẽ bị từ chối kèm theo một danh sách các đối tượng chứa lý do 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 bị từ chối trong trường hợp này kèm theo danh sách lỗi cho mỗi hàng có một đối tượng hàng để giúp phân biệt những hàng nào đã được chèn (Xem phần Ví dụ về lỗi bên dưới). Hãy xem tài liệu của BigQuery về thông báo lỗi để biết thêm thông tin.
Cú pháp
BigQuery.insert(connectionInfo, rows[, options]);
Thông số | Loại | Nội dung 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 | Tùy chọn yêu cầu không bắt buộc. Các tuỳ chọn được hỗ trợ là: ignoreUnknownValues và skipInvalidRows. Các khoá tuỳ chọn không xác định sẽ bị bỏ qua. (Xem phần Các tuỳ chọn bên dưới.) |
Thông số | Loại | Nội dung mô tả |
---|---|---|
ignoreUnknownValues |
boolean | Nếu bạn đặt thành true , hãy chấp nhận các hàng chứa giá trị không khớp với giản đồ. Các giá trị không xác định sẽ bị bỏ qua. Giá trị mặc định là false . |
skipInvalidRows |
boolean | Nếu bạn đặt thành true , hãy chèn tất cả các hàng hợp lệ của yêu cầu, ngay cả khi có cá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 máy chủ của bạn với cùng chế độ cài đặt bằng cách sử dụng tập lệnh triển khai của chúng tôi. Mô-đun sẽ tự động được thêm vào sau khi hoạt động này kết thúc.
Lỗi không chèn thường có một đối tượng lỗi với khoá reason
:
[{reason: 'invalid'}]
Một lỗi chèn có thể chứa nhiều đối tượng lỗi 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 bằng cách chèn hai hàng mà 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, không hỗ trợ Firestore ở chế độ DataStore.
Firestore.read
Hàm Firestore.read
đọc dữ liệu từ tài liệu trên Firestore và trả về lời hứa giải quyết cho 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ẽ từ chối bằng một đối tượng chứa khoá reason
bằng not_found
.
Cú pháp
Firestore.read(path[, options]);
Thông số | Loại | Nội dung 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 | Tùy chọn yêu cầu không bắt buộc. Các tuỳ chọn được hỗ trợ là: projectId, disableCache và transaction. Các khoá tuỳ chọn không xác định sẽ bị bỏ qua. (Xem phần Các tuỳ chọn bên dưới.) |
Thông số | Loại | Nội dung mô tả |
---|---|---|
projectId |
string | Optional . Mã dự án trên Google Cloud Platform. Nếu bị bỏ qua, projectId sẽ được truy xuất từ biến môi trường GOOGLE_CLOUD_PROJECT , miễn là chế độ cài đặt quyền access_firestore cho mã dự án được đặt thành * hoặc GOOGLE_CLOUD_PROJECT . Nếu vùng chứa máy chủ đang chạy trên Google Cloud, thì GOOGLE_CLOUD_PROJECT sẽ được đặt thành mã nhận dạng của dự án Google Cloud. |
disableCache |
boolean | Optional . 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. Tính năng này sẽ lưu các kết quả vào bộ nhớ đệm trong suốt thời gian yêu cầu. |
transaction |
string | Optional . Giá trị được truy xuất từ Firestore.runTransaction(). Đánh dấu thao tác sẽ được sử dụng trong một 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 bộ sưu tập hoặc tài liệu trên Firestore. Nếu đường dẫn đến một bộ sưu tập, thì tài liệu sẽ được tạo bằng mã nhận dạng được tạo ngẫu nhiên. Nếu đường dẫn dẫn đến một tài liệu và không tồn tại, đường dẫn đó sẽ được tạo. API này trả về một lời hứa phân giải mã nhận dạng của tài liệu đã thêm hoặc sửa đổi. Nếu sử dụng tuỳ chọn giao dịch, API vẫn trả về một lời hứa nhưng sẽ không chứa mã nhận dạng vì các lượt ghi được phân theo lô.
Cú pháp
Firestore.write(path, input[, options]);
Thông số
Thông số | Loại | Nội dung 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 bạn đặt tuỳ chọn hợp nhất, API sẽ hợp nhất các khoá từ mục nhập vào tài liệu. |
options |
đối tượng | Tùy chọn yêu cầu không bắt buộc. Các tuỳ chọn được hỗ trợ là: projectId, merge và transaction. Các khoá tuỳ chọn không xác định sẽ bị bỏ qua. (Xem phần Các tuỳ chọn bên dưới.) |
Thông số | Loại | Nội dung mô tả |
---|---|---|
projectId |
string | Optional . Mã dự án trên Google Cloud Platform. Nếu bị bỏ qua, projectId sẽ được truy xuất từ biến môi trường GOOGLE_CLOUD_PROJECT , miễn là chế độ cài đặt quyền access_firestore cho mã dự án được đặt thành * hoặc GOOGLE_CLOUD_PROJECT . Nếu vùng chứa máy chủ đang chạy trên Google Cloud, thì GOOGLE_CLOUD_PROJECT sẽ được đặt thành mã nhận dạng của dự án Google Cloud. |
merge |
boolean | Optional . Nếu bạn đặt thành true , hãy hợp nhất các khoá từ mục 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. Giá trị mặc định là false . |
transaction |
string | Optional . Giá trị được truy xuất từ Firestore.runTransaction(). Đánh dấu thao tác sẽ được sử dụng trong một 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 lời hứa sẽ phân giải tới một mảng tài liệu trên Firestore phù hợp với các điều kiện truy vấn. Đối tượng tài liệu trên Firestore giống như được liệt kê trong Firestore.read
ở trên. Nếu không có tài liệu nào khớp với điều kiện truy vấn, thì 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 | Nội dung mô tả |
---|---|---|
collection |
string | Đường dẫn đến bộ sưu tập. 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ột mảng với ba giá trị: key, operator và expectedValue. E.g.:
[["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. Vui lòng tham khảo các toán tử truy vấn của Firestore để biết danh sách các toán tử truy vấn tương thích. |
options |
đối tượng | Tùy chọn yêu cầu không bắt buộc. Các tuỳ chọn được hỗ trợ là: projectId, disableCache, limit và transaction. Các khoá tuỳ chọn không xác định sẽ bị bỏ qua. (Xem phần Các tuỳ chọn bên dưới.) |
Thông số | Loại | Nội dung mô tả |
---|---|---|
projectId |
string | Optional . Mã dự án trên Google Cloud Platform. Nếu bị bỏ qua, projectId sẽ được truy xuất từ biến môi trường GOOGLE_CLOUD_PROJECT , miễn là chế độ cài đặt quyền access_firestore cho mã dự án được đặt thành * hoặc GOOGLE_CLOUD_PROJECT . Nếu vùng chứa máy chủ đang chạy trên Google Cloud, thì GOOGLE_CLOUD_PROJECT sẽ được đặt thành mã nhận dạng của dự án Google Cloud. |
disableCache |
boolean | Optional . 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. Tính năng này sẽ lưu các kết quả vào bộ nhớ đệm trong suốt thời gian yêu cầu. |
limit |
số | Optional . Thay đổi số lượng kết quả tối đa mà truy vấn trả về, giá trị mặc định là 5. |
transaction |
string | Optional . Giá trị được truy xuất từ Firestore.runTransaction(). Đánh dấu thao tác sẽ được sử dụng trong một 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 đọc và ghi dễ dàng từ Firestore. Nếu xảy ra xung đột giao dịch hoặc ghi đồng thời, giao dịch sẽ được thử lại tối đa 2 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 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]);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
callback |
hàm | Lệnh gọi lại được gọi bằng mã giao dịch dạng chuỗi. 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 lời hứa. 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 | Tùy chọn yêu cầu không bắt buộc. 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 phần Các tuỳ chọn bên dưới.) |
Thông số | Loại | Nội dung mô tả |
---|---|---|
projectId |
string | Optional . Mã dự án trên Google Cloud Platform. Nếu bị bỏ qua, projectId sẽ được truy xuất từ biến môi trường GOOGLE_CLOUD_PROJECT , miễn là chế độ cài đặt quyền access_firestore cho mã dự án được đặt thành * hoặc GOOGLE_CLOUD_PROJECT . Nếu vùng chứa máy chủ đang chạy trên Google Cloud, thì GOOGLE_CLOUD_PROJECT sẽ được đặt thành mã nhận dạng của dự á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ó sẵn trong mỗi hàm Firestore sẽ bị từ chối bằng một đối tượng chứa khoá reason
:
Firestore.read(...).then(onSuccess, (error) => {
if (error.reason === 'unknown') {
// Handle the unknown error here.
}
});
Nguyên nhân lỗi có thể bao gồm nhưng không giới hạn ở Mã lỗi API Firestore REST.
Các quyền được liên kết
JSON
Trả về một đối tượng cung cấp 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 mà chuỗi mô tả. 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ị đầu vào không phải là một chuỗi, thì dữ liệu đầu vào sẽ bị chuyển đổi 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 không thể phân tích cú pháp giá trị (ví dụ: đối tượng có chu kỳ), thì phương thức này 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 nội dung nào.
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);
Thông số
Các tham số của hàm toán học được chuyển đổi thành số.
Các quyền được liên kết
Không nội dung nào.
Messages
Các API sau đây phối hợp với nhau để cho phép truyền thông báo giữa các phần khác nhau 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 thông báo thuộc loại đó được gửi bằng API sendMessage
(thường 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 hai 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 mọi sự kiện mà ứng dụng tạo ra. Nếu lệnh gọi lại chỉ nhận thông báo từ một sự kiện nhất định, hãy 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
. Hãy 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.
});
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
messageType |
string | Loại thông báo cần nghe. Nếu giá trị không phải là một chuỗi thì hệ thống sẽ chuyển đổi giá trị đó thành một chuỗi. |
callback |
hàm | Lệnh gọi lại sẽ chạy khi một thông báo thuộc loại thông báo tương ứng được gửi. Nếu lệnh gọi lại không phải là một hàm, thì API sẽ không làm gì. |
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
. Quyền này phải được định cấu hình để cho phép ít nhất:
- Loại thông báo có
Usage
là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. Nếu không, hãy trả về false.
Cú pháp
const hasMessageListener = require('hasMessageListener');
hasMessageListener('send_pixel');
Các quyền được liên kết
Không nội dung nào.
sendMessage
Gửi thông báo thuộc loại được chỉ định cho một trình nghe đã đăng ký. Bạn có thể dùng phương thức này để gửi thông báo từ một thẻ về ứ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'});
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
messageType |
string | Loại tin nhắn để gửi. Nếu giá trị không phải là chuỗi thì nó sẽ bị buộc thành chuỗi. |
message |
đối tượng | Tin nhắn cần gửi. Nếu thông báo không phải là đối tượng thì API sẽ không làm gì cả. |
Các quyền được liên kết
Cần có quyền use_message
. Quyền này phải được định cấu hình để cho phép ít nhất:
- Loại thông báo có
Usage
là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 hành vi Object.keys() của Thư viện chuẩn. Phương thức này trả về một mảng tên thuộc tính có thể đếm của riêng một đối tượng nhất định theo thứ tự của vòng lặp for...in...
. Nếu giá trị đầu vào không phải là đối tượng, thì giá trị đó sẽ bị buộc thành đối tượng.
Phương thức values()
cung cấp hành vi Object.values() của Thư viện chuẩn. Phương thức này trả về một mảng gồm các giá trị thuộc tính có thể đếm của riêng một đối tượng nhất định theo thứ tự giống như thứ tự của vòng lặp for...in...
. Nếu giá trị đầu vào không phải là một đối tượng, thì giá trị đó sẽ bị buộc thành một đối tượng.
Phương thức entries()
cung cấp hành vi Object.entries() của Thư viện chuẩn. Phương thức này trả về một mảng gồm các cặp thuộc tính có thể liệt kê [key, value]
của riêng một đối tượng nhất định theo thứ tự giống như vòng lặp for...in...
. Nếu
giá trị đầu vào không phải là một đối tượng, thì giá trị đó sẽ bị buộc thành một đối tượng.
Phương thức freeze()
cung cấp hành vi Object.freeze() của Thư viện chuẩn. Bạn không thể thay đổi được một đối tượng được cố định nữa; việc đóng băng một đối tượng sẽ ngăn không cho thêm thuộc tính mới vào đối tượng đó, xoá các thuộc tính hiện có và thay đổi giá trị của các thuộc tính hiện có. freeze()
trả về cùng một đối tượng đã được truyền vào. Đối số nguyên gốc hoặc đối số rỗng sẽ được coi là
đối tượng bị cố định và sẽ được trả về.
Phương thức delete()
cung cấp hành vi xoá toán tử của Thư viện chuẩn. Hàm này sẽ xoá khoá đã cho khỏi đối tượng trừ phi đối tượng bị treo.
Giống như toán tử xoá của Thư viện chuẩn, toán tử này trả về true
nếu giá trị đầu vào đầu tiên (objectInput
) là một đối tượng không bị treo ngay cả khi giá trị đầu vào thứ hai (keyToDelete
) chỉ định một khoá không tồn tại. Phương thức này sẽ trả về false
trong mọi trường hợp khác. Tuy nhiên, toán tử này khác với toán tử xoá của Thư viện chuẩn theo những cách sau:
keyToDelete
không được là một chuỗi được phân tách bằng dấu chấm chỉ định một khoá lồng nhau.- Bạn không thể sử dụng
delete()
để xoá phần tử khỏi một mảng. - Bạn không thể sử dụng
delete()
để xoá bất kỳ tài sản nào khỏi phạm vi toàn cầu.
Cú pháp
Object.keys(objectInput)
Object.values(objectInput)
Object.entries(objectInput)
Object.freeze(objectInput)
Object.delete(objectInput, keyToDelete)
Thông số
Object.keys
Thông số | Loại | Nội dung mô tả |
---|---|---|
objectInput | bất kỳ | Đối tượng có khoá cần liệt kê. Nếu dữ liệu đầu vào không phải là một đối tượng, thì hệ thống sẽ ép buộc đối tượng đó thành một đối tượng. |
Object.values
Thông số | Loại | Nội dung mô tả |
---|---|---|
objectInput | bất kỳ | Đối tượng có giá trị cần liệt kê. Nếu dữ liệu đầu vào không phải là một đối tượng, thì hệ thống sẽ ép buộc thành một đối tượng. |
Object.entries
Thông số | Loại | Nội dung mô tả |
---|---|---|
objectInput | bất kỳ | Đối tượng có cặp khoá/giá trị cần liệt kê. Nếu dữ liệu đầu vào không phải là một đối tượng, thì hệ thống sẽ ép buộc thành một đối tượng. |
Object.freeze
Thông số | Loại | Nội dung mô tả |
---|---|---|
objectInput | bất kỳ | Đối tượng cần đóng băng. Nếu dữ liệu đầu vào không phải là một đối tượng, thì nó sẽ được coi là một đối tượng cố định. |
Object.delete
Thông số | Loại | Nội dung 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 lời hứa.
Lời hứa có chức năng tương đương với lời hứa trong JavaScript. Mỗi thực thể có 3 phương thức trả về một Lời hứa cho phép thực hiện thêm các thao tác khác khi lời hứa kết thúc:
.then()
– Xử lý cả trường hợp đã giải quyết và bị từ chối. Phương thức này sẽ lấy 2 lệnh gọi lại làm 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..catch()
– Chỉ xử lý các trường hợp bị từ chối. Lấy một lệnh gọi lại làm thông số..finally()
– Cung cấp cách chạy mã cho dù lời hứa đã được giải quyết hay bị từ chối. Lấy một lệnh gọi lại dưới dạng tham số được gọi mà không có đối số.
Một biến trả về một lời hứa bằng với giá trị đã giải quyết 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ề một lời hứa:
- sẽ phân giải khi tất cả dữ liệu đầu vào đã được phân giải, hoặc
- từ chối khi bất kỳ giá trị đầu vào nào từ chối
Cú pháp
Promise.all(inputs);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
inputs |
Mảng | Một mảng giá trị hoặc hứa hẹn. Nếu một dữ liệu đầu vào không phải là một lời hứa, thì dữ liệu đầu vào đó sẽ được truyền qua như thể đó là giá trị đã phân giải của một lời hứa. Gửi lỗi 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 nội dung nào.
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);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
resolver |
hàm | Một hàm được gọi bằng hai hàm – phân giải và từ chối. Lời hứa được trả về sẽ được phân giải hoặc từ chối khi thông số tương ứng được gọi. Gửi lỗi nếu trình phân giải không phải là một 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 nội dung nào.
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 mẫu 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âu lệnh require()
. [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 nhận định thành thạo về API nhất định.
Cú pháp
assertApi(apiName)
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
apiName |
string | Tên của API cần kiểm tra; cùng một chuỗi được truyền đến require() .
|
Người 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 lập mô hình 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 để đưa ra nhận định thành thạo về giá trị của một đối tượng. Lỗi xác nhận sẽ ngay lập tức dừng hoạt động kiểm thử và đánh dấu là không thành công. Tuy nhiên, lỗi trong một lượ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)
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
actual |
bất kỳ | Giá trị để sử dụng trong các lần kiểm tra độ 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. |
Người so khớp
Trình so khớp | Nội dung mô tả |
---|---|
isUndefined() |
Xác nhận rằng đối tượng là undefined . |
isDefined() |
Xác nhận rằng đối tượng không phải là undefined . |
isNull() |
Xác nhận rằng đối tượng là null . |
isNotNull() |
Xác nhận rằng đối tượng không phải là null . |
isFalse() |
Xác nhận rằng đối tượng là false . |
isTrue() |
Xác nhận rằng đối tượng là true . |
isFalsy() |
Xác nhận rằng đối tượng là giả mạo. Các giá trị giả là undefined , null , false , NaN , 0 và '' (chuỗi trống). |
isTruthy() |
Xác nhận rằng chủ đề là trung thực. Các giá trị giả là undefined , null , false , NaN , 0 và '' (chuỗi trống). |
isNaN() |
Xác nhận rằng tiêu đề là giá trị NaN. |
isNotNaN() |
Xác nhận rằng tiêu đề là giá trị bất kỳ ngoài NaN. |
isInfinity() |
Xác nhận rằng đối tượng là Infinity dương hoặc âm. |
isNotInfinity() |
Xác nhận rằng chủ thể là bất kỳ giá trị nào ngoài Infinity dương hoặc âm. |
isEqualTo(expected) |
Xác nhận rằng chủ thể tương đương với giá trị đã cho. Đây là tính năng so sánh giá trị chứ không phải là so sánh tham khảo. Nội dung của các đối tượng và mảng được so sánh theo quy tắc đệ quy. |
isNotEqualTo(expected) |
Xác nhận rằng chủ thể không bằng với giá trị đã cho. Đây là phần so sánh giá trị chứ không phải là so sánh tham chiếu. Nội dung của các đối tượng và mảng được so sánh theo quy tắc đệ quy. |
isAnyOf(...expected) |
Xác nhận rằng chủ thể tương đương với một trong các giá trị đã cho. Đây là phần so sánh giá trị chứ không phải là so sánh tham khảo. Nội dung của các đối tượng và mảng được so sánh theo quy tắc đệ quy. |
isNoneOf(...expected) |
Xác nhận rằng chủ thể không bằng bất kỳ giá trị nào đã cho. Đây là phần so sánh giá trị chứ không phải là so sánh tham khảo. Nội dung của các đối tượng và mảng được so sánh theo quy tắc đệ quy. |
isStrictlyEqualTo(expected) |
Xác nhận rằng chủ thể hoàn toàn bằng (=== ) với giá trị đã cho. |
isNotStrictlyEqualTo(expected) |
Xác nhận rằng chủ thể này không hoàn toàn bằng (!== ) với giá trị đã cho. |
isGreaterThan(expected) |
Xác nhận rằng chủ thể lớn hơn (> ) giá trị đã cho trong phép so sánh có thứ tự. |
isGreaterThanOrEqualTo(expected) |
Xác nhận rằng chủ thể lớn hơn hoặc bằng (>= ) giá trị đã cho trong một phép so sánh có thứ tự. |
isLessThan(expected) |
Xác nhận rằng chủ thể nhỏ hơn (< ) giá trị đã cho trong phép so sánh có 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 tiêu đề 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à tính năng so sánh giá trị, không phải là so sánh tham khảo. Nội dung của các đối tượng và mảng được so sánh theo quy tắc đệ quy. |
doesNotContain(...expected) |
Xác nhận rằng chủ đề là một mảng hoặc chuỗi không chứa giá trị nào đã cho. Đây là phần so sánh giá trị, không phải là so sánh tham khảo. Nội dung của đối tượng và mảng được so sánh theo quy tắc đệ quy. |
containsExactly(...expected) |
Xác nhận rằng chủ thể là một mảng chứa tất cả giá trị đã cho theo thứ tự bất kỳ và không có giá trị nào khác. Đây là phần so sánh giá trị chứ không phải là so sánh tham chiếu. Nội dung của các đối tượng và mảng được so sánh theo quy tắc đệ quy. |
doesNotContainExactly(...expected) |
Xác nhận rằng chủ thể là một mảng chứa một tập hợp giá trị khác từ các giá trị đã cho theo thứ tự bất kỳ. Đây là tính năng so sánh giá trị, không phải là so sánh tham khảo. Nội dung của các đối tượng và mảng được so sánh theo quy tắc đệ quy. |
hasLength(expected) |
Xác nhận rằng tiêu đề 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ảng hoặc chuỗi. |
isEmpty() |
Xác nhận rằng tiêu đề 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ảng hoặc chuỗi. |
isNotEmpty() |
Xác nhận rằng tiêu đề 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 đối tượng là một mảng. |
isBoolean() |
Xác nhận rằng kiểu của đối tượng là một boolean. |
isFunction() |
Xác nhận rằng kiểu đối tượng là một hàm. |
isNumber() |
Xác nhận rằng kiểu đối tượng là một số. |
isObject() |
Xác nhận rằng kiểu đối tượng là một đối tượng. |
isString() |
Xác nhận rằng kiểu đối tượng 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 thất bại trong 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);
Thông số
Thông số | Loại | Nội dung 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 các API hộp cát. API mô phỏng này có thể sử dụng an toàn trong mã mẫu, nhưng sẽ không hoạt động khi không ở chế độ kiểm thử. Các bản mô phỏng sẽ được đặt lại trước khi chạy mỗi lượt kiểm thử.
Cú pháp
mock(apiName, returnValue);
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
apiName |
string | Tên của API cần mô phỏng; cùng chuỗi như được truyền đến require() |
returnValue |
bất kỳ | Giá trị để 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 thay cho API Hộp cát; nếu returnValue không phải là hàm, thì giá trị đó sẽ được trả về thay cho API Hộp cát. |
Ví dụ
mock('encodeUri', "https://endpoint.example.com/?account=12345");
mock('sendPixel', function(url, onSuccess, onFailure) {
onSuccess();
});
runCode
Chạy mã cho mẫu, tức là nội dung của thẻ Code (Mã), trong môi trường thử nghiệm hiện tại với một đối tượng dữ liệu đầu vào nhất định.
Cú pháp
runCode(data)
Thông số
Thông số | Loại | Nội dung mô tả |
---|---|---|
data |
đối tượng | Đối tượng dữ liệu 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
cho tất cả các loại mẫu khác.
Ví dụ
runCode({field1: 123, field2: 'value'});