В этом документе описаны API для добавления тегов на стороне сервера.
addEventCallback
Регистрирует функцию обратного вызова, которая будет вызываться в конце события. Обратный вызов будет вызван после выполнения всех тегов события. В обратный вызов передаются два значения: идентификатор контейнера, вызывающего функцию, и объекта, содержащего информацию о событии.
Когда этот API используется в теге, он связан с текущим событием. Когда этот API используется в клиенте, он должен быть привязан к определенному событию с помощью функции bindToEvent
API runContainer
. Более подробную информацию смотрите в примере .
Синтаксис
const addEventCallback = require('addEventCallback');
addEventCallback((containerId, eventData) => {
// Take some action based on the event data.
});
Параметры
Параметр | Тип | Описание |
---|---|---|
callback | функция | Функция, вызываемая в конце события. |
Объект eventData
содержит следующие данные:
Имя ключа | Тип | Описание |
---|---|---|
tags | Множество | Массив объектов данных тега. Каждый тег, сработавший во время события, будет иметь запись в этом массиве. Объект данных тега содержит идентификатор тега ( id ), его статус выполнения ( status ) и время выполнения ( executionTime ). Данные тега также будут включать дополнительные метаданные тега, настроенные для тега. |
В клиенте:
const addEventCallback = require('addEventCallback');
const claimRequest = require('claimRequest');
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const logToConsole = require('logToConsole');
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
claimRequest();
const events = extractEventsFromMpv1();
let eventsCompleted = 0;
events.forEach((evt, i) => {
runContainer(evt, /* onComplete= */ (bindToEvent) => {
bindToEvent(addEventCallback)((containerId, eventData) => {
logToConsole('Event Number: ' + i);
eventData.tags.forEach((tag) => {
logToConsole('Tag ID: ' + tag.id);
logToConsole('Tag Status: ' + tag.status);
logToConsole('Tag Execution Time: ' + tag.executionTime);
});
});
if (events.length === ++eventsCompleted) {
returnResponse();
}
});
});
В теге:
const addEventCallback = require('addEventCallback');
addEventCallback((containerId, eventData) => {
// This will be called at the end of the current event.
});
Связанные разрешения
callLater
Планирует асинхронный вызов функции. Функция будет вызвана после возврата текущего кода. Это эквивалентно setTimeout(<function>, 0)
.
Пример
const callLater = require('callLater');
const logToConsole = require('logToConsole');
callLater(() => {
logToConsole('Logged asynchronously');
});
Синтаксис
callLater(function)
Параметры
Параметр | Тип | Описание |
---|---|---|
function | функция | Функция для вызова. |
Связанные разрешения
Никто.
claimRequest
Используйте этот API в клиенте, чтобы запросить запрос. После того как запрос заявлен, контейнер не запускает дополнительных клиентов.
Этот API выдает исключение, если вызывается в теге или переменной. Этот API выдает исключение, если вызывается после возврата клиента (например, если вызывается в асинхронном обратном вызове, например, в callLater
или функции runContainer
onComplete
).
Клиент должен запросить запрос, используя этот API, прежде чем вызывать API runContainer
.
Пример
const claimRequest = require('claimRequest');
claimRequest();
Синтаксис
claimRequest();
Связанные разрешения
Никто.
computeEffectiveTldPlusOne
Возвращает эффективный домен верхнего уровня + 1 (eTLD+1) данного домена или URL-адреса. eTLD+1 рассчитывается путем оценки домена на соответствие правилам списка общедоступных суффиксов . eTLD+1 обычно является доменом самого высокого уровня, для которого вы можете установить файл cookie.
Если аргумент имеет значение NULL или не определен, значение аргумента возвращается без изменений. В противном случае аргумент приводится к строке. Если аргумент не является допустимым доменом или URL-адресом, возвращается пустая строка. Если серверу не удается получить список общедоступных суффиксов, значение аргумента возвращается без изменений.
Пример
const computeEffectiveTldPlusOne = require('computeEffectiveTldPlusOne');
// Returns 'example.co.uk'
computeEffectiveTldPlusOne('analytics.example.co.uk');
// Returns 'example.co.uk'
computeEffectiveTldPlusOne('https://analytics.example.co.uk/path');
Синтаксис
computeEffectiveTldPlusOne(domainOrUrl);
Параметры
Параметр | Тип | Описание |
---|---|---|
domainOrUrl | нить | Домен или URL-адрес, по которому рассчитывается eTLD+1. |
Связанные разрешения
Никто.
createRegex
Создает новый экземпляр регулярного выражения и возвращает его в объекте. Вы не можете получить доступ к регулярному выражению напрямую. Однако вы можете передать его в API testRegex
, String.replace()
, String.match()
и String.search()
.
Возвращает null
, если регулярное выражение недействительно или Re2 недоступен на сервере.
Этот API использует реализацию Re2 . Образ сервера Docker должен быть версии 2.0.0 или новее.
Пример
const createRegex = require('createRegex');
const domainRegex = createRegex('\\w+\\.com', 'i');
// Returns '/foobar'
'example.com/foobar'.replace(domainRegex, '');
Синтаксис
createRegex(pattern, flags);
Параметры
Параметр | Тип | Описание |
---|---|---|
pattern | нить | Текст регулярного выражения. |
flags | нить | Необязательная строка, содержащая флаги создаваемого регулярного выражения. Поддерживаются `g` (глобальный) и `i` (игнорировать регистр). Все остальные персонажи молча игнорируются. |
Связанные разрешения
Никто.
Минимальная версия образа
decodeUri
Декодирует любые закодированные символы в предоставленном URI. Возвращает строку , представляющую декодированный URI. Возвращает undefined
если введен неверный ввод.
Пример
const decodeUri = require('decodeUri');
const decodedUrl = decodeUri(data.encodedUrl);
if (decodedUrl) {
// ...
}
Синтаксис
decodeUri(encoded_uri);
Параметры
Параметр | Тип | Описание |
---|---|---|
encoded_uri | нить | URI, закодированный с помощью encodeUri() или другими способами. |
Связанные разрешения
Никто.
decodeUriComponent
Декодирует любые закодированные символы в предоставленном компоненте URI. Возвращает строку , представляющую декодированный компонент URI. Возвращает undefined
при вводе неверных данных.
Пример
const decodeUriComponent = require('decodeUriComponent');
const decodedQuery = decodeUriComponent(data.query);
if (decodedQuery) {
// ...
}
Синтаксис
decodeUriComponent(encoded_uri_component);
Параметры
Параметр | Тип | Описание |
---|---|---|
encoded_uri_component | нить | Компонент URI, закодированный с помощью encodeUriComponent() или другими способами. |
Связанные разрешения
Никто.
encodeUri
Возвращает закодированный универсальный идентификатор ресурса (URI), экранируя специальные символы. Возвращает строку , представляющую предоставленную строку, закодированную как URI.
Пример
const encodeUri = require('encodeUri');
const sendHttpGet = require('sendHttpGet');
sendHttpGet('https://www.example.com/' + encodeUri(pathInput));
Синтаксис
encodeUri(uri);
Параметры
Параметр | Тип | Описание |
---|---|---|
uri | нить | Полный URI. |
Связанные разрешения
Никто.
encodeUriComponent
Возвращает закодированный универсальный идентификатор ресурса (URI), экранируя специальные символы. Возвращает строку , представляющую предоставленную строку, закодированную как URI.
Пример
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
sendHttpGet('https://www.example.com/?' + encodeUriComponent(queryInput));
Синтаксис
encodeUriComponent(str);
Параметры
Параметр | Тип | Описание |
---|---|---|
str | нить | Компонент URI. |
Связанные разрешения
Никто.
extractEventsFromMpv1
Преобразует входящий запрос Measurement Protocol V1 в список событий в формате Unified Schema. Возвращает список извлеченных событий. Выдает ошибку, если запрос имеет неправильный формат.
Пример
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const isRequestMpv1 = require('isRequestMpv1');
if (isRequestMpv1()) {
const events = extractEventsFromMpv1();
for (let i = 0; i < events.length; ++i) {
const event = events[i];
// Process event.
}
}
Синтаксис
extractEventsFromMpv1();
Связанные разрешения
Требуется разрешение read_request
. Разрешение должно быть настроено так, чтобы разрешить доступ как минимум к:
-
body
-
query parameters
extractEventsFromMpv2
Преобразует входящий запрос Measurement Protocol V2 в список событий в формате Unified Schema. Возвращает список извлеченных событий. Выдает ошибку, если запрос имеет неправильный формат.
Пример
const extractEventsFromMpv2 = require('extractEventsFromMpv2');
const isRequestMpv2 = require('isRequestMpv2');
if (isRequestMpv2()) {
const events = extractEventsFromMpv2();
for (let i = 0; i < events.length; ++i) {
const event = events[i];
// Process event.
}
}
Синтаксис
extractEventsFromMpv2();
Связанные разрешения
Требуется разрешение read_request
. Разрешение должно быть настроено так, чтобы разрешить доступ как минимум к:
-
body
-
query parameters
fromBase64
Декодирует строку в кодировке Base64. Возвращает undefined
, если введенные данные недействительны.
Синтаксис
fromBase64(base64EncodedString);
Параметры
Параметр | Тип | Описание |
---|---|---|
base64EncodedString | нить | Строка в кодировке Base64. |
Пример
const fromBase64 = require('fromBase64');
const greeting = fromBase64('aGVsbG8=');
if (greeting === 'hello') {
// ...
}
Связанные разрешения
Никто.
generateRandom
Возвращает случайное число (целое) в заданном диапазоне.
Пример
const generateRandom = require('generateRandom');
const randomValue = generateRandom(0, 10000000);
Синтаксис
generateRandom(min, max);
Параметры
Параметр | Тип | Описание |
---|---|---|
min | число | Минимальное потенциальное значение возвращаемого целого числа (включительно). |
max | число | Максимальное потенциальное значение возвращаемого целого числа (включительно). |
Связанные разрешения
Никто.
getAllEventData
Возвращает копию данных события.
Синтаксис
getAllEventData();
Связанные разрешения
getClientName
Возвращает строку , содержащую имя текущего клиента.
Синтаксис
getClientName();
Связанные разрешения
getContainerVersion
Возвращает объект, содержащий данные о текущем контейнере. Возвращаемый объект будет иметь следующие поля:
{
containerId: string,
debugMode: boolean,
environmentName: string,
environmentMode: boolean,
previewMode: boolean,
version: string,
}
Пример
const getContainerVersion = require('getContainerVersion');
const containerVersion = getContainerVersion();
const containerId = containerVersion['containerId'];
const isDebug = containerVersion['debugMode'];
Синтаксис
getContainerVersion();
Связанные разрешения
getCookieValues
Возвращает массив, содержащий значения всех файлов cookie с заданным именем.
Пример
const getCookieValues = require('getCookieValues');
const lastVisit = getCookieValues('lastVisit')[0];
if (lastVisit) {
// ...
}
Синтаксис
getCookieValues(name[, noDecode]);
Параметры
Параметр | Тип | Описание |
---|---|---|
name | нить | Имя файла cookie. |
noDecode | логическое значение | Если true , значения cookie не будут декодироваться перед возвратом. По умолчанию установлено значение false . |
Связанные разрешения
getEventData
Возвращает копию значения по заданному пути в данных события. Возвращает undefined
, если данные о событии отсутствуют или по указанному пути нет значения.
Пример
const getEventData = require('getEventData');
const campaignId = getEventData('campaign.id');
const itemId = getEventData('items.0.id');
const referrer = getEventData('page_referrer');
Параметры
Параметр | Тип | Описание |
---|---|---|
keyPath | любой | Путь к ключу, где компоненты пути разделены точками. Компоненты пути могут быть ключами объекта или индексами массива. Если keyPath не является строкой, он преобразуется в строку. |
Синтаксис
getEventData(keyPath);
Связанные разрешения
getGoogleAuth
Возвращает объект авторизации, который при использовании с sendHttpGet
или sendHttpRequest
будет включать заголовок авторизации для Google Cloud API. Этот API использует учетные данные приложения по умолчанию для автоматического поиска учетных данных в среде сервера.
Пример
const getGoogleAuth = require('getGoogleAuth');
const logToConsole = require('logToConsole');
const sendHttpGet = require('sendHttpGet');
const auth = getGoogleAuth({
scopes: ['https://www.googleapis.com/auth/datastore']
});
sendHttpGet(
'https://firestore.googleapis.com/v1/projects/my-project/databases/(default)/documents/collection/document',
{authorization: auth}
).then((result) => {
if (result.statusCode >= 200 && result.statusCode < 300) {
logToConsole('Result: ' + result.body);
data.gtmOnSuccess();
} else {
data.gtmOnFailure();
}
});
Синтаксис
getGoogleAuth(scopes);
Параметры
Параметр | Тип | Описание |
---|---|---|
scopes | Множество | Массив областей API Google OAuth 2.0, к которым требуется запросить доступ. |
Связанные разрешения
Требуется разрешение use_google_credentials
. Разрешение должно быть настроено с одной или несколькими разрешенными областями.
getGoogleScript
Извлекает ресурс из заранее определенного набора скриптов Google и возвращает обещание со сценарием и связанными с ним метаданными кэширования.
Промис будет преобразован в объект, содержащий два ключа: script
и metadata
. Если запрос не выполнен, обещание будет отклонено с указанием ключа reason
.
Объект metadata
будет содержать следующие метаданные кэширования на основе заголовков ответа ресурса; каждое поле будет присутствовать только в том случае, если соответствующий заголовок присутствует в ответе ресурса.
{
'cache-control': string,
'expires': string,
'last-modified': string,
}
Пример
const getGoogleScript = require('getGoogleScript');
getGoogleScript('ANALYTICS').then((result) => {
// Operate on result.script and result.metadata here.
});
Синтаксис
getGoogleScript(script[, options]);
Параметры
Параметр | Тип | Описание |
---|---|---|
script | нить | Имя скрипта. Поддерживаемые сценарии: 'ANALYTICS' , 'GTAG' и 'GTM' .Опция 'ANALYTICS' извлекает скрипт Google Analytics с https://www.google-analytics.com/analytics.js .Опция 'GTAG' извлекает скрипт глобального тега сайта (gtag.js) из https://www.googletagmanager.com/gtag/js .Опция 'GTM' извлекает сценарий Диспетчера тегов Google с https://www.googletagmanager.com/gtm.js . |
options | объект | Дополнительные параметры запроса. Ниже приведены поддерживаемые варианты. |
Параметры
Вариант | Тип | Описание |
---|---|---|
id | нить | Применимо к 'GTAG' с идентификатором измерения gtag и 'GTM' с идентификатором веб-контейнера (например, GTM-XXXX). |
debug | любой | Если это правда, запрашивает и возвращает отладочную версию сценария измерения. |
timeout | число | Таймаут запроса в миллисекундах; неположительные значения игнорируются. Если время ожидания запроса истекло, обратный вызов будет вызван с undefined значением сценария и {} для объекта метаданных. |
Нераспознанные ключи опций игнорируются.
Связанные разрешения
Требуется разрешение send_http
. Разрешение должно быть настроено так, чтобы разрешить доступ как минимум к:
- Разрешить домены Google
getRemoteAddress
Возвращает строковое представление IP-адреса, с которого возник запрос, например 12.345.67.890
для IPv4 или 2001:0db8:85a3:0:0:8a2e:0370:7334
для IPv6, путем чтения заголовков запроса, таких как Forwarded и X-Forwarded- Для. Примечание. Этот API делает все возможное, чтобы обнаружить исходный IP-адрес, но не может гарантировать точность результата.
Синтаксис
getRemoteAddress();
Связанные разрешения
Требуется разрешение read_request
. Разрешение должно быть настроено так, чтобы разрешить доступ как минимум к:
- Заголовки
Forwarded
иX-Forwarded-For
- Удаленный IP-адрес
getRequestBody
Возвращает тело запроса в виде строки , если она присутствует, или undefined
в противном случае.
Синтаксис
getRequestBody();
Связанные разрешения
getRequestHeader
Возвращает значение именованного заголовка запроса в виде строки , если оно присутствует, или undefined
в противном случае. Если заголовок повторяется, возвращаемые значения объединяются с помощью ', '
.
Пример
const getRequestHeader = require('getRequestHeader');
const host = getRequestHeader('host');
Синтаксис
getRequestHeader(headerName);
Параметры
Параметр | Тип | Описание |
---|---|---|
headerName | нить | Имя заголовка. Это значение нечувствительно к регистру. |
Связанные разрешения
getRequestMethod
Возвращает метод запроса, например 'GET'
или 'POST'
, в виде строки .
Пример
const getRequestMethod = require('getRequestMethod');
if (getRequestMethod() === 'POST') {
// Handle the POST request here.
}
Синтаксис
getRequestMethod();
Связанные разрешения
Никто.
getRequestPath
Возвращает путь запроса без строки запроса. Например, если URL-адрес — '/foo?id=123'
, возвращается '/foo'
. Автоматически удаляет префикс URL-адреса контейнера сервера из пути. Например, если URL-адрес контейнера сервера — https://example.com/analytics
, а путь запроса — '/analytics/foo'
, возвращается '/foo'
.
Пример
const getRequestPath = require('getRequestPath');
const requestPath = getRequestPath();
if (requestPath === '/') {
// Handle a request for the root path.
}
Синтаксис
getRequestPath();
Связанные разрешения
getRequestQueryParameter
Возвращает декодированное значение именованного параметра строки запроса в виде строки или undefined
, если параметр отсутствует. Если параметр повторяется в строке запроса, будет возвращено первое значение, которое появляется в строке запроса.
Пример
const getRequestQueryParameter = require('getRequestQueryParameter');
const query = getRequestQueryParameter('query');
if (query) {
// Process query here.
}
Синтаксис
getRequestQueryParameter(name);
Параметры
Параметр | Тип | Описание |
---|---|---|
name | нить | Имя параметра запроса. |
Связанные разрешения
getRequestQueryParameters
Возвращает параметры запроса входящего HTTP-запроса в виде объекта, который сопоставляет имена параметров запроса с соответствующим значением или значениями. Имена и значения параметров декодируются.
Пример
const getRequestQueryParameters = require('getRequestQueryParameters');
const queryParameters = getRequestQueryParameters();
if (queryParameters['search']) {
// Handle the search query here.
const maxResults = queryParameters['max_results'];
}
Синтаксис
getRequestQueryParameters();
Связанные разрешения
getRequestQueryString
Возвращает запрос запроса в виде строки без начального вопросительного знака или пустой строки, если URL-адрес запроса не содержит строку запроса.
Пример
const getRequestQueryString = require('getRequestQueryString');
const queryString = getRequestQueryString();
if (queryString !== '') {
// Handle the query string.
}
Синтаксис
getRequestQueryString();
Связанные разрешения
getTimestamp
Устарело. Предпочитаю getTimestampMillis .
Возвращает число , представляющее текущее время в миллисекундах с эпохи Unix, возвращаемое Date.now()
.
Синтаксис
getTimestamp();
Связанные разрешения
Никто.
getTimestampMillis
Возвращает число , представляющее текущее время в миллисекундах с эпохи Unix, возвращаемое Date.now()
.
Синтаксис
getTimestampMillis();
Связанные разрешения
Никто.
getType
Возвращает строку, описывающую тип данного значения.
Тип входа | Возвращаемое значение |
---|---|
нить | 'string' |
число | 'number' |
логическое значение | 'boolean' |
нулевой | 'null' |
неопределенный | 'undefined' |
Множество | 'array' |
Объект | 'object' |
Функция | 'function' |
Пример
const getType = require('getType');
const type = getType(value);
if (type === 'string') {
// Handle string input.
} else if (type === 'number') {
// Handle numeric input.
} else {
logToConsole('Unsupported input type: ', type);
}
Синтаксис
getType(value);
Параметры
Параметр | Тип | Описание |
---|---|---|
value | любой | Входное значение. |
Связанные разрешения
Никто.
hmacSha256
Вычисляет закодированную подпись с использованием кода проверки подлинности сообщения на основе хэша (HMAC) с SHA-256. По умолчанию используется кодировка base64url
.
Чтобы использовать этот API, установите для переменной среды SGTM_CREDENTIALS
на сервере путь к ключевому файлу JSON в кодировке UTF-8 следующего формата:
{
"keys": {
"key1": "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5",
"key2": "OTg3NjU0MzIxMHp5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2Jh",
...
}
}
Значения представляют собой ключи HMAC в кодировке Base64. Текст JSON не должен начинаться с маркера порядка байтов.
Пример
const hmacSha256 = require('hmacSha256');
const toBase64 = require('toBase64');
const header = toBase64('{"alg":"HS256","typ":"JWT"}', {urlEncoding: true});
const claim = toBase64('{"sub":"1234567890","iat":1698164946}', {urlEncoding: true});
const signature = hmacSha256(header + '.' + claim, 'key1');
const jwt = header + "." + claim + '.' + signature;
Синтаксис
hmacSha256(data, keyId, options)
Параметры
Параметр | Тип | Описание |
---|---|---|
data | нить | Данные для вычисления значения HMAC. |
keyId | нить | Идентификатор ключа из файла ключей JSON, относящийся к используемому ключу. |
options | объект | Дополнительная конфигурация API. (См . «Параметры» ниже.) |
Параметры
Вариант | Тип | Описание |
---|---|---|
outputEncoding | нить | Указывает формат кодировки возвращаемого значения. Поддерживаемые форматы: hex , base64 или base64url . По умолчанию используется base64url , если не указано иное. |
Связанные разрешения
Минимальная версия образа
isRequestMpv1
Возвращает true
, если входящий запрос является запросом Measurement Protocol V1, или false
в противном случае.
Пример
const isRequestMpv1 = require('isRequestMpv1');
if (isRequestMpv1()) {
// Handle Measurement Protocol V1 request.
const events = extractEventsFromMpv1();
}
Синтаксис
isRequestMpv1();
Связанные разрешения
Никто.
isRequestMpv2
Возвращает true
, если входящий запрос является запросом Measurement Protocol V2, или false
в противном случае.
Пример
const isRequestMpv2 = require('isRequestMpv2');
if (isRequestMpv2()) {
// Handle Measurement Protocol V2 request.
const events = extractEventsFromMpv2();
}
Синтаксис
isRequestMpv2();
Связанные разрешения
Никто.
logToConsole
Записывает свои аргументы в консоль.
Эти журналы видны в обозревателе журналов в Google Cloud Console. В обозревателе журналов выполните запрос logName =~ "stdout"
чтобы просмотреть записи журнала, созданные этим API.
Пример
const logToConsole = require('logToConsole');
const that = 123;
const those = { ... };
logToConsole('that is: ', that, ' and those is: ', those);
Синтаксис
logToConsole(argument1[, argument2, ...]);
Параметры
API принимает один или несколько аргументов, каждый из которых при необходимости преобразуется в строку и выводится в консоль.
Связанные разрешения
makeInteger
Преобразует заданное значение в число (целое).
Синтаксис
makeInteger(value);
Параметры
Параметр | Тип | Описание |
---|---|---|
value | любой тип | Значение для конвертации. |
Связанные разрешения
Никто.
makeNumber
Преобразует заданное значение в число .
Синтаксис
makeNumber(value);
Параметры
Параметр | Тип | Описание |
---|---|---|
value | любой тип | Значение для конвертации. |
Связанные разрешения
Никто.
makeString
Возвращает заданное значение в виде строки .
Синтаксис
makeString(value);
Параметры
Параметр | Тип | Описание |
---|---|---|
value | любой тип | Значение для конвертации. |
Связанные разрешения
Никто.
makeTableMap
Преобразует простой объект таблицы с двумя столбцами в Map
. Это используется для изменения поля шаблона SIMPLE_TABLE
с двумя столбцами в более удобный формат.
Например, эта функция может преобразовать объект таблицы:
[
{'key': 'k1', 'value': 'v1'},
{'key': 'k2', 'value': 'v2'}
]
в карту:
{
'k1': 'v1',
'k2': 'v2'
}
Возвращает объект : к нему добавлена преобразованная Map
пар ключ-значение, в противном случае — null
.
Синтаксис
makeTableMap(tableObj, keyColumnName, valueColumnName);
Параметры
Параметр | Тип | Описание |
---|---|---|
tableObj | Список | Объект таблицы для преобразования. Это список карт, где каждая Map представляет строку в таблице. Каждое имя свойства в объекте строки является именем столбца, а значение свойства — значением столбца в строке. |
keyColumnName | нить | Имя столбца, значения которого станут ключами в преобразованном Map . |
valueColumnName | нить | Имя столбца, значения которого станут значениями в преобразованной Map . |
Связанные разрешения
Никто.
parseUrl
Возвращает объект, содержащий все составные части заданного URL-адреса, аналогично объекту URL
.
Этот API вернет undefined
для любого неправильного URL-адреса. Для правильно отформатированных URL-адресов поля, отсутствующие в строке URL-адреса, будут иметь значение пустой строки или, в случае searchParams
, пустого объекта.
Возвращаемый объект будет иметь следующие поля:
{
href: string,
origin: string,
protocol: string,
username: string,
password: string,
host: string,
hostname: string,
port: string,
pathname: string,
search: string,
searchParams: Object<string, (string|Array)>,
hash: string,
}
Пример
const parseUrl = require('parseUrl');
const urlObject = parseUrl('https://abc:xyz@example.com:8080/foo?param=val%2Cue#bar');
Синтаксис
parseUrl(url);
Параметры
Параметр | Тип | Описание |
---|---|---|
url | нить | Полный URL-адрес, который будет проанализирован. |
Связанные разрешения
Никто.
returnResponse
Сбрасывает ответ, который ранее был задан другими шаблонами, с использованием API, которые изменяют ответ, включая setCookie , setPixelResponse , setResponseBody , setResponseHeader и setResponseStatus . По умолчанию код состояния HTTP 200, пустое тело и отсутствие заголовков.
Рекомендуется использовать этот API из шаблона клиента.
Синтаксис
returnResponse();
Пример
См. пример runContainer
.
Связанные разрешения
runContainer
Запускает логику контейнера (переменные, триггеры, теги) в области события. Если этот API вызывается во время выполнения контейнера, контейнер запускается снова.
Обратные вызовы onComplete
и onStart
получают функцию под bindToEvent
. Используйте bindToEvent
для запуска API в контексте события. Дополнительные сведения см. в примере addEventCallback .
Рекомендуется использовать этот API из шаблона клиента.
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
// Runs the container with a simple pageview event and then returns a response.
runContainer({'event_name': 'pageview'}, () => returnResponse());
Синтаксис
runContainer(event, onComplete, onStart);
Параметры
Параметр | Тип | Описание |
---|---|---|
event | объект | Параметры события. |
onComplete | функция | Обратный вызов, который вызывается после завершения срабатывания всех тегов. |
onStart | функция | Обратный вызов, который вызывается немедленно, до того, как теги начнут активироваться. |
Связанные разрешения
sendEventToGoogleAnalytics
Отправляет одно событие с использованием общих данных событий в Google Analytics и возвращает обещание , которое разрешается в объект с ключом location
или отклоняется в объект с ключом reason
. Назначение, Google Analytics 4, основано на идентификаторе измерения в данных о событии.
В поле location
устанавливается заголовок location
, если он присутствует.
Пример
const logToConsole = require('logToConsole');
const sendEventToGoogleAnalytics = require('sendEventToGoogleAnalytics');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');
// Sends an event to Google Analytics and returns failure if the request did not
// succeed. Additionally, if the request resulted in a redirect request, the
// code nominates a redirect response to be returned.
sendEventToGoogleAnalytics(event).then((response) => {
if (response.location) {
setResponseHeader('location', response.location);
setResponseStatus(302);
} else {
setResponseStatus(200);
}
data.gtmOnSuccess();
}).catch((error) => {
logToConsole(error.reason);
setResponseStatus(500);
data.gtmOnFailure();
});
Синтаксис
sendEventToGoogleAnalytics(event);
Параметры
Параметр | Тип | Описание |
---|---|---|
event | объект | Событие в формате Unified Schema. |
Связанные разрешения
Требуется разрешение send_http
. Разрешение должно быть настроено так, чтобы разрешить доступ как минимум к:
- Разрешить домены Google
sendHttpGet
Выполняет запрос HTTP GET к указанному URL-адресу и возвращает обещание , которое разрешается с результатом после завершения запроса или истечения времени ожидания.
Разрешенный результат — это объект, содержащий три ключа: statusCode
, headers
и body
. Если запрос не выполнен (например, неверный URL-адрес, нет маршрута к хосту, сбой согласования SSL и т. д.), обещание будет отклонено с указанием: {reason: 'failed'}
. Если была установлена опция timeout
и время ожидания запроса истекло, обещание будет отклонено с: {reason: 'timed_out'}
Пример
const sendHttpGet = require('sendHttpGet');
// Returns the response body as the value for a variable.
return sendHttpGet('https://example.com/item/' + data.itemId, {
headers: {key: 'value'},
timeout: 500,
}).then((result) => result.body, () => undefined);
Синтаксис
sendHttpGet(url[, options]);
Параметры
Параметр | Тип | Описание |
---|---|---|
url | нить | Запрошенный URL-адрес. |
options | объект | Дополнительные параметры запроса. (См . «Параметры» ниже.) |
Параметры
Вариант | Тип | Описание |
---|---|---|
headers | нить | Дополнительные заголовки запроса. |
timeout | число | Тайм-аут в миллисекундах, по истечении которого запрос будет прерван. По умолчанию 15000 . |
authorization | объект | Необязательный объект авторизации из вызова getGoogleAuth для включения заголовков авторизации при отправке запросов на googleapis.com . |
Связанные разрешения
sendHttpRequest
Выполняет HTTP-запрос к указанному URL-адресу и возвращает обещание , которое разрешается с ответом после завершения запроса или истечения времени ожидания.
Разрешенный результат — это объект, содержащий три ключа: statusCode
, headers
и body
. Если запрос не выполнен (например, неверный URL-адрес, нет маршрута к хосту, сбой согласования SSL и т. д.), обещание будет отклонено с указанием: {reason: 'failed'}
. Если была установлена опция timeout
и время ожидания запроса истекло, обещание будет отклонено с: {reason: 'timed_out'}
Пример
const sendHttpRequest = require('sendHttpRequest');
const setResponseBody = require('setResponseBody');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');
const postBody = 'interaction=click&campaign=promotion&medium=email';
// Sends a POST request and nominates response based on the response to the POST
// request.
sendHttpRequest('https://example.com/collect', {
headers: {key: 'value'},
method: 'POST',
timeout: 500,
}, postBody).then((result) => {
setResponseStatus(result.statusCode);
setResponseBody(result.body);
setResponseHeader('cache-control', result.headers['cache-control']);
});
Синтаксис
sendHttpRequest(url[, options[, body]]);
Параметры
Параметр | Тип | Описание |
---|---|---|
url | нить | Запрошенный URL-адрес. |
options | объект | Дополнительные параметры запроса. (См . «Параметры» ниже.) |
body | нить | Необязательное тело запроса. |
Параметры
Вариант | Тип | Описание |
---|---|---|
headers | нить | Дополнительные заголовки запроса. |
method | объект | Метод запроса. По умолчанию GET . |
timeout | число | Тайм-аут в миллисекундах, по истечении которого запрос будет прерван. По умолчанию 15000 . |
authorization | объект | Необязательный объект авторизации из вызова getGoogleAuth для включения заголовков авторизации при отправке запросов на googleapis.com . |
Связанные разрешения
sendPixelFromBrowser
Отправляет команду браузеру для загрузки предоставленного URL-адреса в виде тега <img>
. Этот командный протокол поддерживается в веб-тегах Google Tag for GA4 и Google Analytics: GA Event . Необходимо настроить URL-адрес контейнера сервера. Более подробную информацию смотрите в инструкции .
Этот API возвращает false
, если входящий запрос не поддерживает командный протокол или если ответ уже сброшен. В противном случае этот API возвращает true
.
Пример:
const sendPixelFromBrowser = require('sendPixelFromBrowser');
sendPixelFromBrowser('https://example.com/?id=123');
Синтаксис
sendPixelFromBrowser(url)
Параметры
Параметр | Тип | Описание |
---|---|---|
url | нить | URL-адрес для отправки в браузер. |
Связанные разрешения
setCookie
Устанавливает или удаляет файл cookie с указанными параметрами.
Чтобы удалить файл cookie, необходимо установить файл cookie с тем же путем и доменом, с которым был создан файл cookie, и присвоить ему значение срока действия, которое находится в прошлом, например "Thu, 01 Jan 1970 00:00:00 GMT"
.
Обратите внимание, что returnResponse должен быть вызван для отправки ответа обратно клиенту.
Пример
const setCookie = require('setCookie');
// Sets an httpOnly cookie with a max-age of 3600.
setCookie('cookieName', 'cookieValue', {'max-age': 3600, httpOnly: true});
Синтаксис
setCookie(name, value[, options[, noEncode]]);
Параметры
Параметр | Тип | Описание |
---|---|---|
name | нить | Имя файла cookie. Имя не чувствительно к регистру. |
value | нить | Значение файла cookie. |
options | объект | Необязательные атрибуты cookie: domain , expires , FallbackDomain , httpOnly , maxage , path , secure и SameSite . (См. «Параметры» ниже.) |
noEncode | логическое значение | Если это правда, значение cookie не будет закодировано. По умолчанию установлено значение false . |
домен: хост, на который будет отправлен файл cookie. Если установлено специальное значение «auto», хост будет автоматически вычисляться с использованием следующей стратегии:
- eTLD+1 заголовка
Forwarded
, если он присутствует. - eTLD+1 заголовка
X-Forwarded-Host
, если он присутствует. - eTLD+1 заголовка
Host
.
- eTLD+1 заголовка
expires : Максимальный срок действия файла cookie. Это должна быть строка даты в формате UTC, например «Сб, 26 октября 1985 г., 08:21:00 GMT». Если установлены и
expires
, иmax-age
,max-age
имеет приоритет.httpOnly : запрещает JavaScript получать доступ к куки, если
true
.max-age : количество секунд до истечения срока действия файла cookie. Нулевое или отрицательное число приведет к немедленному прекращению действия файла cookie. Если установлены и
expires
, иmax-age
,max-age
имеет приоритет.путь : путь, который должен существовать в запрошенном URL-адресе, иначе браузер не отправит заголовок cookie.
secure : если установлено значение
true
, файл cookie отправляется на сервер только при запросе от конечной точкиhttps:
:.SameSite : утверждает, что файл cookie не должен отправляться с запросами между источниками. Должно быть
'strict'
,'lax'
или'none'
.
Связанные разрешения
setPixelResponse
Устанавливает тело ответа в формате GIF 1x1, устанавливает для заголовка Content-Type значение «image/gif», устанавливает заголовки кэширования, чтобы пользовательские агенты не кэшировали ответ, и устанавливает статус ответа на 200.
Обратите внимание, что returnResponse должен быть вызван для отправки ответа обратно клиенту.
Синтаксис
setPixelResponse();
Связанные разрешения
Требуется разрешение access_response
. Разрешение должно быть настроено так, чтобы разрешить доступ как минимум к:
-
headers
- Должны быть разрешены следующие ключи-
content-type
-
cache-control
-
expires
-
pragma
-
-
body
-
status
setResponseBody
Устанавливает тело ответа в аргумент.
Обратите внимание, что returnResponse должен быть вызван для отправки ответа обратно клиенту.
Синтаксис
setResponseBody(body[, encoding]);
Параметры
Параметр | Тип | Описание |
---|---|---|
body | нить | Значение, которое будет установлено в качестве тела ответа. |
encoding | нить | Кодировка символов тела ответа (по умолчанию 'utf8' ). Поддерживаемые значения включают 'ascii' , 'utf8' , 'utf16le' , 'ucs2' , 'base64' , 'latin1' , 'binary' и 'hex' . |
Связанные разрешения
Требуется разрешение access_response
. Разрешение должно быть настроено так, чтобы разрешить доступ как минимум к:
-
body
setResponseHeader
Устанавливает заголовок в ответе, который будет возвращен. Если заголовок с этим именем (без учета регистра) был ранее установлен этим API, последний вызов перезапишет или очистит значение, установленное предыдущим вызывающим объектом.
Обратите внимание, что returnResponse должен быть вызван для отправки ответа обратно клиенту.
Синтаксис
setResponseHeader(name, value);
Параметры
Параметр | Тип | Описание |
---|---|---|
name | нить | Имя заголовка. Имена HTTP-заголовков не чувствительны к регистру, поэтому имя заголовка будет в нижнем регистре. |
value | строка не определена | Значение заголовка. Если значение равно нулю или не определено, именованный заголовок удаляется из возвращаемого ответа. |
Связанные разрешения
Требуется разрешение access_response
. Разрешение должно быть настроено так, чтобы разрешить доступ как минимум к:
-
headers
setResponseStatus
Устанавливает код состояния HTTP ответа, который будет возвращен.
Обратите внимание, что returnResponse должен быть вызван для отправки ответа обратно клиенту.
Синтаксис
setResponseStatus(statusCode);
Параметры
Параметр | Тип | Описание |
---|---|---|
statusCode | число | Возвращаемый код состояния HTTP. |
Связанные разрешения
Требуется разрешение access_response
. Разрешение должно быть настроено так, чтобы разрешить доступ как минимум к:
-
status
sha256
Вычисляет дайджест входных данных SHA-256 и вызывает обратный вызов с дайджестом, закодированным в base64, если только в объекте options
не указана другая кодировка выходных данных.
Эта подпись и поведение API соответствуют API sha256
для веб-контейнеров; однако пользовательские шаблоны в серверных контейнерах должны использовать API sha256Sync
для упрощения кода.
Пример
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
const sha256 = require('sha256');
sha256('inputString', (digest) => {
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digest));
});
sha256('inputString', (digest) => {
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digest));
}, {outputEncoding: 'hex'});
Синтаксис
sha256(input, onSuccess, options = undefined);
Параметры
Параметр | Тип | Описание |
---|---|---|
input | нить | Строка для хеширования. |
onSuccess | функция | Вызывается с итоговым дайджестом, закодированным в base64, если только в объекте options не указана другая выходная кодировка. |
options | объект | Необязательный объект параметров для указания выходной кодировки. Если указано, объект должен содержать ключ outputEncoding со значением base64 или hex . |
Связанные разрешения
Никто.
sha256Sync
Вычисляет и возвращает дайджест входных данных SHA-256, закодированный в base64, если в объекте options
не указана другая выходная кодировка.
Пример
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
const sha256Sync = require('sha256Sync');
const digestBase64 = sha256Sync('inputString');
const digestHex = sha256Sync('inputString', {outputEncoding: 'hex'});
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digestBase64));
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digestHex));
Синтаксис
sha256Sync(input, options = undefined);
Параметры
Параметр | Тип | Описание |
---|---|---|
input | нить | Строка для хеширования. |
options | объект | Необязательный объект параметров для указания выходной кодировки. Если указано, объект должен содержать ключ outputEncoding со значением base64 или hex . |
Связанные разрешения
Никто.
templateDataStorage
Возвращает объект с методами доступа к хранилищу данных шаблона. Хранилище данных шаблона позволяет совместно использовать данные при выполнении одного шаблона. Данные, хранящиеся в хранилище данных шаблона, сохраняются на сервере, на котором работает контейнер. В большинстве случаев контейнер работает на нескольких серверах, поэтому хранение данных в хранилище данных шаблона не гарантирует, что каждый последующий запрос будет иметь доступ к данным.
«Данные» в имени «templateDataStorage» относятся к тому факту, что с использованием этого API можно хранить только простые, нефункциональные типы данных. Любые функции или ссылки на функции, переданные в API, вместо этого будут сохранены как null
.
Синтаксис
const templateDataStorage = require('templateDataStorage');
// Returns a copy of the value stored for the given key, or null if nothing
// is stored with that key.
templateDataStorage.getItemCopy(key);
// Stores a copy of the value for the given key (or removes the data stored
// for the given key if the input value is null).
templateDataStorage.setItemCopy(key, value);
// Removes the value stored for the given key, if present.
templateDataStorage.removeItem(key);
// Deletes all values stored for the current template.
templateDataStorage.clear();
Пример
const sendHttpGet = require('sendHttpGet');
const setResponseBody = require('setResponseBody');
const setResponseStatus = require('setResponseStatus');
const templateDataStorage = require('templateDataStorage');
// Check to see if the item is in the cache.
const cachedBody = templateDataStorage.getItemCopy(data.key);
if (cachedBody) {
setResponseBody(cachedBody);
data.gtmOnSuccess();
return;
}
sendHttpGet(data.url).then((result) => {
if (result.statusCode >= 200 && result.statusCode < 300) {
setResponseBody(result.body);
templateDataStorage.setItemCopy(data.key, result.body);
data.gtmOnSuccess();
} else {
data.gtmOnFailure();
}
setResponseStatus(result.statusCode);
});
Связанные разрешения
testRegex
Проверяет строку на соответствие регулярному выражению, созданному с помощью API createRegex
. Возвращает true
если регулярное выражение соответствует. В противном случае возвращает false
.
Регулярное выражение, созданное с глобальным флагом, имеет состояние. Подробности смотрите в документации RegExp .
Пример
const createRegex = require('createRegex');
const testRegex = require('testRegex');
const domainRegex = createRegex('\\w+\\.com', 'i');
// createRegex returns null if the regex is invalid or Re2 is not available.
if (domainRegex === null) return;
// Returns true
testRegex(domainRegex, 'example.com/foobar');
Синтаксис
testRegex(regex, string);
Параметры
Параметр | Тип | Описание |
---|---|---|
regex | Объект | Регулярное выражение для проверки, возвращаемое из API createRegex. |
string | нить | Тестовая строка для проверки. |
Связанные разрешения
Никто.
toBase64
Кодирует строку как base64 или base64url. По умолчанию используется кодировка base64.
Синтаксис
toBase64(input, options);
Параметры
Параметр | Тип | Описание |
---|---|---|
input | нить | Строка для кодирования. |
options | объект | Дополнительная конфигурация API. (См . «Параметры» ниже.) |
Параметры
Вариант | Тип | Описание | Минимальная версия |
---|---|---|---|
urlEncoding | логическое значение | Если это правда, результат будет закодирован в формате base64url . | 1.0.0 |
Пример
const toBase64 = require('toBase64');
const base64Hello = toBase64('hello');
const base64UrlHello = toBase64('hello', {urlEncoding: true});
Связанные разрешения
Никто.
BigQuery
Возвращает объект, предоставляющий функции BigQuery.
Функция BigQuery.insert
позволяет записывать данные в таблицу BigQuery. Он возвращает обещание , которое разрешается при успешной вставке или отклоняется в случае ошибки.
Если вставка успешна, обещание разрешается без аргументов.
Если вставка не удалась, обещание отклоняется со списком объектов, содержащих причину ошибки, и, возможно, с объектом строки в случае возникновения ошибки. Часть запроса может быть выполнена успешно, а другие части — нет. В этом случае обещание отклоняется со списком ошибок для каждой строки с объектом строки, чтобы помочь определить, какие строки были вставлены (см. примеры ошибок ниже). Дополнительную информацию см. в документации BigQuery по сообщениям об ошибках .
Синтаксис
BigQuery.insert(connectionInfo, rows[, options]);
Параметр | Тип | Описание |
---|---|---|
connectionInfo | объект | Определяет информацию, необходимую для подключения к таблице BigQuery. Существует один необязательный параметр и два обязательных параметра:
|
rows | Множество | Строки, которые необходимо вставить в таблицу. |
options | объект | Дополнительные параметры запроса. Поддерживаемые параметры: ignoreUnknownValues иskipInvalidRows . Неизвестные ключи опций игнорируются. (См. «Параметры» ниже.) |
Параметр | Тип | Описание |
---|---|---|
ignoreUnknownValues | логическое значение | Если установлено значение true , принимаются строки, содержащие значения, не соответствующие схеме. Неизвестные значения игнорируются. По умолчанию установлено значение false . |
skipInvalidRows | логическое значение | Если установлено значение true , вставьте все допустимые строки запроса, даже если существуют недопустимые строки. По умолчанию установлено значение false . |
Ошибка «Модуль не найден» означает, что на вашем серверном контейнере, скорее всего, используется более старая версия нашего образа, в которую еще не включен модуль BigQuery. Пожалуйста, повторно разверните серверный контейнер с теми же настройками, используя наш сценарий развертывания . Модуль будет автоматически включен после завершения операции.
Ошибка, не связанная с вставкой, обычно имеет один объект ошибки с ключом reason
:
[{reason: 'invalid'}]
Ошибка вставки может содержать несколько объектов ошибок с массивом errors
и объектом row
. Ниже приведен пример ответа об ошибке при вставке двух строк, из которых только одна строка содержит ошибку:
[
{
"errors": [
{
"reason":"invalid"
}
],
"row": {
"string_col":"otherString",
"number_col":-3,
"bool_col":3
}
},
{
"errors": [
{
"reason":"stopped"
}
],
"row": {
"string_col":"stringValue",
"number_col":5,
"bool_col:false
}
}
]
Пример
const BigQuery = require('BigQuery');
const connectionInfo = {
'projectId': 'gcp-cloud-project-id',
'datasetId': 'destination-dataset',
'tableId': 'destination-table',
};
const rows = [{
'column1': 'String1',
'column2': 1234,
}];
const options = {
'ignoreUnknownValues': true,
'skipInvalidRows': false,
};
BigQuery.insert(connectionInfo, rows, options)
.then(data.gtmOnSuccess, data.gtmOnFailure);
Связанные разрешения
Firestore
Возвращает объект, предоставляющий функции Firestore.
Этот API поддерживает только Firestore в собственном режиме , но не Firestore в режиме хранилища данных . Кроме того, API поддерживает только использование базы данных по умолчанию .
Firestore.read
Функция Firestore.read
считывает данные из документа Firestore и возвращает обещание , которое преобразуется в объект, содержащий два ключа: id
и data
. Если документ не существует, обещание отклоняется с использованием объекта, содержащего ключ reason
, равный not_found
.
Синтаксис
Firestore.read(path[, options]);
Параметр | Тип | Описание |
---|---|---|
path | нить | Путь к документу или коллекции. Не должно начинаться или заканчиваться символом «/». |
options | объект | Дополнительные параметры запроса. Поддерживаемые параметры: projectId , DisableCache и Transaction . Неизвестные ключи опций игнорируются. (См. «Параметры» ниже.) |
Параметр | Тип | Описание |
---|---|---|
projectId | нить | Необязательный . Идентификатор проекта Google Cloud Platform. Если этот параметр опущен, projectId извлекается из переменной среды GOOGLE_CLOUD_PROJECT , если для параметра разрешения access_firestore для идентификатора проекта установлено значение * или GOOGLE_CLOUD_PROJECT . Если контейнер сервера работает в Google Cloud, для GOOGLE_CLOUD_PROJECT уже будет установлен идентификатор проекта Google Cloud. |
disableCache | логическое значение | Необязательный . Определяет, отключать ли кеш. Кэширование включено по умолчанию, что позволяет кэшировать результаты на время выполнения запроса. |
transaction | нить | Необязательный . Значение, полученное из Firestore.runTransaction(). Отмечает операцию, которая будет использоваться в транзакции. |
Пример
const Firestore = require('Firestore');
return Firestore.read('collection/document', {
projectId: 'gcp-cloud-project-id',
}).then((result) => result.data.key, () => undefined);
Firestore.write
Функция Firestore.write
записывает данные в документ или коллекцию Firestore. Если путь ведет к коллекции, будет создан документ со случайно сгенерированным идентификатором. Если путь к документу не существует, он будет создан. Этот API возвращает обещание, которое разрешается в идентификатор добавленного или измененного документа. Если используется опция транзакции, API по-прежнему возвращает обещание, но не будет содержать идентификатор, поскольку записи выполняются пакетно.
Синтаксис
Firestore.write(path, input[, options]);
Параметры
Параметр | Тип | Описание |
---|---|---|
path | нить | Путь к документу или коллекции. Не должно начинаться или заканчиваться символом «/». |
input | объект | Значение, записываемое в документ. Если опция слияния установлена, API объединит ключи из входных данных в документ. |
options | объект | Дополнительные параметры запроса. Поддерживаемые параметры: projectId , merge иtransaction . Неизвестные ключи опций игнорируются. (См. «Параметры» ниже.) |
Параметр | Тип | Описание |
---|---|---|
projectId | нить | Необязательный . Идентификатор проекта Google Cloud Platform. Если этот параметр опущен, projectId извлекается из переменной среды GOOGLE_CLOUD_PROJECT , если для параметра разрешения access_firestore для идентификатора проекта установлено значение * или GOOGLE_CLOUD_PROJECT . Если контейнер сервера работает в Google Cloud, для GOOGLE_CLOUD_PROJECT уже будет установлен идентификатор проекта Google Cloud. |
merge | логическое значение | Необязательный . Если установлено значение true , тогда объединяйте ключи из ввода в документ, иначе метод переопределит весь документ. По умолчанию установлено значение false . |
transaction | нить | Необязательный . Значение, полученное из Firestore.runTransaction(). Отмечает операцию, которая будет использоваться в транзакции. |
Пример
const Firestore = require('Firestore');
const input = {key1: 'value1', key2: 12345};
Firestore.write('collection/document', input, {
projectId: 'gcp-cloud-project-id',
merge: true,
}).then((id) => {
data.gtmOnSuccess();
}, data.gtmOnFailure);
Firestore.query
Функция Firestore.query
запрашивает данную коллекцию и возвращает обещание, которое разрешается в массив документов Firestore, соответствующих условиям запроса. Объект документа Firestore такой же, как указан выше в Firestore.read
. Если нет документов, соответствующих условиям запроса, возвращаемое обещание будет преобразовано в пустой массив.
Синтаксис
Firestore.query(collection, queryConditions[, options]);
Параметр | Тип | Описание |
---|---|---|
collection | нить | Путь к коллекции. Не должно начинаться или заканчиваться символом «/». |
queryConditions | Множество | Массив условий запроса. Каждый запрос представляет собой массив с тремя значениями: ключ , оператор и ожидаемое значение . Например: [['id', '<', '5'], ['state', '==', 'CA']]. Условия объединяются оператором AND для создания результата запроса. Пожалуйста, обратитесь к операторам запросов Firestore для получения списка совместимых операторов запросов. |
options | объект | Дополнительные параметры запроса. Поддерживаемые параметры: projectId , DisableCache , Limit и Transaction . Неизвестные ключи опций игнорируются. (См. «Параметры» ниже.) |
Параметр | Тип | Описание |
---|---|---|
projectId | нить | Необязательный . Идентификатор проекта Google Cloud Platform. Если этот параметр опущен, projectId извлекается из переменной среды GOOGLE_CLOUD_PROJECT , если для параметра разрешения access_firestore для идентификатора проекта установлено значение * или GOOGLE_CLOUD_PROJECT . Если контейнер сервера работает в Google Cloud, для GOOGLE_CLOUD_PROJECT уже будет установлен идентификатор проекта Google Cloud. |
disableCache | логическое значение | Необязательный . Определяет, отключать ли кеш. Кэширование включено по умолчанию, что позволяет кэшировать результаты на время выполнения запроса. |
limit | число | Необязательный . Изменяет максимальное количество результатов, возвращаемых запросом, по умолчанию — 5 . |
transaction | нить | Необязательный . Значение, полученное из Firestore.runTransaction(). Отмечает операцию, которая будет использоваться в транзакции. |
Пример
const Firestore = require('Firestore');
const queries = const queries = [['id', '==', '5']];
return Firestore.query('collection', queries, {
projectId: 'gcp-cloud-project-id',
limit: 1,
}).then((documents) => documents[0].data.key, () => undefined);
Firestore.runTransaction
Функция Firestore.runTransaction
позволяет пользователю атомарно читать и писать из Firestore. Если произойдет одновременная запись или другой конфликт транзакций, транзакция будет повторена до двух раз. Если после трех попыток произойдет сбой, API отклонит ошибку. Этот API возвращает обещание, которое преобразуется в массив идентификаторов документов для каждой операции записи, если транзакция успешна, и отклоняет ее с ошибкой в случае неудачи.
Синтаксис
Firestore.runTransaction(callback[, options]);
Параметры
Параметр | Тип | Описание |
---|---|---|
callback | функция | Обратный вызов, вызываемый со строковым идентификатором транзакции. Идентификатор транзакции можно передавать в вызовы API чтения/записи/запроса. Эта функция обратного вызова должна возвращать обещание. Обратный вызов может выполняться до трех раз, прежде чем произойдет сбой. |
options | объект | Дополнительные параметры запроса. Поддерживается только поддерживаемый вариант — projectId . Неизвестные ключи опций игнорируются. (См. «Параметры» ниже.) |
Параметр | Тип | Описание |
---|---|---|
projectId | нить | Необязательный . Идентификатор проекта Google Cloud Platform. Если этот параметр опущен, projectId извлекается из переменной среды GOOGLE_CLOUD_PROJECT , если для параметра разрешения access_firestore для идентификатора проекта установлено значение * или GOOGLE_CLOUD_PROJECT . Если контейнер сервера работает в Google Cloud, для GOOGLE_CLOUD_PROJECT уже будет установлен идентификатор проекта Google Cloud. |
Пример
const Firestore = require('Firestore');
const path = 'collection/document';
const projectId = 'gcp-cloud-project-id';
Firestore.runTransaction((transaction) => {
const transactionOptions = {
projectId: projectId,
transaction: transaction,
};
// Must return a promise.
return Firestore.read(path, transactionOptions).then((result) => {
const newInputCount = result.data.inputCount + 1;
const input = {key1: 'value1', inputCount: newInputCount};
return Firestore.write(path, input, transactionOptions);
});
}, {
projectId: projectId
}).then((ids) => {
data.gtmOnSuccess();
}, data.gtmOnFailure);
Ошибки, доступные в каждой функции Firestore, будут отклонены с помощью объекта, содержащего ключ reason
:
Firestore.read(...).then(onSuccess, (error) => {
if (error.reason === 'unknown') {
// Handle the unknown error here.
}
});
Причины ошибок могут содержать, помимо прочего, коды ошибок Firestore REST API .
Связанные разрешения
JSON
Возвращает объект, предоставляющий функции JSON.
Функция parse()
анализирует строку JSON для создания значения или объекта, описываемого этой строкой. Если значение не может быть проанализировано (например, неверный формат JSON), функция вернет undefined
. Если входное значение не является строкой, входные данные будут преобразованы в строку.
Функция stringify()
преобразует входные данные в строку JSON. Если значение не может быть проанализировано (например, у объекта есть цикл), метод вернет undefined
.
Пример
const JSON = require('JSON');
// The JSON input string is converted to an object.
const object = JSON.parse('{"foo":"bar"}');
// The input object is converted to a JSON string.
const str = JSON.stringify({foo: 'bar'});
Синтаксис
JSON.parse(stringInput);
JSON.stringify(value);
Связанные разрешения
Никто.
Math
Объект, предоставляющий Math
функции.
Синтаксис
const Math = require('Math');
// Retrieve the absolute value.
const absolute = Math.abs(-3);
// Round the input down to the nearest integer.
const roundedDown = Math.floor(3.6);
// Round the input up to the nearest integer.
const roundedUp = Math.ceil(2.2);
// Round the input to the nearest integer.
const rounded = Math.round(3.1);
// Return the largest argument.
const biggest = Math.max(1, 3);
// Return the smallest argument.
const smallest = Math.min(3, 5);
// Return the first argument raised to the power of the second argument.
const powerful = Math.pow(3, 1);
// Return the square root of the argument.
const unsquared = Math.sqrt(9);
Параметры
Параметры математических функций преобразуются в числа.
Связанные разрешения
Никто.
Messages
Следующие API работают вместе, позволяя передавать сообщения между различными частями контейнера.
addMessageListener
Добавляет функцию, которая прослушивает сообщения определенного типа. Когда сообщение этого типа отправляется с помощью API sendMessage
(обычно с помощью тега), обратный вызов будет выполняться синхронно. Обратный вызов запускается с двумя параметрами:
-
messageType:string
-
message:Object
Если обратный вызов добавлен в клиент, обратный вызов будет получать сообщения обо всех событиях, создаваемых клиентом. Если обратный вызов должен получать сообщения только от определенного события, привяжите этот API к этому событию, используя bindToEvent
в функции onStart
API runContainer
. См. пример.
Синтаксис
const addMessageListener = require('addMessageListener');
addMessageListener('send_pixel', (messageType, message) => {
// This will be run whenever something sends a 'send_pixel' message.
});
Параметры
Параметр | Тип | Описание |
---|---|---|
messageType | нить | Тип сообщения для прослушивания. Если значение не является строкой, оно будет приведено к строке. |
callback | функция | Обратный вызов, запускаемый при отправке сообщения соответствующего типа. Если обратный вызов не является функцией, API ничего не сделает. |
Пример
const addMessageListener = require('addMessageListener');
const claimRequest = require('claimRequest');
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
claimRequest();
addMessageListener('send_pixel', (messageType, message) => {
// This will be run whenever a tag sends a 'send_pixel' message.
});
const events = extractEventsFromMpv1();
let eventsCompleted = 0;
events.forEach((event, i) => {
runContainer(events[i], /* onComplete= */ () => {
if (events.length === ++eventsCompleted) {
returnResponse();
}
}, /* onStart= */ (bindToEvent) => {
if (i === 0) {
bindToEvent(addMessageListener)('send_pixel', (messageType, message) => {
// This will be called whenever a tag for the first event sends a
// 'send_pixel' message.
});
}
});
});
Связанные разрешения
Требуется разрешение use_message
. Разрешение должно быть настроено так, чтобы разрешать как минимум:
- Тип сообщения с
Usage
listen
илиlisten_and_send
.
hasMessageListener
Возвращает true, если для данного типа сообщения был добавлен прослушиватель сообщений. В противном случае возвращает false.
Синтаксис
const hasMessageListener = require('hasMessageListener');
hasMessageListener('send_pixel');
Связанные разрешения
Никто.
sendMessage
Отправляет сообщение указанного типа зарегистрированному прослушивателю. Это можно использовать для отправки сообщений из тега обратно клиенту, запустившему контейнер.
Синтаксис
const sendMessage = require('sendMessage');
sendMessage('send_pixel', {url: 'https://analytics.example.com/collect'});
Параметры
Параметр | Тип | Описание |
---|---|---|
messageType | нить | Тип сообщения для отправки. Если значение не является строкой, оно будет приведено к строке. |
message | объект | Сообщение для отправки. Если сообщение не является объектом, API ничего не сделает. |
Связанные разрешения
Требуется разрешение use_message
. Разрешение должно быть настроено так, чтобы разрешать как минимум:
- Тип сообщения с
Usage
listen_and_send
илиsend
.
Object
Возвращает объект, предоставляющий методы Object
.
keys()
обеспечивает поведение Стандартной библиотеки Object.keys() . Он возвращает массив имен собственных перечислимых свойств данного объекта в том же порядке, что и цикл for...in...
Если входное значение не является объектом, оно будет приведено к объекту.
values()
обеспечивает поведение Object.values() стандартной библиотеки. Он возвращает массив значений собственных перечислимых свойств данного объекта в том же порядке, что и цикл for...in...
Если входное значение не является объектом, оно будет приведено к объекту.
Метод entries()
обеспечивает поведение Standard Library Object.entries() . Он возвращает массив пар собственных перечислимых свойств [key, value]
данного объекта в том же порядке, что и цикл for...in...
Если входное значение не является объектом, оно будет приведено к объекту.
Метод freeze()
обеспечивает поведение Standard Library Object.freeze() . Замороженный объект больше нельзя изменить; замораживание объекта предотвращает добавление к нему новых свойств, удаление существующих свойств и изменение значений существующих свойств. freeze()
возвращает тот же объект, который был передан. Примитивный или нулевой аргумент будет обработан так, как если бы он был замороженным объектом, и будет возвращен.
Метод delete()
обеспечивает поведение оператора удаления стандартной библиотеки. Он удаляет данный ключ из объекта, если объект не заморожен. Как и оператор удаления стандартной библиотеки, он возвращает true
если первое входное значение ( objectInput
) является объектом, который не заморожен, даже если второе входное значение ( keyToDelete
) указывает несуществующий ключ. Во всех остальных случаях он возвращает false
. Однако он отличается от оператора удаления стандартной библиотеки следующим образом:
-
keyToDelete
не может быть строкой, разделенной точками, которая определяет вложенный ключ. -
delete()
нельзя использовать для удаления элементов из массива. -
delete()
нельзя использовать для удаления каких-либо свойств из глобальной области видимости.
Синтаксис
Object.keys(objectInput)
Object.values(objectInput)
Object.entries(objectInput)
Object.freeze(objectInput)
Object.delete(objectInput, keyToDelete)
Параметры
Объект.ключи
Параметр | Тип | Описание |
---|---|---|
объектВвод | любой | Объект, ключи которого необходимо перечислить. Если ввод не является объектом, он будет принудительно привязан к объекту. |
Объект.значения
Параметр | Тип | Описание |
---|---|---|
объектВвод | любой | Объект, значения которого необходимо перечислить. Если ввод не является объектом, он будет принудительно привязан к объекту. |
Объект.записи
Параметр | Тип | Описание |
---|---|---|
объектВвод | любой | Объект, пары ключ/значение которого нужно перечислить. Если ввод не является объектом, он будет принудительно привязан к объекту. |
Объект.заморозка
Параметр | Тип | Описание |
---|---|---|
объектВвод | любой | Объект, который нужно заморозить. Если ввод не является объектом, он будет рассматриваться как замороженный объект. |
Объект.удалить
Параметр | Тип | Описание |
---|---|---|
объектВвод | любой | Объект, ключ которого нужно удалить. |
ключToDelete | нить | Ключ верхнего уровня, который нужно удалить. |
Пример
const Object = require('Object');
// The keys of an object are enumerated in an array.
const keys = Object.keys({foo: 'bar'});
// The values of an object are enumerated in an array.
const values = Object.values({foo: 'bar'});
// The key/value pairs of an object are enumerated in an array.
const entries = Object.entries({foo: 'bar'});
// The input object is frozen.
const frozen = Object.freeze({foo: 'bar'});
// The key is removed from the input object.
const obj1 = {deleteme: 'value'};
Object.delete(obj1, 'deleteme');
// Only a top-level key can be specified as the key to delete.
const obj2 = {nested: {key: 'value'}};
Object.delete(obj2, 'nested.key'); // This has no effect.
Object.delete(obj2.nested, 'key'); // This deletes the nested key.
Promise
Возвращает объект, предоставляющий методы для взаимодействия с обещаниями.
Обещания функционально эквивалентны обещаниям JavaScript. Каждый экземпляр имеет три метода, которые возвращают обещание, позволяющее выполнить дальнейшие действия после выполнения обещания:
-
.then()
— обрабатывает как разрешенные, так и отклоненные случаи. В качестве параметров он принимает два обратных вызова: один для случая успеха и один для случая сбоя. -
.catch()
— обрабатывает только отклоненные случаи. Принимает один обратный вызов в качестве параметра. -
.finally()
— обеспечивает возможность запуска кода независимо от того, было ли обещание выполнено или отклонено. Принимает один обратный вызов в качестве параметра, который вызывается без аргументов.
Переменная, возвращающая обещание, равна разрешенному значению обещания или false
, если обещание отклонено.
Пример
promise.then((resolvedValue) => {
// Handles when promise resolves.
}, (rejectedValue) => {
// Handles when promise rejects.
});
promise.catch((rejectedValue) => {
// Handles when promise rejects.
});
promise.finally(() => {
// Runs regardless of whether or not the previous promise resolves or
// rejects.
});
Promise.all
Возвращает обещание, что либо:
- разрешается, когда все входные данные разрешены, или
- отклоняется, когда любой из входов отклоняется
Синтаксис
Promise.all(inputs);
Параметры
Параметр | Тип | Описание |
---|---|---|
inputs | Множество | Массив значений или обещаний. Если входные данные не являются обещанием, они передаются так, как будто это разрешенное значение обещания. Выдает ошибку, если входные данные не являются массивом. |
Пример
const Promise = require('Promise');
const sendHttpGet = require('sendHttpGet');
return Promise.all(['a', sendHttpGet('https://example.com')])
.then((results) => {
// results will equal: ['a', {statusCode: 200, headers: {}, body: ''}]
});
Связанные разрешения
Никто.
Promise.create
Создает обещание, функционально эквивалентное обещанию JavaScript.
Синтаксис
Promise.create(resolver);
Параметры
Параметр | Тип | Описание |
---|---|---|
resolver | функция | Функция, которая вызывается с помощью двух функций — разрешения и отклонения. Возвращенное обещание будет разрешено или отклонено при вызове соответствующего параметра. Выдает ошибку, если преобразователь не является функцией. |
Пример
const Promise = require('Promise');
return Promise.create((resolve, reject) => {
// Do asynchronous work that eventually calls resolve() or reject()
});
Связанные разрешения
Никто.
Тестовые API
Эти API работают с изолированными тестами JavaScript для создания тестов для пользовательских шаблонов в Диспетчере тегов Google. Эти тестовые API не нуждаются в операторе require()
. [Подробнее о тестах пользовательских шаблонов].
assertApi
Возвращает объект сопоставления, который можно использовать для быстрого утверждения утверждений о данном API.
Синтаксис
assertApi(apiName)
Параметры
Параметр | Тип | Описание |
---|---|---|
apiName | нить | Имя API для проверки; та же строка, что и переданная в require() . |
Матчеры
-
Subject.wasCalled()
-
Subject.wasNotCalled()
-
Subject.wasCalledWith(...expected)
-
Subject.wasNotCalledWith(...expected)
Примеры
assertApi('sendPixel').wasCalled();
assertApi('getUrl').wasNotCalled();
assertApi('makeNumber').wasCalledWith('8');
assertApi('setInWindow').wasNotCalledWith('myVar', 'theWrongValue');
assertThat
API-интерфейс assertThat
создан по образцу библиотеки Google [Truth]. Он возвращает объект, который можно использовать для плавного утверждения о значении субъекта. Ошибка утверждения немедленно остановит тест и пометит его как неудавшийся. Однако сбой в одном тесте не повлияет на другие тестовые случаи.
Синтаксис
assertThat(actual, opt_message)
Параметры
Параметр | Тип | Описание |
---|---|---|
actual | любой | Значение, используемое в плавных проверках. |
opt_message | нить | Необязательное сообщение для печати, если утверждение не выполнено. |
Матчеры
Матчер | Описание |
---|---|
isUndefined() | Утверждает, что субъект undefined . |
isDefined() | Утверждает, что субъект не является undefined . |
isNull() | Утверждает, что субъект имеет null . |
isNotNull() | Утверждает, что субъект не является null . |
isFalse() | Утверждает, что предмет является false . |
isTrue() | Утверждает, что предмет true . |
isFalsy() | Утверждает, что предмет является ложным. Ложными значениями являются undefined , null , false , NaN , 0 и '' (пустая строка). |
isTruthy() | Утверждает, что предмет правдив. Ложными значениями являются undefined , null , false , NaN , 0 и '' (пустая строка). |
isNaN() | Утверждает, что субъектом является значение NaN. |
isNotNaN() | Утверждает, что субъектом является любое значение, кроме NaN. |
isInfinity() | Утверждает, что субъект представляет собой положительную или отрицательную Бесконечность. |
isNotInfinity() | Утверждает, что субъектом является любое значение, кроме положительной или отрицательной Бесконечности. |
isEqualTo(expected) | Утверждает, что субъект равен заданному значению. Это сравнение значений, а не эталонное сравнение. Содержимое объектов и массивов сравнивается рекурсивно. |
isNotEqualTo(expected) | Утверждает, что субъект не равен заданному значению. Это сравнение значений, а не эталонное сравнение. Содержимое объектов и массивов сравнивается рекурсивно. |
isAnyOf(...expected) | Утверждает, что субъект равен одному из заданных значений. Это сравнение значений, а не эталонное сравнение. Содержимое объектов и массивов сравнивается рекурсивно. |
isNoneOf(...expected) | Утверждает, что субъект не равен ни одному из заданных значений. Это сравнение значений, а не эталонное сравнение. Содержимое объектов и массивов сравнивается рекурсивно. |
isStrictlyEqualTo(expected) | Утверждает, что субъект строго равен ( === ) заданному значению. |
isNotStrictlyEqualTo(expected) | Утверждает, что субъект не строго равен ( !== ) заданному значению. |
isGreaterThan(expected) | Утверждает, что объект больше ( > ) заданного значения в упорядоченном сравнении. |
isGreaterThanOrEqualTo(expected) | Утверждает, что субъект больше или равен ( >= ) заданному значению в упорядоченном сравнении. |
isLessThan(expected) | Утверждает, что объект меньше ( < ) заданного значения в упорядоченном сравнении. |
isLessThanOrEqualTo(expected) | Утверждает, что объект меньше или равен ( <= ) заданному значению в упорядоченном сравнении. |
contains(...expected) | Утверждает, что субъект представляет собой массив или строку, содержащую все заданные значения в любом порядке. Это сравнение значений, а не эталонное сравнение. Содержимое объектов и массивов сравнивается рекурсивно. |
doesNotContain(...expected) | Утверждает, что субъект представляет собой массив или строку, не содержащую ни одного из заданных значений. Это сравнение значений, а не эталонное сравнение. Содержимое объектов и массивов сравнивается рекурсивно. |
containsExactly(...expected) | Утверждает, что субъект представляет собой массив, содержащий все заданные значения в любом порядке и никаких других значений. Это сравнение значений, а не эталонное сравнение. Содержимое объектов и массивов сравнивается рекурсивно. |
doesNotContainExactly(...expected) | Утверждает, что субъект представляет собой массив, содержащий набор значений, отличный от заданных значений, в любом порядке. Это сравнение значений, а не эталонное сравнение. Содержимое объектов и массивов сравнивается рекурсивно. |
hasLength(expected) | Утверждает, что субъект представляет собой массив или строку заданной длины. Утверждение всегда терпит неудачу, если значение не является массивом или строкой. |
isEmpty() | Утверждает, что субъект представляет собой пустой массив или строку (длина = 0). Утверждение всегда терпит неудачу, если значение не является массивом или строкой. |
isNotEmpty() | Утверждает, что субъект представляет собой массив или строку, которая не пуста (длина > 0). Утверждение всегда терпит неудачу, если значение не является массивом или строкой. |
isArray() | Утверждает, что тип субъекта является массивом. |
isBoolean() | Утверждает, что тип субъекта является логическим. |
isFunction() | Утверждает, что тип субъекта является функцией. |
isNumber() | Утверждает, что тип субъекта — число. |
isObject() | Утверждает, что тип субъекта является объектом. |
isString() | Утверждает, что тип субъекта является строкой. |
Примеры
assertThat(undefined).isUndefined();
assertThat(id, 'ID must be defined').isDefined();
assertThat(null).isNull();
assertThat(undefined).isNotNull();
assertThat(true).isTrue();
assertThat(false).isFalse();
assertThat(1).isTruthy();
assertThat('').isFalsy();
assertThat(1/0).isInfinity();
assertThat(0).isNotInfinity();
assertThat(-'foo').isNaN();
assertThat(100).isNotNaN();
assertThat(sentUrl).isEqualTo('https://endpoint.example.com/?account=12345');
assertThat(category).isNotEqualTo('premium');
assertThat(5).isAnyOf(1, 2, 3, 4, 5);
assertThat(42).isNoneOf('the question', undefined, 41.9);
assertThat('value').isStrictlyEqualTo('value');
assertThat('4').isNotStrictlyEqualTo(4);
assertThat(['a', 'b', 'c']).contains('a', 'c');
assertThat(['x', 'y', 'z']).doesNotContain('f');
assertThat(['1', '2', '3']).containsExactly('3', '2', '1');
assertThat(['4', '5']).doesNotContainExactly('4');
assertThat('a string').hasLength(8);
assertThat([]).isEmpty();
assertThat('another string').isNotEmpty();
fail
Немедленно завершает текущий тест неудачно и печатает данное сообщение, если оно предоставлено.
Синтаксис
fail(opt_message);
Параметры
Параметр | Тип | Описание |
---|---|---|
opt_message | нить | Необязательный текст сообщения об ошибке. |
Пример
fail('This test has failed.');
mock
mock
API позволяет переопределить поведение изолированных API. Макетный API безопасно использовать в коде шаблона, но он работает только в тестовом режиме. Моки сбрасываются перед запуском каждого теста.
Синтаксис
mock(apiName, returnValue);
Параметры
Параметр | Тип | Описание |
---|---|---|
apiName | нить | Имя API для имитации; та же строка, что и переданная в require() |
returnValue | любой | Значение, возвращаемое для API или функции, вызываемой вместо API. Если returnValue — это функция, эта функция вызывается вместо API песочницы; если returnValue не является функцией, это значение возвращается вместо изолированного API. |
Примеры
mock('encodeUri', "https://endpoint.example.com/?account=12345");
mock('sendPixel', function(url, onSuccess, onFailure) {
onSuccess();
});
mockObject
API-интерфейс mockObject
позволяет переопределить поведение API-интерфейсов изолированной программной среды, которые возвращают объект. API безопасно использовать в коде шаблона, но он работает только в тестовом режиме. Моки сбрасываются перед запуском каждого теста.
Синтаксис
mockObject(apiName, objectMock);
Параметры
Параметр | Тип | Описание |
---|---|---|
apiName | нить | Имя API для имитации; та же строка, что и переданная в require() |
objectMock | объект | Значение, возвращаемое для API или функции, вызываемой вместо API. Должен быть объект. |
Примеры
const storage = {};
let firestoreId = 1;
function asTestPromise(result) {
return {
then: (callback) => callback(result)
};
}
mockObject('Firestore', {
write: (collection, input) => {
storage[collection + '/' + (++firestoreId)] = input;
return asTestPromise(firestoreId);
},
read: (document) => asTestPromise({data: storage[document]})
});
runCode
Запускает код шаблона, т. е. содержимое вкладки «Код» , в текущей тестовой среде с заданным объектом входных данных.
Синтаксис
runCode(data)
Параметры
Параметр | Тип | Описание |
---|---|---|
data | объект | Объект данных, который будет использоваться в тесте. |
Возвращаемое значение
Возвращает значение переменной для шаблонов переменных; возвращает undefined
для всех других типов шаблонов.
Пример
runCode({field1: 123, field2: 'value'});