Основные API
Эти API работают с изолированным JavaScript для создания пользовательских шаблонов в Диспетчере тегов Google. Каждый API добавляется с помощью оператора require()
, например:
const myAPI = require('myAPI');
addConsentListener
Регистрирует функцию прослушивателя, которая будет выполняться при изменении состояния указанного типа согласия.
Данный прослушиватель будет вызываться каждый раз, когда состояние указанного типа согласия меняется с «отказано» на «предоставлено» или с «предоставлено» на «отказано». Тип согласия без состояния считается предоставленным, поэтому прослушиватель не будет вызываться, если неустановленный тип согласия будет обновлен до предоставленного. Функции прослушивателя будут отвечать за то, чтобы их код запускался необходимое количество раз.
Пример:
const isConsentGranted = require('isConsentGranted');
const addConsentListener = require('addConsentListener');
if (!isConsentGranted('ad_storage')) {
let wasCalled = false;
addConsentListener('ad_storage', (consentType, granted) => {
if (wasCalled) return;
wasCalled = true;
const cookies = getMyCookies();
sendFullPixel(cookies);
});
}
Синтаксис
addConsentListener(consentType, listener)
Параметры
Параметр | Тип | Описание |
---|---|---|
consentType | нить | Тип согласия для отслеживания изменений состояния. |
listener | функция | Функция, запускаемая при изменении состояния указанного типа согласия. |
При вызове прослушивателя ему будет передан тип согласия, который изменяется, и новое значение этого типа согласия:
Параметр | Тип | Описание |
---|---|---|
consentType | нить | Тип согласия, который изменяется. |
granted | логическое значение | Логическое значение, имеющее значение true, если указанный тип согласия меняется на предоставленный. |
Связанные разрешения
Разрешение access_consent
с доступом на чтение для типа согласия.
addEventCallback
API addEventCallback
позволяет зарегистрировать функцию обратного вызова, которая будет вызываться в конце события. Обратный вызов будет вызван, когда все теги для события будут выполнены или если будет достигнут тайм-аут события на странице. В обратный вызов передаются два значения: идентификатор контейнера, вызывающего функцию, и объекта, содержащего информацию о событии.
Синтаксис
addEventCallback(callback)
Параметры
Параметр | Тип | Описание |
---|---|---|
callback | функция | Функция, вызываемая в конце события. |
Объект eventData
содержит следующие данные:
Имя ключа | Тип | Описание |
---|---|---|
tags | Множество | Массив объектов данных тега. Каждый тег, сработавший во время события, будет иметь запись в этом массиве. Объект данных тега содержит идентификатор тега ( id ), его статус выполнения ( status ) и время выполнения ( executionTime ). Данные тега также будут включать дополнительные метаданные тега, настроенные для тега. |
Пример
addEventCallback(function(ctid, eventData) {
logToConsole('Tag count for container ' + ctid + ': ' + eventData['tags'].length);
});
Связанные разрешения
aliasInWindow
API aliasInWindow
позволяет создать псевдоним (например, window.foo = window.bar
), который помогает поддерживать определенные теги, требующие псевдонимов. Присваивает значение объекта window
, найденного в fromPath
ключу в объекте window
в toPath
. Возвращает true
в случае успеха и false
в противном случае.
Синтаксис
aliasInWindow(toPath, fromPath)
Параметры
Параметр | Тип | Описание |
---|---|---|
toPath | нить | Путь к объекту window , разделенный точками, куда следует скопировать значение. Все компоненты на пути до последнего компонента уже должны существовать в объекте window . |
fromPath | нить | Путь к window значению, разделенный точкой. Если значение не существует, операция завершится неудачно. |
Пример
aliasInWindow('foo.bar', 'baz.qux')
Связанные разрешения
access_globals
требуется как для toPath
, так и для fromPath
; toPath
требует доступа для записи, fromPath
требует доступа для чтения.
callInWindow
Позволяет вызывать функции из пути за пределами объекта window
, способом, контролируемым политикой. Вызывает функцию по заданному пути в window
с заданными аргументами и возвращает значение. Если тип возвращаемого значения невозможно напрямую сопоставить с типом, поддерживаемым в изолированном JavaScript, будет возвращено undefined
. В изолированном JavaScript поддерживаются восемь типов: null
, undefined
, boolean
, number
, string
, Array
, Object
и function
. Если данный путь не существует или не ссылается на функцию, будет возвращено undefined
.
Синтаксис
callInWindow(pathToFunction, argument [, argument2,... argumentN])
Параметры
Параметр | Тип | Описание |
---|---|---|
pathToFunction | нить | Путь к вызываемой функции в window разделенный точками. |
args | * | Аргументы, которые будут переданы в функцию. |
Связанные разрешения
access_globals
с включенным разрешением execute
.
callLater
Планирует асинхронный вызов функции. Функция будет вызвана после возврата текущего кода. Это эквивалентно setTimeout(<function>, 0)
.
Синтаксис
callLater(function)
Параметры
Параметр | Тип | Описание |
---|---|---|
function | функция | Функция для вызова. |
copyFromDataLayer
Возвращает значение, присвоенное в данный момент данному ключу на уровне данных: значение, найденное по данному ключу, если оно является примитивным типом, функцией или литералом объекта или undefined
в противном случае.
Синтаксис
copyFromDataLayer(key[, dataLayerVersion])
Параметры
Параметр | Тип | Описание |
---|---|---|
key | нить | Ключ в формате «abc». |
dataLayerVersion | число | Необязательная версия уровня данных . Значение по умолчанию — 2. Настоятельно не рекомендуется использовать значение 1. |
Связанные разрешения
copyFromWindow
Копирует переменную из объекта window
. Если значение в window
невозможно напрямую сопоставить с типом, поддерживаемым в изолированном JavaScript, будет возвращено undefined
. В изолированном JavaScript поддерживаются восемь типов: null
, undefined
, boolean
, number
, string
, Array
, Object
и function
. Возвращает полученное (и принудительное) значение.
Синтаксис
copyFromWindow(key)
Параметры
Параметр | Тип | Описание |
---|---|---|
key | нить | Ключ в window значение которого необходимо скопировать. |
Связанные разрешения
createArgumentsQueue
Создает очередь, заполняемую объектами аргументов, для поддержки решений тегов, которым это требуется.
Создает функцию в глобальной области видимости (т. е. window
), используя аргумент fnKey
(та же семантика, что и createQueue
). После создания функции этот API создает массив в window
(если он еще не существует), используя аргумент arrayKey
.
Когда вызывается функция, созданная с помощью fnKey
, она помещает свой объект аргументов в массив, созданный с помощью arrayKey
. Возвращаемое значение API — это функция, созданная в fnKey
.
Для этой функции требуются настройки чтения и записи для fnKey
и arrayKey
в разрешении access_globals
.
Пример:
const gtag = createArgumentsQueue('gtag', 'dataLayer');
gtag('set', {'currency': 'USD'});
Синтаксис
createArgumentsQueue(fnKey, arrayKey)
Параметры
Параметр | Тип | Описание |
---|---|---|
fnKey | нить | Путь в window , где установлена функция, если он еще не существует. Этот аргумент поддерживает стандартную запись через точку. Если путь к ключу не существует, выдается исключение. То есть, если fnKey имеет значение 'one.two' , будет выдано исключение. |
arrayKey | нить | Путь в window , где установлен массив, если он еще не существует. Этот аргумент поддерживает стандартную запись через точку. Если путь к ключу не существует, выдается исключение. То есть, если arrayKey имеет значение 'one.two' и нет глобального объекта с именем 'one' , будет выдано исключение. |
Связанные разрешения
createQueue
Создает массив в window
(если он еще не существует) и возвращает функцию, которая будет помещать значения в этот массив.
Эта функция требует настройки чтения и записи для arrayKey
в разрешении access_globals
.
Пример:
const dataLayerPush = createQueue('dataLayer');
dataLayerPush({'currency': 'USD'}, {'event': 'myConversion'});
Синтаксис
createQueue(arrayKey)
Параметры
Параметр | Тип | Описание |
---|---|---|
arrayKey | нить | Ключ в window , где установлен массив, если он еще не существует. Этот аргумент поддерживает стандартную запись через точку. Если путь к ключу не существует, выдается исключение. Например, если arrayKey имеет значение 'one.two' и нет глобального объекта с именем 'one' , будет выдано исключение. |
Связанные разрешения
decodeUri
Декодирует любые закодированные символы в предоставленном URI. Возвращает строку , представляющую декодированный URI. Возвращает undefined
если введен неверный ввод.
Пример:
const decode = require('decodeUri');
const decodedUrl = decode(data.encodedUrl);
if (decodedUrl) {
// ...
}
Синтаксис
decodeUri(encoded_uri)
Параметры
Параметр | Тип | Описание |
---|---|---|
encoded_uri | нить | URI, закодированный с помощью encodeUri() или другими способами. |
Связанные разрешения
Никто.
decodeUriComponent
Декодирует любые закодированные символы в предоставленном компоненте URI. Возвращает строку , представляющую декодированный компонент URI. Возвращает undefined
если введен неверный ввод.
Пример:
const decode = require('decodeUriComponent');
const decodedUrl = decode(data.encodedUrl);
if (decodedUrl) {
// ...
}
Синтаксис
decodeUriComponent(encoded_uri_component)
Параметры
Параметр | Тип | Описание |
---|---|---|
encoded_uri_component | нить | Компонент URI, закодированный с помощью encodeUriComponent() или другими способами. |
Связанные разрешения
Никто.
encodeUri
Возвращает закодированный универсальный идентификатор ресурса (URI), экранируя специальные символы. Возвращает строку , представляющую предоставленную строку, закодированную как URI. Возвращает undefined
при предоставлении недопустимых входных данных (единственный суррогат).
Пример:
sendPixel('https://www.example.com/' + encodeUri(pathInput));
Синтаксис
encodeUri(uri)
Параметры
Параметр | Тип | Описание |
---|---|---|
uri | нить | Полный URI. |
Связанные разрешения
Никто.
encodeUriComponent
Возвращает закодированный универсальный идентификатор ресурса (URI), экранируя специальные символы. Возвращает строку , представляющую предоставленную строку, закодированную как URI. Возвращает undefined
при предоставлении недопустимых входных данных (единственный суррогат).
Пример:
sendPixel('https://www.example.com/?' + encodeUriComponent(queryInput));
Синтаксис
encodeUriComponent(str)
Параметры
Параметр | Тип | Описание |
---|---|---|
str | нить | Компонент URI. |
Связанные разрешения
Никто.
fromBase64
API fromBase64
позволяет декодировать строки из их представления в base64. Возвращает undefined
если введен неверный ввод.
Синтаксис
fromBase64(base64EncodedString)
Параметры
Параметр | Тип | Описание |
---|---|---|
base64EncodedString | нить | Строка в кодировке Base64. |
Пример
const fromBase64 = require('fromBase64');
const greeting = fromBase64('aGVsbG8=');
if (greeting === 'hello') {
// ...
}
Связанные разрешения
Никто
generateRandom
Возвращает случайное число (целое) в заданном диапазоне.
Синтаксис
generateRandom(min, max)
Параметры
Параметр | Тип | Описание |
---|---|---|
min | число | Минимальное потенциальное значение возвращаемого целого числа. |
max | число | Максимальное потенциальное значение возвращаемого целого числа. |
Связанные разрешения
Никто.
getContainerVersion
Возвращает объект, содержащий данные о текущем контейнере. Возвращаемый объект имеет следующие поля:
{
containerId: string,
debugMode: boolean,
environmentName: string,
environmentMode: boolean,
previewMode: boolean,
version: string,
}
Пример
const getContainerVersion = require('getContainerVersion');
const sendPixel = require('sendPixel');
if (query('read_container_data')) {
const cv = getContainerVersion();
const pixelUrl = 'https://pixel.com/' +
'?version=' + cv.version +
'&envName=' + cv.environmentName +
'&ctid=' + cv.containerId +
'&debugMode=' + cv.debugMode +
'&previewMode=' + cv.previewMode;
if (query('send_pixel', pixelUrl)) {
sendPixel(pixelUrl);
}
}
Синтаксис
getContainerVersion();
Связанные разрешения
getCookieValues
Возвращает значения всех файлов cookie с заданным именем.
Синтаксис
getCookieValues(name[, decode])
Параметры
Параметр | Тип | Описание |
---|---|---|
name | нить | Имя файла cookie. |
decode | логическое значение | Определяет, должны ли значения cookie декодироваться с помощью decodeURIComponent() JavaScript. По умолчанию true . |
Связанные разрешения
getQueryParameters
Возвращает первый или все параметры для queryKey
текущего URL-адреса. Возвращает первое значение из queryKey
или массив значений из queryKey
.
Синтаксис
getQueryParameters(queryKey[, retrieveAll])
Параметры
Параметр | Тип | Описание |
---|---|---|
queryKey | нить | Ключ для чтения параметров запроса. |
retrieveAll | логическое значение | Нужно ли получать все значения. |
Например, если текущий URL-адрес — https://example.com/path?var=foo&var1=foo1&var=foo2&var=foo
, то:
-
getQueryParameters('var') == 'foo'
-
getQueryParameters('var', false) == 'foo'
-
getQueryParameters('var', null) == 'foo'
-
getQueryParameters('var', true) == ['foo', 'foo2', 'foo']
Связанные разрешения
get_url
должен разрешить компонент query
и должен указать queryKey
в разрешенных ключах запроса (или разрешить любой ключ запроса).
getReferrerQueryParameters
API getReferrerQueryParameters
действует так же, как и getQueryParameters
, за исключением того, что он воздействует на реферер, а не на текущий URL-адрес. Возвращает первый или все параметры для queryKey
данного реферера. Возвращает первое значение из queryKey
или массив значений из queryKey
.
Синтаксис
getReferrerQueryParameters(queryKey[, retrieveAll])
Параметры
Параметр | Тип | Описание |
---|---|---|
queryKey | нить | Ключ для чтения параметров запроса. |
retrieveAll | логическое значение | Нужно ли получать все значения. |
Например, если URL-адрес реферера — https://example.com/path?var=foo&var1=foo1&var=foo2&var=foo
, то:
-
getReferrerQueryParameters('var') == 'foo'
-
getReferrerQueryParameters('var', false) == 'foo'
-
getReferrerQueryParameters('var', null) == 'foo'
-
getReferrerQueryParameters('var', true) == ['foo', 'foo2', 'foo']
Связанные разрешения
get_referrer
должен разрешить компонент query
и должен указать queryKey
в разрешенных ключах запроса (или разрешить любой ключ запроса).
getReferrerUrl
Учитывая тип компонента, API считывает объект документа для реферера и возвращает строку, которая представляет часть реферера. Если компонент не указан, возвращается полный URL-адрес реферера.
Синтаксис
getReferrerUrl([component])
Параметры
Параметр | Тип | Описание |
---|---|---|
component | нить | Компонент, возвращаемый из URL-адреса. Может быть одним из следующих: protocol , host , port , path , query , extension . Если component undefined , имеет null или не соответствует ни одному из этих компонентов, будет возвращен весь URL-адрес. |
Связанные разрешения
get_referrer
должен разрешить компонент query
и должен указать queryKey
в разрешенных ключах запроса (или разрешить любой ключ запроса).
getTimestamp
Устарело. Предпочитаю getTimestampMillis .
Возвращает число , представляющее текущее время в миллисекундах с эпохи Unix, возвращаемое Date.now()
.
Синтаксис
getTimestamp();
Связанные разрешения
Никто.
getTimestampMillis
Возвращает число , представляющее текущее время в миллисекундах с эпохи Unix, возвращаемое Date.now()
.
Синтаксис
getTimestampMillis();
Связанные разрешения
Никто.
getType
Возвращает строку, описывающую тип данного значения. В отличие от typeof
, getType
различает array
и object
.
Синтаксис
getType(data.someField)
Примечания
В следующей таблице перечислены строки, возвращаемые для каждого входного значения.
Входное значение | Результат |
---|---|
undefined | 'неопределенный' |
null | 'нулевой' |
true | 'логическое' |
12 | 'число' |
'string' | 'нить' |
{ a: 3 } | 'объект' |
[ 1, 3 ] | 'множество' |
(x) => x + 1 | 'функция' |
Связанные разрешения
Никто.
getUrl
Возвращает строку , которая представляет весь или часть текущего URL-адреса с учетом типа компонента и некоторых параметров конфигурации.
Синтаксис
getUrl(component)
Параметры
Параметр | Тип | Описание |
---|---|---|
component | нить | Компонент, возвращаемый из URL-адреса. Должно быть одно из: protocol , host , port , path , query , extension , fragment . Если компонент undefined , имеет null или не соответствует ни одному из этих компонентов, будет возвращено все значение href . |
Связанные разрешения
gtagSet
Передает команду установки gtag на уровень данных, чтобы она была обработана как можно скорее после завершения обработки текущего события и всех тегов, которые оно вызвало (или истечения времени ожидания обработки тега). Обновление гарантированно будет обработано в этом контейнере перед любыми элементами в очереди уровня данных.
Например, если оно вызывается тегом, запущенным при инициализации согласия , обновление будет применено до обработки события инициализации. Примерами могут быть: для ads_data_redaction
установлено значение true
или false
или для url_passthrough
установлено значение true
или false
.
Примеры:
const gtagSet = require('gtagSet');
gtagSet({
'ads_data_redaction': true,
'url_passthrough': true,
});
Синтаксис
gtagSet(object)
Параметры
Параметр | Тип | Описание |
---|---|---|
Object | объект | Объект, который обновляет глобальное состояние содержащихся в нем свойств. |
Связанные разрешения
write_data_layer
проверяет разрешение на запись в dataLayer
для всех указанных ключей. Если входные данные в gtagSet
представляют собой простой объект, API проверит разрешение на запись для всех плоских ключей внутри этого объекта, например, для gtagSet({foo: {bar: 'baz'}})
API проверит разрешение на запись для foo.bar
.
Если входные данные для gtagSet
являются ключом и некоторым непростым значением объекта, API проверит разрешение на запись для этого ключа, например, для gtagSet('abc', true)
, API проверит разрешение на запись для 'abc'
.
Обратите внимание: если во входном объекте есть цикл, будут проверены только клавиши до достижения того же объекта.
injectHiddenIframe
Добавляет на страницу невидимый iframe.
Обратные вызовы задаются как экземпляры функций и заключаются в функции JavaScript, которые вызывают их.
Синтаксис
injectHiddenIframe(url, onSuccess)
Параметры
Параметр | Тип | Описание |
---|---|---|
url | нить | URL-адрес, который будет использоваться в качестве значения атрибута src iframe. |
onSuccess | функция | Вызывается при успешной загрузке кадра. |
Связанные разрешения
injectScript
Добавляет тег скрипта на страницу для асинхронной загрузки данного URL-адреса. Обратные вызовы задаются как экземпляры функций и заключены в функции JavaScript, которые вызывают их.
Синтаксис
injectScript(url, onSuccess, onFailure[, cacheToken])
Параметры
Параметр | Тип | Описание |
---|---|---|
url | нить | Адрес скрипта, который будет внедрен. |
onSuccess | функция | Вызывается при успешной загрузке сценария. |
onFailure | функция | Вызывается, когда скрипт не загружается. |
cacheToken | нить | Необязательная строка, указывающая, что данный URL-адрес должен быть кэширован. Если указано это значение, будет создан только один элемент сценария для запроса JavaScript. Любые дополнительные попытки загрузки приведут к тому, что данные методы onSuccess и onFailure будут поставлены в очередь до тех пор, пока скрипт не загрузится. |
Связанные разрешения
isConsentGranted
Возвращает true, если указанный тип согласия предоставлен.
Согласие на определенный тип согласия считается предоставленным, если для типа согласия установлено значение «предоставлено» или не задано вообще. Если для типа согласия установлено любое другое значение, оно будет считаться не предоставленным.
Пользовательский интерфейс Диспетчера тегов для настроек тегов предложит возможность всегда активировать. Если тег с включенной функцией Always Fire использует этот API, согласие считается предоставленным и возвращается true
, независимо от фактического состояния согласия.
Пример:
const isConsentGranted = require('isConsentGranted');
if (isConsentGranted('ad_storage')) {
sendFullPixel();
} else {
sendPixelWithoutCookies();
}
Синтаксис
isConsentGranted(consentType)
Параметры
Параметр | Тип | Описание |
---|---|---|
consentType | нить | Тип согласия, состояние которого необходимо проверить. |
Связанные разрешения
Разрешение access_consent
с доступом на чтение для типа согласия.
JSON
Возвращает объект, предоставляющий функции JSON.
Функция parse()
анализирует строку JSON для создания значения или объекта, описываемого этой строкой. Если значение не может быть проанализировано (например, неверный формат JSON), функция вернет undefined
. Если входное значение не является строкой, входные данные будут преобразованы в строку.
Функция stringify()
преобразует входные данные в строку JSON. Если значение не может быть проанализировано (например, у объекта есть цикл), метод вернет undefined
.
Синтаксис
JSON.parse(stringInput)
JSON.stringify(value);
Параметры
JSON.parse
Параметр | Тип | Описание |
---|---|---|
строковый ввод | любой | Значение для преобразования. Если значение не является строкой, входные данные будут преобразованы в строку. |
JSON.stringify
Параметр | Тип | Описание |
---|---|---|
ценить | любой | Значение для преобразования. |
Пример
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'});
localStorage
Возвращает объект с методами доступа к локальному хранилищу.
Синтаксис
const localStorage = require('localStorage');
// Requires read access for the key. Returns null if the key does not exist.
localStorage.getItem(key);
// Requires write access for the key. Returns true if successful.
localStorage.setItem(key, value);
// Requires write access for the key.
localStorage.removeItem(key);
Связанные разрешения
Пример
const localStorage = require('localStorage');
if (localStorage) {
const value = localStorage.getItem('my_key');
if (value) {
const success = localStorage.setItem('my_key', 'new_value');
if (success) {
localStorage.removeItem('my_key');
}
}
}
logToConsole
Записывает аргументы в консоль браузера.
Синтаксис
logToConsole(obj1 [, obj2,... objN])
Параметры
Параметр | Тип | Описание |
---|---|---|
obj1 [, obj2,... objN] | любой | Аргументы |
Связанные разрешения
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 . |
Связанные разрешения
Никто.
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);
Параметры
Параметры математических функций преобразуются в числа.
Связанные разрешения
Никто.
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.
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-адрес, который будет проанализирован. |
Связанные разрешения
Никто.
queryPermission
Запрос разрешенных и суженных разрешений. Возвращает логическое значение : true
, если разрешение предоставлено, в противном случае false
.
Синтаксис
queryPermission(permission, functionArgs*)
Параметры
Параметр | Тип | Описание |
---|---|---|
permission | нить | Название разрешения. |
functionArgs | любой | Аргументы функции различаются в зависимости от запрашиваемого разрешения. См. Аргументы функции ниже. |
Аргументы функции
sendPixel
, injectScript
, injectHiddenIframe
: второй параметр должен быть строкой URL.
writeGlobals
, readGlobals
: второй параметр должен быть записываемым или читаемым ключом.
readUrl
: дополнительные аргументы не требуются для запроса возможности чтения всего URL-адреса. Чтобы узнать, можно ли прочитать данный компонент, передайте имя компонента в качестве второго аргумента:
if (queryPermission('readUrl','port')) {
// read the port
}
Чтобы проверить, доступен ли для чтения конкретный ключ запроса, передайте ключ запроса в качестве третьего параметра:
if (queryPermission('readUrl','query','key')) {
getUrlComponent(...);
}
Связанные разрешения
Никто.
readCharacterSet
Возвращает значение document.characterSet
.
Синтаксис
readCharacterSet()
Параметры
Никто.
Связанные разрешения
readTitle
Возвращает значение document.title
.
Синтаксис
readTitle()
Параметры
Никто.
Связанные разрешения
require
Импортирует встроенную функцию по имени. Возвращает функцию или объект , который можно вызвать из вашей программы. Возвращает неопределенное значение , если браузер не поддерживает встроенную функцию.
Синтаксис
require(name)
Параметры
Параметр | Тип | Описание |
---|---|---|
name | нить | Имя функции для импорта. |
Пример
const getUrl = require('getUrl');
const url = getUrl();
Связанные разрешения
Никто.
sendPixel
Выполняет запрос GET к указанной конечной точке URL-адреса.
Синтаксис
sendPixel(url, onSuccess, onFailure)
Параметры
Параметр | Тип | Описание |
---|---|---|
url | нить | Куда отправить пиксель. |
onSuccess | функция | Вызывается при успешной загрузке пикселя. Примечание. даже если запрос успешно отправлен, браузерам может потребоваться действительный ответ изображения для запуска onSuccess. |
onFailure | функция | Вызывается, когда пиксель не загружается. Примечание. Даже если запрос успешно отправлен, onFailure может запуститься, если сервер не возвращает действительный ответ изображения. |
Связанные разрешения
setCookie
Устанавливает или удаляет файл cookie с указанным именем, значением и параметрами.
Синтаксис
setCookie(name, value[, options, encode])
Параметры
Параметр | Тип | Описание |
---|---|---|
name | нить | Имя файла cookie. |
value | нить | Значение файла cookie. |
options | объект | Указывает атрибуты Domain, Path, Expires, Max-Age, Secure и SameSite . (См. «Параметры» ниже.) |
encode | логическое значение | Определяет, должно ли значение cookie кодироваться с помощью JavaScript encodeURIComponent() . По умолчанию true . |
- Домен: устанавливается свойством
options['domain']
, если оно присутствует. Установите для этого значения значение'auto'
, чтобы попытаться записать файл cookie с использованием максимально широкого домена в зависимости от местоположения документа. Если это не удастся, он будет последовательно пытаться использовать более узкие поддомены. Если все это не удастся, он попытается записать файл cookie без домена. Если значение не установлено, будет предпринята попытка записать файл cookie без указания домена. Примечание. Когда файл cookie без указанного домена записывается вdocument.cookie
, пользовательский агент по умолчанию будет использовать домен файла cookie на хосте текущего местоположения документа. - Путь: задается
options['path']
, если они присутствуют. Когда файл cookie без указанного пути записывается вdocument.cookie
, пользовательский агент по умолчанию будет использовать путь файла cookie к пути к текущему местоположению документа. - Максимальный возраст: устанавливается
options['max-age']
, если он присутствует. - Срок действия: устанавливается
options['expires']
, если он присутствует. Если он присутствует, это должна быть строка даты в формате UTC.Date.toUTCString()
можно использовать для форматированияDate
для этого параметра. - Безопасность: устанавливается
options['secure']
, если они присутствуют. - SameSite: устанавливается
options['samesite']
, если они присутствуют.
Связанные разрешения
setDefaultConsentState
Отправляет обновление согласия по умолчанию на уровень данных, которое будет обработано как можно скорее после завершения обработки текущего события и всех тегов, которые оно вызвало (или истечения времени ожидания обработки тега). Обновление гарантированно будет обработано в этом контейнере перед любыми элементами в очереди на уровне данных. Подробнее о согласии …
Пример:
const setDefaultConsentState = require('setDefaultConsentState');
setDefaultConsentState({
'ad_storage': 'denied',
'analytics_storage': 'granted',
'third_party_storage': 'denied',
'region': ['US-CA'],
'wait_for_update': 500
});
Синтаксис
setDefaultConsentState(consentSettings)
Параметры
Параметр | Тип | Описание |
---|---|---|
consentSettings | объект | Объект, определяющий состояние по умолчанию для указанных типов согласия. |
Объект consentSettings
представляет собой сопоставление произвольных строк типа согласия с одним из 'granted'
или 'denied'
. Он поддерживает следующие значения:
Имя ключа | Тип | Описание |
---|---|---|
consentType | нить | Значение для каждого типа согласия может быть установлено как «предоставлено» или «отказано». Любое значение, кроме «предоставлено», будет рассматриваться как «запрещено». Установка значения `undefined` не повлияет на его предыдущее значение. |
region | Множество | Необязательный массив кодов регионов, определяющий, к какому региону применяются настройки согласия. Коды регионов выражаются с использованием стран и/или подразделений в формате ISO 3166-2. |
wait_for_update | число | Указывает значение в миллисекундах, определяющее продолжительность ожидания перед отправкой данных. Используется с инструментами согласия, которые загружаются асинхронно. |
Связанные разрешения
Разрешение access_consent
с доступом на запись для всех типов согласия в объекте согласия.
setInWindow
Устанавливает заданное значение в window
по указанной клавише. По умолчанию этот метод не устанавливает значение в window
, если оно уже присутствует. Установите для overrideExisting
значение true
, чтобы установить значение в window
независимо от наличия существующего значения. Возвращает логическое значение : true
, если значение было установлено успешно, и false
в противном случае.
Синтаксис
setInWindow(key, value, overrideExisting)
Параметры
Параметр | Тип | Описание |
---|---|---|
key | нить | Ключ в window для размещения значения. |
value | * | Значение, которое нужно установить в window . |
overrideExisting | логическое значение | Флаг, указывающий это значение, должен быть установлен в window , независимо от того, есть ли там значение или нет. |
Связанные разрешения
sha256
Вычисляет дайджест входных данных SHA-256 и вызывает обратный вызов с дайджестом, закодированным в base64, если только в объекте options
не указана другая кодировка выходных данных.
Пример:
sha256('inputString', (digest) => {
sendPixel('https://example.com/collect?id=' + digest);
data.gtmOnSuccess();
}, data.gtmOnFailure);
sha256('inputString', (digest) => {
sendPixel('https://example.com/collect?id=' + digest);
data.gtmOnSuccess();
}, data.gtmOnFailure, {outputEncoding: 'hex'});
Синтаксис
sha256(input, onSuccess, onFailure = undefined, options = undefined)
Параметры
Параметр | Тип | Описание |
---|---|---|
input | нить | Строка, для которой вычисляется хэш. |
onSuccess | функция | Вызывается с итоговым дайджестом, закодированным в base64, если только в объекте options не указана другая выходная кодировка. |
onFailure | функция | Вызывается, если при вычислении дайджеста возникает ошибка или если в браузере нет встроенной поддержки sha256. Обратный вызов вызывается с объектом, содержащим имя ошибки и сообщение. |
options | объект | Необязательный объект параметров для указания выходной кодировки. Если указано, объект должен содержать ключ outputEncoding со значением base64 или hex . |
Связанные разрешения
Никто.
templateStorage
Возвращает объект с методами доступа к хранилищу шаблонов. Хранилище шаблонов позволяет совместно использовать данные при выполнении одного шаблона. Данные, хранящиеся в хранилище шаблонов, сохраняются на протяжении всего времени жизни страницы.
Синтаксис
const templateStorage = require('templateStorage');
templateStorage.getItem(key);
templateStorage.setItem(key, value);
templateStorage.removeItem(key);
// Deletes all stored values for the template.
templateStorage.clear();
Связанные разрешения
Пример
const templateStorage = require('templateStorage');
const sendPixel = require('sendPixel');
// Ensure sendPixel is called only once per page.
if (templateStorage.getItem('alreadyRan')) {
data.gtmOnSuccess();
return;
}
templateStorage.setItem('alreadyRan', true);
sendPixel(
data.oncePerPagePixelUrl,
data.gtmOnSuccess,
() => {
templateStorage.setItem('alreadyRan', false);
data.gtmOnFailure();
});
toBase64
API toBase64
позволяет кодировать строку в представление base64.
Синтаксис
toBase64(input)
Параметры
Параметр | Тип | Описание |
---|---|---|
input | нить | Строка для кодирования. |
Пример
const toBase64 = require('toBase64');
const base64Hello = toBase64('hello');
Связанные разрешения
Никто
updateConsentState
Отправляет обновление согласия на уровень данных, которое должно быть обработано как можно скорее после того, как текущее событие и все запущенные им теги завершатся (или истечет время ожидания обработки тега). Обновление гарантированно будет обработано в этом контейнере перед любыми элементами в очереди на уровне данных. Подробнее о согласии …
Пример:
const updateConsentState = require('updateConsentState');
updateConsentState({
'ad_storage': 'granted',
'analytics_storage': 'denied',
'third_party_storage': 'granted',
});
Синтаксис
updateConsentState(consentSettings)
Параметры
Параметр | Тип | Описание |
---|---|---|
consentSettings | объект | Объект, который обновляет состояние для указанных типов согласия. |
Объект consentSettings
представляет собой сопоставление произвольных строк типа согласия с одним из 'granted'
или 'denied'
. Он поддерживает следующие значения:
Имя ключа | Тип | Описание |
---|---|---|
consentType | нить | Для каждого типа согласия можно установить значение «разрешено» или «отказано». Любое значение, кроме «предоставлено», будет рассматриваться как «отказано». Установка значения «неопределено» не повлияет на его предыдущее значение. |
Связанные разрешения
Разрешение access_consent
с доступом на запись для всех типов согласия в объекте согласия.
Тестовые 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 = {};
mockObject('localStorage', {
setItem: (key, value) => {storage[key] = value;},
getItem: (key) => storage[key],
});
runCode
Запускает код шаблона, т. е. содержимое вкладки «Код» , в текущей тестовой среде с заданным объектом входных данных.
Синтаксис
runCode(data)
Параметры
Параметр | Тип | Описание |
---|---|---|
data | объект | Объект данных, который будет использоваться в тесте. |
Возвращаемое значение
Возвращает значение переменной для шаблонов переменных; возвращает undefined
для всех других типов шаблонов.
Пример
runCode({field1: 123, field2: 'value'});