Interfejsy API tagowania po stronie serwera

W tym dokumencie opisujemy interfejsy API do tagowania po stronie serwera.


addEventCallback

Rejestruje funkcję wywołania zwrotnego, która zostanie wywołana na końcu zdarzenia. Wywołanie zwrotne zostanie wykonane po wykonaniu wszystkich tagów zdarzenia. Wywołanie zwrotne jest przekazywane 2 wartości: identyfikator kontenera, który wywołuje funkcję, i obiekt zawierający informacje o tym zdarzeniu.

Gdy ten interfejs API jest używany w tagu, jest on powiązany z bieżącym zdarzeniem. Gdy ten interfejs API jest używany w kliencie, musi być powiązany z konkretnym zdarzeniem za pomocą funkcji bindToEvent interfejsu API runContainer. Więcej informacji znajdziesz w przykładzie.

Składnia

const addEventCallback = require('addEventCallback');

addEventCallback((containerId, eventData) => {
  // Take some action based on the event data.
});

Parametry

Parametr Typ Opis
callback funkcja Funkcja do wywołania po zakończeniu zdarzenia.

Obiekt eventData zawiera te dane:

Nazwa klucza Typ Opis
tags Tablica Tablica obiektów danych tagów. Każdy tag uruchomiony podczas zdarzenia będzie miał w tej tablicy wpis. Obiekt danych tagu zawiera identyfikator tagu (id), jego stan wykonania (status) i czas jego wykonania (executionTime). Dane tagu będą też zawierać dodatkowe metadane tagu skonfigurowane w tagu.

W kliencie:

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();
    }
  });
});

W tagu:

const addEventCallback = require('addEventCallback');

addEventCallback((containerId, eventData) => {
  // This will be called at the end of the current event.
});

Powiązane uprawnienia

read_event_metadata


callLater

Zaplanuje asynchroniczne wywołanie funkcji. Funkcja zostanie wywołana po zwróceniu bieżącego kodu. Jest to odpowiednik setTimeout(<function>, 0).

Przykład

const callLater = require('callLater');
const logToConsole = require('logToConsole');

callLater(() => {
  logToConsole('Logged asynchronously');
});

Składnia

callLater(function)

Parametry

Parametr Typ Opis
function funkcja Funkcja do wywołania.

Powiązane uprawnienia

Brak.


claimRequest

Użyj tego interfejsu API w kliencie do zgłoszenia żądania. Po zarezerwowaniu żądania kontener nie uruchamia dodatkowych klientów.

Ten interfejs API zgłasza wyjątek, jeśli zostanie wywołany w tagu lub zmiennej. Ten interfejs API zgłasza wyjątek, jeśli zostanie wywołany po zwrocie klienta (np.w ramach wywołania zwrotnego asynchronicznego, np. callLater lub runContainer onComplete).

Przed wywołaniem interfejsu API runContainer klient powinien zgłosić żądanie do żądania za pomocą tego interfejsu API.

Przykład

const claimRequest = require('claimRequest');

claimRequest();

Składnia

claimRequest();

Powiązane uprawnienia

Brak.


computeEffectiveTldPlusOne

Zwraca efektywną domenę najwyższego poziomu + 1 (eTLD+1) danej domeny lub adresu URL. Wartość eTLD+1 jest obliczana przez porównanie domeny z regułami listy domen publicznych. ETLD+1 to zwykle domena najwyższego poziomu, w której można umieścić plik cookie.

Jeśli argument ma wartość null lub nie jest określony, wartość argumentu jest zwracana bez zmian. W przeciwnym razie argument zostanie przekształcony w ciąg znaków. Jeśli argument nie jest prawidłową domeną lub adresem URL, zwracany jest pusty ciąg znaków. Jeśli serwer nie może pobrać listy domen publicznych, wartość argumentu jest zwracana bez zmian.

Przykład

const computeEffectiveTldPlusOne = require('computeEffectiveTldPlusOne');

// Returns 'example.co.uk'
computeEffectiveTldPlusOne('analytics.example.co.uk');

// Returns 'example.co.uk'
computeEffectiveTldPlusOne('https://analytics.example.co.uk/path');

Składnia

computeEffectiveTldPlusOne(domainOrUrl);

Parametry

Parametr Typ Opis
domainOrUrl ciąg znaków Domena lub adres URL, dla których ma zostać obliczona wartość eTLD+1.

Powiązane uprawnienia

Brak.


createRegex

Tworzy nowe wystąpienie wyrażenia regularnego i zwraca je zapakowane w obiekt. Nie masz bezpośredniego dostępu do wyrażenia regularnego. Możesz go jednak przekazać do interfejsu testRegex API, String.replace(), String.match() i String.search().

Zwraca wartość null, jeśli wyrażenie regularne jest nieprawidłowe lub Re2 jest niedostępne na serwerze.

Ten interfejs API korzysta z implementacji Re2. Obraz Dockera serwera musi być w wersji 2.0.0 lub nowszej.

Przykład

const createRegex = require('createRegex');

const domainRegex = createRegex('\\w+\\.com', 'i');

// Returns '/foobar'
'example.com/foobar'.replace(domainRegex, '');

Składnia

createRegex(pattern, flags);

Parametry

Parametr Typ Opis
pattern ciąg znaków Tekst wyrażenia regularnego.
flags ciąg znaków Opcjonalny ciąg znaków zawierający flagi tworzonego wyrażenia regularnego. Obsługiwane są znaki „g” (globalnie) i „i” (wielkość liter nie jest rozróżniana). Pozostałe znaki są dyskretnie ignorowane.

Powiązane uprawnienia

Brak.

Minimalna wersja obrazu

2.0.0


decodeUri

Dekoduje wszystkie zakodowane znaki w podanym identyfikatorze URI. Zwraca ciąg znaków, który reprezentuje zdekodowany identyfikator URI. Zwraca undefined w przypadku wartości z nieprawidłowymi danymi wejściowymi.

Przykład

const decodeUri = require('decodeUri');

const decodedUrl = decodeUri(data.encodedUrl);
if (decodedUrl) {
  // ...
}

Składnia

decodeUri(encoded_uri);

Parametry

Parametr Typ Opis
encoded_uri ciąg znaków Identyfikator URI zakodowany przez encodeUri() lub w inny sposób.

Powiązane uprawnienia

Brak.


decodeUriComponent

Dekoduje wszystkie zakodowane znaki w podanym komponencie URI. Zwraca ciąg znaków, który reprezentuje zdekodowany komponent URI. Zwraca wartość undefined w przypadku podania nieprawidłowych danych wejściowych.

Przykład

const decodeUriComponent = require('decodeUriComponent');

const decodedQuery = decodeUriComponent(data.query);
if (decodedQuery) {
  // ...
}

Składnia

decodeUriComponent(encoded_uri_component);

Parametry

Parametr Typ Opis
encoded_uri_component ciąg znaków Komponent identyfikatora URI, który został zakodowany przez encodeUriComponent() lub w inny sposób.

Powiązane uprawnienia

Brak.


encodeUri

Zwraca zakodowany identyfikator URI (Uniform Resource Identifier) przez zmianę znaczenia znaków specjalnych. Zwraca ciąg znaków, który reprezentuje podany ciąg zakodowany jako identyfikator URI.

Przykład

const encodeUri = require('encodeUri');
const sendHttpGet = require('sendHttpGet');

sendHttpGet('https://www.example.com/' + encodeUri(pathInput));

Składnia

encodeUri(uri);

Parametry

Parametr Typ Opis
uri ciąg znaków Kompletny identyfikator URI.

Powiązane uprawnienia

Brak.


encodeUriComponent

Zwraca zakodowany identyfikator URI (Uniform Resource Identifier) przez zmianę znaczenia znaków specjalnych. Zwraca ciąg znaków, który reprezentuje podany ciąg zakodowany jako identyfikator URI.

Przykład

const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');

sendHttpGet('https://www.example.com/?' + encodeUriComponent(queryInput));

Składnia

encodeUriComponent(str);

Parametry

Parametr Typ Opis
str ciąg znaków Komponent identyfikatora URI.

Powiązane uprawnienia

Brak.


extractEventsFromMpv1

Konwertuje przychodzące żądanie Measurement Protocol w wersji 1 na listę zdarzeń w formacie ujednoliconego schematu. Zwraca listę wyodrębnionych zdarzeń. Jeśli żądanie ma nieprawidłowy format, zwraca błąd.

Przykład

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.
  }
}

Składnia

extractEventsFromMpv1();

Powiązane uprawnienia

Wymaga uprawnienia read_request. Musisz skonfigurować uprawnienie tak, aby zezwalało na dostęp co najmniej do:

  • body
  • query parameters

extractEventsFromMpv2

Konwertuje przychodzące żądanie Measurement Protocol V2 na listę zdarzeń w formacie ujednoliconego schematu. Zwraca listę wyodrębnionych zdarzeń. Jeśli żądanie ma nieprawidłowy format, zwraca błąd.

Przykład

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.
  }
}

Składnia

extractEventsFromMpv2();

Powiązane uprawnienia

Wymaga uprawnienia read_request. Musisz skonfigurować uprawnienie tak, aby zezwalało na dostęp co najmniej do:

  • body
  • query parameters

fromBase64

Dekoduje ciąg zakodowany w formacie base64. Zwraca wartość undefined, jeśli dane wejściowe są nieprawidłowe.

Składnia

fromBase64(base64EncodedString);

Parametry

Parametr Typ Opis
base64EncodedString ciąg znaków Ciąg zakodowany w standardzie Base64.

Przykład

const fromBase64 = require('fromBase64');

const greeting = fromBase64('aGVsbG8=');
if (greeting === 'hello') {
  // ...
}

Powiązane uprawnienia

Brak.


generateRandom

Zwraca losową liczbę (liczbę całkowitą) z podanego zakresu.

Przykład

const generateRandom = require('generateRandom');

const randomValue = generateRandom(0, 10000000);

Składnia

generateRandom(min, max);

Parametry

Parametr Typ Opis
min liczba Minimalna wartość potencjalna zwróconej liczby całkowitej (włącznie).
max liczba Maksymalna wartość potencjalna zwróconej liczby całkowitej (włącznie).

Powiązane uprawnienia

Brak.


getAllEventData

Zwraca kopię danych zdarzenia.

Składnia

getAllEventData();

Powiązane uprawnienia

read_event_data


getClientName

Zwraca ciąg znaków zawierający nazwę bieżącego klienta.

Składnia

getClientName();

Powiązane uprawnienia

read_container_data


getContainerVersion

Zwraca obiekt zawierający dane o bieżącym kontenerze. Zwracany obiekt będzie zawierał te pola:

{
  containerId: string,
  debugMode: boolean,
  environmentName: string,
  environmentMode: boolean,
  previewMode: boolean,
  version: string,
}

Przykład

const getContainerVersion = require('getContainerVersion');

const containerVersion = getContainerVersion();
const containerId = containerVersion['containerId'];
const isDebug = containerVersion['debugMode'];

Składnia

getContainerVersion();

Powiązane uprawnienia

read_container_data


getCookieValues

Zwraca tablicę zawierającą wartości wszystkich plików cookie o podanej nazwie.

Przykład

const getCookieValues = require('getCookieValues');

const lastVisit = getCookieValues('lastVisit')[0];
if (lastVisit) {
  // ...
}

Składnia

getCookieValues(name[, noDecode]);

Parametry

Parametr Typ Opis
name ciąg znaków Nazwa pliku cookie.
noDecode boolean Jeśli jest ustawiona wartość true, wartości plików cookie nie będą dekodowane przed zwróceniem. Domyślna wartość to false.

Powiązane uprawnienia

get_cookies


getEventData

Zwraca kopię wartości z danej ścieżki w danych zdarzenia. Zwraca wartość undefined, jeśli na danej ścieżce nie ma danych zdarzenia lub nie ma wartości.

Przykład

const getEventData = require('getEventData');

const campaignId = getEventData('campaign.id');
const itemId = getEventData('items.0.id');
const referrer = getEventData('page_referrer');

Parametry

Parametr Typ Opis
keyPath dowolny Ścieżka klucza, w której poszczególne komponenty są rozdzielone kropkami. Komponentami ścieżki mogą być klucze w obiekcie lub indeksy w tablicy. Jeśli keyPath nie jest ciągiem, jest przekształcany w ciąg.

Składnia

getEventData(keyPath);

Powiązane uprawnienia

read_event_data


getGoogleAuth

Zwraca obiekt autoryzacji, który w przypadku użycia sendHttpGet lub sendHttpRequest zawiera nagłówek autoryzacji dla interfejsów Google Cloud APIs. Ten interfejs API używa domyślnych danych logowania aplikacji, aby automatycznie znajdować dane logowania ze środowiska serwera.

Przykład

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();
  }
});

Składnia

getGoogleAuth(scopes);

Parametry

Parametr Typ Opis
scopes Tablica Tablica zakresów interfejsów API Google OAuth 2.0, o które prosisz o dostęp.

Powiązane uprawnienia

Wymaga uprawnienia use_google_credentials. Musisz skonfigurować uprawnienie z co najmniej 1 dozwolonym zakresem.


getGoogleScript

Pobiera zasób z wcześniej określonego zestawu skryptów Google i zwraca obietnicę ze skryptem i powiązanymi metadanymi buforowania.

Obietnica zmieni się w obiekt zawierający 2 klucze: script i metadata. Jeśli żądanie się nie powiedzie, obietnica zostanie odrzucona z kluczem reason.

Obiekt metadata będzie zawierał poniższe metadane buforowania na podstawie nagłówków odpowiedzi zasobu. Każde pole będzie obecne tylko wtedy, gdy odpowiedź dotycząca zasobu będzie zawierać odpowiedni nagłówek.

{
  'cache-control': string,
  'expires': string,
  'last-modified': string,
}

Przykład

const getGoogleScript = require('getGoogleScript');

getGoogleScript('ANALYTICS').then((result) => {
  // Operate on result.script and result.metadata here.
});

Składnia

getGoogleScript(script[, options]);

Parametry

Parametr Typ Opis
script ciąg znaków Nazwa skryptu. Obsługiwane skrypty to 'ANALYTICS', 'GTAG' i 'GTM'.

Opcja 'ANALYTICS' pobiera skrypt Google Analytics z kolumny https://www.google-analytics.com/analytics.js.

Opcja 'GTAG' pobiera skrypt globalnego tagu witryny (gtag.js) z pliku https://www.googletagmanager.com/gtag/js.

Opcja 'GTM' pobiera skrypt Menedżera tagów Google z sekcji https://www.googletagmanager.com/gtm.js.
options obiekt, Opcjonalne opcje żądania. Poniżej znajdziesz listę obsługiwanych opcji.

Opcje

Option Typ Opis
id ciąg znaków Dotyczy 'GTAG' z identyfikatorem pomiaru gtag i 'GTM' z identyfikatorem kontenera internetowego (np. GTM-XXXX).
debug dowolny Jeśli parametr ma wartość prawda, wysyła żądanie i zwraca wersję do debugowania skryptu pomiarowego.
timeout liczba Limit czasu żądania w milisekundach. Wartości niedodatnie są ignorowane. Po upływie limitu czasu żądania wywołanie zwrotne zostanie wywołane z undefined dla wartości skryptu i z {} dla obiektu metadanych.

Nierozpoznane klawisze opcji są ignorowane.

Powiązane uprawnienia

Wymaga uprawnienia send_http. Musisz skonfigurować uprawnienie tak, aby dawało dostęp do co najmniej:

  • Zezwól na używanie domen Google

getRemoteAddress

Zwraca reprezentację ciągu znaków adresu IP, z którego pochodzi żądanie, np. 12.345.67.890 w przypadku IPv4 lub 2001:0db8:85a3:0:0:8a2e:0370:7334 w przypadku IPv6, przez odczytanie nagłówków żądań, takich jak Forwarded (Przekierowane) i X-Forwarded-For. Uwaga: ten interfejs API dokłada wszelkich starań, aby wykryć źródłowy adres IP, ale nie może zagwarantować, że wynik będzie prawidłowy.

Składnia

getRemoteAddress();

Powiązane uprawnienia

Wymaga uprawnienia read_request. Musisz skonfigurować uprawnienie tak, aby zezwalało na dostęp co najmniej do:

  • Nagłówki Forwarded i X-Forwarded-For
  • Zdalny adres IP

getRequestBody

Zwraca treść żądania jako ciąg znaków (jeśli istnieje) lub undefined w innym przypadku.

Składnia

getRequestBody();

Powiązane uprawnienia

read_request


getRequestHeader

Zwraca wartość nazwanego nagłówka żądania jako ciąg znaków (jeśli istnieje) lub undefined w innym przypadku. Jeśli nagłówek się powtórzy, zwrócone wartości są łączone z wartością ', '.

Przykład

const getRequestHeader = require('getRequestHeader');

const host = getRequestHeader('host');

Składnia

getRequestHeader(headerName);

Parametry

Parametr Typ Opis
headerName ciąg znaków Nazwa nagłówka. Wielkość liter w wartości nie jest rozróżniana.

Powiązane uprawnienia

read_request


getRequestMethod

Zwraca metodę żądania, np. 'GET' lub 'POST', jako ciąg znaków.

Przykład

const getRequestMethod = require('getRequestMethod');

if (getRequestMethod() === 'POST') {
  // Handle the POST request here.
}

Składnia

getRequestMethod();

Powiązane uprawnienia

Brak.


getRequestPath

Zwraca ścieżkę żądania bez ciągu zapytania. Jeśli np. adres URL to '/foo?id=123', zwracana jest wartość '/foo'. Automatycznie usuwa ze ścieżki prefiks adresu URL kontenera serwera. Jeśli na przykład adres URL kontenera serwera to https://example.com/analytics, a ścieżka żądania to '/analytics/foo', zwraca wartość '/foo'.

Przykład

const getRequestPath = require('getRequestPath');

const requestPath = getRequestPath();
if (requestPath === '/') {
  // Handle a request for the root path.
}

Składnia

getRequestPath();

Powiązane uprawnienia

read_request


getRequestQueryParameter

Zwraca zdekodowaną wartość nazwanego parametru ciągu zapytania jako ciąg znaków lub undefined, jeśli go nie ma. Jeśli parametr będzie się powtarzać w ciągu zapytania, zwrócona zostanie pierwsza wartość, która się w nim pojawi.

Przykład

const getRequestQueryParameter = require('getRequestQueryParameter');

const query = getRequestQueryParameter('query');
if (query) {
  // Process query here.
}

Składnia

getRequestQueryParameter(name);

Parametry

Parametr Typ Opis
name ciąg znaków Nazwa parametru zapytania.

Powiązane uprawnienia

read_request


getRequestQueryParameters

Zwraca parametry zapytania przychodzącego żądania HTTP jako obiekt, który mapuje nazwy parametrów zapytania na odpowiednie wartości lub wartości. Nazwy i wartości parametrów są dekodowane.

Przykład

const getRequestQueryParameters = require('getRequestQueryParameters');

const queryParameters = getRequestQueryParameters();
if (queryParameters['search']) {
  // Handle the search query here.
  const maxResults = queryParameters['max_results'];
}

Składnia

getRequestQueryParameters();

Powiązane uprawnienia

read_request


getRequestQueryString

Zwraca zapytanie w postaci ciągu znaków, bez początkowego znaku zapytania, lub pustego ciągu, jeśli URL żądania nie zawiera ciągu zapytania.

Przykład

const getRequestQueryString = require('getRequestQueryString');

const queryString = getRequestQueryString();
if (queryString !== '') {
  // Handle the query string.
}

Składnia

getRequestQueryString();

Powiązane uprawnienia

read_request


getTimestamp

Wycofano. Wolisz getTimestampMillis.

Zwraca liczbę reprezentującą czas w milisekundach od początku epoki uniksowej, zwracany przez Date.now().

Składnia

getTimestamp();

Powiązane uprawnienia

Brak.


getTimestampMillis

Zwraca liczbę reprezentującą czas w milisekundach od początku epoki uniksowej, zwracany przez Date.now().

Składnia

getTimestampMillis();

Powiązane uprawnienia

Brak.


getType

Zwraca ciąg opisujący typ podanej wartości.

Typ danych wejściowych Zwrócona wartość
ciąg znaków 'string'
liczba 'number'
boolean 'boolean'
null 'null'
nieokreślony 'undefined'
Tablica 'array'
Obiekt. 'object'
Funkcja 'function'

Przykład

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);
}

Składnia

getType(value);

Parametry

Parametr Typ Opis
value dowolny Wartość wejściowa.

Powiązane uprawnienia

Brak.


hmacSha256

Oblicza zakodowany podpis przy użyciu kodu HMAC i SHA-256. Domyślnie jest to kodowanie base64url.

Aby korzystać z tego interfejsu API, ustaw zmienną środowiskową SGTM_CREDENTIALS na serwerze na ścieżkę pliku klucza JSON zakodowanego w UTF-8 w tym formacie:

{
  "key1": "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5",
  "key2": "OTg3NjU0MzIxMHp5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2Jh",
  ...
}

Wartości to klucze HMAC zakodowane w base64.

Przykład

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;

Składnia

hmacSha256(data, keyId, options)

Parametry

Parametr Typ Opis
data ciąg znaków Dane do obliczenia wartości HMAC.
keyId ciąg znaków Identyfikator klucza z pliku klucza JSON odnoszący się do klucza, który ma zostać użyty.
options obiekt, Opcjonalna konfiguracja interfejsu API. (Zobacz Opcje poniżej).

Opcje

Option Typ Opis
outputEncoding ciąg znaków Określa format kodowania wartości zwracanej. Obsługiwane formaty to hex, base64 i base64url. Jeśli nie podano żadnej wartości, domyślną wartością jest base64url.

Powiązane uprawnienia

use_custom_private_keys

Minimalna wersja obrazu

1.0.0


isRequestMpv1

Zwraca wartość true, jeśli żądanie przychodzące jest żądaniem platformy Measurement Protocol w wersji 1, lub false w innym przypadku.

Przykład

const isRequestMpv1 = require('isRequestMpv1');

if (isRequestMpv1()) {
  // Handle Measurement Protocol V1 request.
  const events = extractEventsFromMpv1();
}

Składnia

isRequestMpv1();

Powiązane uprawnienia

Brak.


isRequestMpv2

Zwraca wartość true, jeśli żądanie przychodzące jest żądaniem platformy Measurement Protocol w wersji 2, lub parametr false w innym przypadku.

Przykład

const isRequestMpv2 = require('isRequestMpv2');

if (isRequestMpv2()) {
  // Handle Measurement Protocol V2 request.
  const events = extractEventsFromMpv2();
}

Składnia

isRequestMpv2();

Powiązane uprawnienia

Brak.


logToConsole

Loguje swoje argumenty w konsoli.

Są one widoczne w eksploratorze logów w konsoli Google Cloud. W Eksploratorze logów uruchom zapytanie logName =~ "stdout", aby wyświetlić wpisy logu utworzone przez ten interfejs API.

Przykład

const logToConsole = require('logToConsole');

const that = 123;
const those = { ... };
logToConsole('that is: ', that, ' and those is: ', those);

Składnia

logToConsole(argument1[, argument2, ...]);

Parametry

Interfejs API przyjmuje co najmniej 1 argument, z którego w razie potrzeby każdy jest konwertowany na ciąg znaków i logowany w konsoli.

Powiązane uprawnienia

logging


makeInteger

Konwertuje podaną wartość na liczbę (całkowitą).

Składnia

makeInteger(value);

Parametry

Parametr Typ Opis
value dowolny typ Wartość do konwersji.

Powiązane uprawnienia

Brak.


makeNumber

Konwertuje podaną wartość na liczbę.

Składnia

makeNumber(value);

Parametry

Parametr Typ Opis
value dowolny typ Wartość do konwersji.

Powiązane uprawnienia

Brak.


makeString

Zwraca podaną wartość jako ciąg znaków.

Składnia

makeString(value);

Parametry

Parametr Typ Opis
value dowolny typ Wartość do konwersji.

Powiązane uprawnienia

Brak.


makeTableMap

Konwertuje prosty obiekt tabeli z 2 kolumnami na element Map. Służy on do zmiany pola szablonu SIMPLE_TABLE z 2 kolumnami na łatwiejszy format.

Ta funkcja może na przykład przekonwertować obiekt tabeli:

[
  {'key': 'k1', 'value': 'v1'},
  {'key': 'k2', 'value': 'v2'}
]

na mapę:

{
  'k1': 'v1',
  'k2': 'v2'
}

Zwraca Object: przekonwertowane pary klucz-wartość (Map) zostały do niego dodane. W przeciwnym razie null.

Składnia

makeTableMap(tableObj, keyColumnName, valueColumnName);

Parametry

Parametr Typ Opis
tableObj Wyświetl listę Obiekt tabeli do skonwertowania. To lista map, na których każdy element Map reprezentuje wiersz w tabeli. Każda nazwa właściwości w obiekcie wiersza to nazwa kolumny, a wartość właściwości to wartość kolumny w wierszu.
keyColumnName ciąg znaków Nazwa kolumny, której wartości staną się kluczami w przekonwertowanym elemencie Map.
valueColumnName ciąg znaków Nazwa kolumny, której wartości staną się wartościami w przekonwertowanym obiekcie Map.

Powiązane uprawnienia

Brak.


parseUrl

Zwraca obiekt, który zawiera wszystkie części składowe podanego adresu URL, podobnie jak obiekt URL.

Ten interfejs API zwraca kod undefined w przypadku każdego nieprawidłowego adresu URL. W przypadku prawidłowo sformatowanych adresów URL pola, których nie ma w ciągu adresu URL, będą miały wartość pustego ciągu znaków lub, w przypadku searchParams, pustego obiektu.

Zwracany obiekt będzie zawierał te pola:

{
  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,
}

Przykład

const parseUrl = require('parseUrl');

const urlObject = parseUrl('https://abc:xyz@example.com:8080/foo?param=val%2Cue#bar');

Składnia

parseUrl(url);

Parametry

Parametr Typ Opis
url ciąg znaków Pełny adres URL, który zostanie poddany analizie.

Powiązane uprawnienia

Brak.


returnResponse

Usuwa odpowiedź, która została wcześniej ustawiona przez inne szablony przy użyciu interfejsów API, które modyfikują odpowiedź, w tym setCookie, setPixelResponse, setResponseBody, setResponseHeader i setResponseStatus. Domyślnie jest to kod stanu HTTP 200, treść jest pusta i nie zawiera nagłówków.

Zaleca się używanie tego interfejsu API z szablonu klienta.

Składnia

returnResponse();

Przykład

Zobacz przykład runContainer.

Powiązane uprawnienia

return_response


runContainer

Uruchamia logikę kontenera (zmienne, reguły, tagi) w zakresie zdarzenia. Jeśli ten interfejs API zostanie wywołany podczas wykonywania kontenera, kontener zostanie uruchomiony ponownie.

Wywołania zwrotne onComplete i onStart otrzymują funkcję o nazwie bindToEvent. Aby uruchomić interfejs API w kontekście zdarzenia, użyj polecenia bindToEvent. Więcej informacji znajdziesz w przykładzie addEventCallback.

Zaleca się używanie tego interfejsu API z szablonu klienta.

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());

Składnia

runContainer(event, onComplete, onStart);

Parametry

Parametr Typ Opis
event obiekt, Parametry zdarzenia.
onComplete funkcja Wywołanie zwrotne, które jest wywoływane po zakończeniu uruchamiania wszystkich tagów.
onStart funkcja Wywołanie zwrotne jest wywoływane bezpośrednio przed rozpoczęciem uruchamiania tagów.

Powiązane uprawnienia

run_container


sendEventToGoogleAnalytics

Wysyła pojedyncze zdarzenie za pomocą typowych danych zdarzenia do Google Analytics i zwraca obietnicę, która otwiera się w obiekcie z kluczem location lub jest odrzucana do obiektu z kluczem reason. Miejsce docelowe, Universal Analytics lub Google Analytics 4, zależy od identyfikatora pomiaru w danych zdarzenia.

Pole location jest ustawione na nagłówek location (jeśli występuje).

Przykład

const sendEventToGoogleAnalytics = require('sendEventToGoogleAnalytics');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');

// Sends an event to Google Analytics and returns failure if the request did not
// succeed. Additionally, if the request resulted in a redirect request, the
// code nominates a redirect response to be returned.
sendEventToGoogleAnalytics(event).then((response) => {
  if (response.location) {
    setResponseHeader('location', response.location);
    setResponseStatus(302);
  } else {
    setResponseStatus(200);
  }
  data.gtmOnSuccess();
}, (err) => {
  setResponseStatus(500);
  data.gtmOnFailure();
});

Składnia

sendEventToGoogleAnalytics(event);

Parametry

Parametr Typ Opis
event obiekt, Zdarzenie w formacie ujednoliconego schematu.

Powiązane uprawnienia

Wymaga uprawnienia send_http. Musisz skonfigurować uprawnienie tak, aby dawało dostęp do co najmniej:

  • Zezwól na używanie domen Google

sendHttpGet

Wysyła żądanie HTTP GET do określonego adresu URL i zwraca obietnicę, która kończy się z wynikiem po zrealizowaniu lub po upływie limitu czasu żądania.

Wynik to obiekt zawierający 3 klucze: statusCode, headers i body. Jeśli żądanie się nie powiedzie (np. nieprawidłowy adres URL, brak trasy do hosta, błąd negocjacji SSL itp.), obietnica zostanie odrzucona z wartością {reason: 'failed'}. Jeśli ustawiono opcję timeout, a limit czasu żądania upłynął, obietnica zostanie odrzucona z wartością: {reason: 'timed_out'}

Przykład

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);

Składnia

sendHttpGet(url[, options]);

Parametry

Parametr Typ Opis
url ciąg znaków Żądany adres URL.
options obiekt, Opcjonalne opcje żądania. (Zobacz Opcje poniżej).

Opcje

Option Typ Opis
headers ciąg znaków Dodatkowe nagłówki żądania.
timeout liczba Czas oczekiwania (w milisekundach) do przerwania żądania. Domyślna wartość to 15000.
authorization obiekt, Opcjonalny obiekt autoryzacji z wywołania funkcji getGoogleAuth służący do uwzględniania nagłówków autoryzacji podczas wysyłania żądań do googleapis.com.

Powiązane uprawnienia

send_http


sendHttpRequest

Wysyła żądanie HTTP do wskazanego adresu URL i zwraca obietnicę, która zareaguje wraz z odpowiedzią po zakończeniu lub przekroczeniu limitu czasu żądania.

Wynik to obiekt zawierający 3 klucze: statusCode, headers i body. Jeśli żądanie się nie powiedzie (np. nieprawidłowy adres URL, brak trasy do hosta, błąd negocjacji SSL itp.), obietnica zostanie odrzucona z wartością {reason: 'failed'}. Jeśli ustawiono opcję timeout, a limit czasu żądania upłynął, obietnica zostanie odrzucona z wartością: {reason: 'timed_out'}

Przykład

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']);
});

Składnia

sendHttpRequest(url[, options[, body]]);

Parametry

Parametr Typ Opis
url ciąg znaków Żądany adres URL.
options obiekt, Opcjonalne opcje żądania. (Zobacz Opcje poniżej).
body ciąg znaków Opcjonalny treść żądania.

Opcje

Option Typ Opis
headers ciąg znaków Dodatkowe nagłówki żądania.
method obiekt, Metoda żądania. Domyślna wartość to GET.
timeout liczba Czas oczekiwania (w milisekundach) do przerwania żądania. Domyślna wartość to 15000.
authorization obiekt, Opcjonalny obiekt autoryzacji z wywołania funkcji getGoogleAuth służący do uwzględniania nagłówków autoryzacji podczas wysyłania żądań do googleapis.com.

Powiązane uprawnienia

send_http


sendPixelFromBrowser

Wysyła do przeglądarki polecenie wczytania podanego adresu URL jako tagu <img>. Ten protokół polecenia jest obsługiwany w tagu Google na potrzeby GA4 i w tagach internetowych Google Analytics: zdarzenie GA. Musisz skonfigurować adres URL kontenera serwera. Więcej informacji znajdziesz w instrukcjach.

Ten interfejs API zwraca wartość false, jeśli przychodzące żądanie nie obsługuje protokołu polecenia lub odpowiedź została już opróżniona. W przeciwnym razie ten interfejs API zwróci wartość true.

Przykład:

const sendPixelFromBrowser = require('sendPixelFromBrowser');

sendPixelFromBrowser('https://example.com/?id=123');

Składnia

sendPixelFromBrowser(url)

Parametry

Parametr Typ Opis
url ciąg znaków Adres URL, który ma zostać wysłany do przeglądarki.

Powiązane uprawnienia

send_pixel_from_browser


setCookie

Ustawia lub usuwa plik cookie z określonymi opcjami.

Aby usunąć plik cookie, trzeba go ustawić z tą samą ścieżką i domeną, za pomocą których został utworzony, oraz przypisać mu wartość wygaśnięcia, która przypada w przeszłości, np. "Thu, 01 Jan 1970 00:00:00 GMT".

Pamiętaj, że aby odpowiedź została odesłana do klienta, musi być wywołane polecenie returnResponse.

Przykład

const setCookie = require('setCookie');

// Sets an httpOnly cookie with a max-age of 3600.
setCookie('cookieName', 'cookieValue', {'max-age': 3600, httpOnly: true});

Składnia

setCookie(name, value[, options[, noEncode]]);

Parametry

Parametr Typ Opis
name ciąg znaków Nazwa pliku cookie. Wielkość liter w nazwie nie jest rozróżniana.
value ciąg znaków Wartość pliku cookie.
options obiekt, Opcjonalne atrybuty plików cookie:domain, expires, fallbackDomain,httpOnly, max- age, path, secure isameSite. (Zobacz Opcje poniżej).
noEncode boolean Jeśli ma wartość true (prawda), wartość z pliku cookie nie będzie kodowana. Wartość domyślna to false.

  • domena: host, do którego zostanie wysłany plik cookie. Jeśli ustawisz wartość specjalną „auto”, host zostanie automatycznie obliczony zgodnie z tą strategią:

    • eTLD+1 z nagłówka Forwarded (jeśli występuje).
    • eTLD+1 z nagłówka X-Forwarded-Host (jeśli występuje).
    • eTLD+1 z nagłówka Host.
  • expires: maksymalny czas życia pliku cookie. Musi to być ciąg daty w formacie UTC, np. „Sob, 26 października 1985, 08:21:00 czasu GMT”. Jeśli skonfigurowana jest zarówno wartość expires, jak i max-age, parametr max-age ma pierwszeństwo.

  • httpOnly: blokuje JavaScriptowi dostęp do pliku cookie, jeśli true.

  • max-age: liczba sekund do wygaśnięcia pliku cookie. Wartość 0 lub ujemna sprawia, że plik cookie traci ważność natychmiast. Jeśli ustawiono zarówno expires, jak i max-age, pierwszeństwo ma max-age.

  • path: ścieżka, która musi istnieć w żądanym adresie URL. W przeciwnym razie przeglądarka nie wyśle nagłówka pliku cookie.

  • secure: jeśli ma wartość true, plik cookie jest wysyłany do serwera tylko w przypadku żądania z punktu końcowego https:.

  • sameSite: wskazuje, że plik cookie nie może być wysyłany w odpowiedzi na żądania z innych domen. Musi to być wartość 'strict', 'lax' lub 'none'.

Powiązane uprawnienia

set_cookie


setPixelResponse

Ustawia treść odpowiedzi na GIF 1 x 1, ustawia nagłówek Content-Type na „image/gif”, ustawia nagłówki buforowania w taki sposób, że klienty użytkownika nie będą zapisywać odpowiedzi w pamięci podręcznej, i ustawia stan odpowiedzi na 200.

Pamiętaj, że aby odpowiedź została odesłana do klienta, musi być wywołane polecenie returnResponse.

Składnia

setPixelResponse();

Powiązane uprawnienia

Wymaga uprawnienia access_response. Musisz skonfigurować uprawnienie tak, aby zezwalało na dostęp co najmniej do:

  • headers – musi zezwalać na następujące klucze:
    • content-type
    • cache-control
    • expires
    • pragma
  • body
  • status

setResponseBody

Ustawia treść odpowiedzi dla argumentu.

Pamiętaj, że aby odpowiedź została odesłana do klienta, musi być wywołane polecenie returnResponse.

Składnia

setResponseBody(body[, encoding]);

Parametry

Parametr Typ Opis
body ciąg znaków Wartość do ustawienia jako treść odpowiedzi.
encoding ciąg znaków Kodowanie znaków treści odpowiedzi (domyślnie 'utf8'). Obsługiwane wartości to 'ascii', 'utf8', 'utf16le', 'ucs2', 'base64', 'latin1', 'binary' i 'hex'.

Powiązane uprawnienia

Wymaga uprawnienia access_response. Musisz skonfigurować uprawnienie tak, aby zezwalało na dostęp co najmniej do:

  • body

setResponseHeader

Ustawia nagłówek w odpowiedzi, która zostanie zwrócona. Jeśli nagłówek o tej nazwie (z uwzględnieniem wielkości liter) został wcześniej ustawiony przez ten interfejs API, drugie wywołanie zastąpi lub wyczyści wartość ustawioną przez poprzedni element wywołujący.

Pamiętaj, że aby odpowiedź została odesłana do klienta, musi być wywołane polecenie returnResponse.

Składnia

setResponseHeader(name, value);

Parametry

Parametr Typ Opis
name ciąg znaków Nazwa nagłówka. W nazwach nagłówków HTTP nie jest rozróżniana wielkość liter, więc nazwa nagłówka będzie pisana małymi literami.
value ciąg znaków undefined Wartość nagłówka. Jeśli wartość jest null lub nieokreślona, usuwa nazwany nagłówek z odpowiedzi, która zostanie zwrócona.

Powiązane uprawnienia

Wymaga uprawnienia access_response. Musisz skonfigurować uprawnienie tak, aby zezwalało na dostęp co najmniej do:

  • headers

setResponseStatus

Ustawia kod stanu HTTP odpowiedzi, która ma zostać zwrócona.

Pamiętaj, że aby odpowiedź została odesłana do klienta, musi być wywołane polecenie returnResponse.

Składnia

setResponseStatus(statusCode);

Parametry

Parametr Typ Opis
statusCode liczba Kod stanu HTTP, który ma zostać zwrócony.

Powiązane uprawnienia

Wymaga uprawnienia access_response. Musisz skonfigurować uprawnienie tak, aby zezwalało na dostęp co najmniej do:

  • status

sha256

Oblicza skrót SHA-256 danych wejściowych i wywołuje wywołanie zwrotne ze skrótem zakodowanym w formacie base64, chyba że obiekt options określa inne kodowanie wyjściowe.

Ten podpis i działanie interfejsu API są zgodne z interfejsem API sha256 w przypadku kontenerów internetowych, ale szablony niestandardowe w kontenerach serwera powinny korzystać z interfejsu API sha256Sync, aby uprościć kod.

Przykład

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'});

Składnia

sha256(input, onSuccess, options = undefined);

Parametry

Parametr Typ Opis
input ciąg znaków Ciąg do zahaszowania.
onSuccess funkcja Wywoływana z powstałym skrótem zakodowanym w formacie base64, chyba że obiekt options określa inne kodowanie wyjściowe.
options obiekt, Opcjonalny obiekt opcji określający kodowanie wyjściowe. Obiekt powinien zawierać klucz outputEncoding z wartością base64 lub hex.

Powiązane uprawnienia

Brak.


sha256Sync

Oblicza i zwraca skrót SHA-256 danych wejściowych zakodowany w formacie base64, chyba że obiekt options określa inne kodowanie wyjściowe.

Przykład

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));

Składnia

sha256Sync(input, options = undefined);

Parametry

Parametr Typ Opis
input ciąg znaków Ciąg do zahaszowania.
options obiekt, Opcjonalny obiekt opcji określający kodowanie wyjściowe. Obiekt powinien zawierać klucz outputEncoding z wartością base64 lub hex.

Powiązane uprawnienia

Brak.


templateDataStorage

Zwraca obiekt z metodami dostępu do magazynu danych szablonu. Magazyn danych szablonów umożliwia udostępnianie danych przez uruchomienia 1 szablonu. Dane przechowywane w pamięci szablonu znajdują się na serwerze, na którym uruchomiono kontener. W większości przypadków kontener działa na kilku serwerach, więc przechowywanie danych w pamięci szablonów nie gwarantuje, że w przypadku każdego kolejnego żądania dostęp do danych będzie możliwy.

Termin „dane” w nazwie „templateDataStorage” odnosi się do tego, że za pomocą tego interfejsu API można przechowywać tylko zwykłe typy danych niezwiązanych z funkcją. Wszystkie funkcje i odwołania do funkcji przekazane do interfejsu API będą przechowywane jako null.

Składnia

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();

Przykład

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);
});

Powiązane uprawnienia

access_template_storage


testRegex

Testuje ciąg znaków w porównaniu z wyrażeniem regularnym utworzonym za pomocą interfejsu API createRegex. Zwraca wartość true, jeśli wyrażenie regularne jest zgodne. W przeciwnym razie zwraca wartość false.

Wyrażenie regularne utworzone z flagą globalną jest stanowe. Szczegółowe informacje znajdziesz w dokumentacji RegExp.

Przykład

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');

Składnia

testRegex(regex, string);

Parametry

Parametr Typ Opis
regex Obiekt. Wyrażenie regularne, które ma zostać użyte w testach, zwrócone z interfejsu API createRegex.
string ciąg znaków Ciąg testowy do przetestowania.

Powiązane uprawnienia

Brak.


toBase64

Koduje ciąg znaków jako base64 lub base64url. Domyślnie jest to kodowanie base64.

Składnia

toBase64(input, options);

Parametry

Parametr Typ Opis
input ciąg znaków Ciąg znaków do zakodowania.
options obiekt, Opcjonalna konfiguracja interfejsu API. (Zobacz Opcje poniżej).

Opcje

Option Typ Opis Wersja minimalna
urlEncoding boolean Jeśli wartość to prawda, wynik będzie kodowany w formacie base64url. 1.0.0

Przykład

const toBase64 = require('toBase64');

const base64Hello = toBase64('hello');
const base64UrlHello = toBase64('hello', {urlEncoding: true});

Powiązane uprawnienia

Brak.


BigQuery

Zwraca obiekt, który udostępnia funkcje BigQuery.

Funkcja BigQuery.insert umożliwia zapisywanie danych w tabeli BigQuery. Zwraca obietnicę, która znika po pomyślnym wstawieniu lub odrzuca po wystąpieniu błędu.

Jeśli wstawienie się uda, obietnica zniknie bez argumentów.

Jeśli wstawienie się nie uda, obietnica jest odrzucana z listą obiektów zawierających przyczynę błędu i prawdopodobnie obiektem wiersza, jeśli wystąpi błąd. Może się zdarzyć, że część żądania zostanie zrealizowana, a nie pozostałe. W tym przypadku obietnica jest odrzucana z listą błędów w każdym wierszu z obiektem wiersza, co ułatwia rozróżnienie wierszy, które zostały wstawione (zobacz przykłady błędów poniżej). Więcej informacji znajdziesz w dokumentacji BigQuery dotyczącej komunikatów o błędach.

Składnia

BigQuery.insert(connectionInfo, rows[, options]);

Parametr Typ Opis
connectionInfo obiekt, Definiuje informacje wymagane do nawiązania połączenia z tabelą BigQuery. Zawiera 1 parametr opcjonalny i 2 parametry wymagane:
  • projectIdopcjonalny identyfikator projektu Google Cloud Platform. W przypadku pominięcia tej informacji parametr projectId jest pobierany ze zmiennej środowiskowej GOOGLE_CLOUD_PROJECT, o ile ustawienie uprawnień access_bigquery dla identyfikatora projektu jest ustawione na * lub GOOGLE_CLOUD_PROJECT. Jeśli kontener serwera działa w Google Cloud, element GOOGLE_CLOUD_PROJECT będzie już ustawiony na identyfikator projektu Google Cloud.
  • datasetId – identyfikator zbioru danych BigQuery.
  • tableId – identyfikator tabeli BigQuery.
rows Tablica Wiersze, które mają zostać wstawione do tabeli.
options obiekt, Opcjonalne opcje żądania. Obsługiwane opcje to: ignoreUnknownValues i skipInvalidRows. Nieznane klawisze opcji są ignorowane. (Zobacz Opcje poniżej).

Parametr Typ Opis
ignoreUnknownValues boolean Jeśli ustawiona jest wartość true, akceptuj wiersze zawierające wartości, które nie są zgodne ze schematem. Nieznane wartości są ignorowane. Wartość domyślna to false.
skipInvalidRows boolean Jeśli ustawiono wartość true, wstaw wszystkie prawidłowe wiersze żądania, nawet jeśli występują nieprawidłowe wiersze. Domyślna wartość to false.

Przykłady błędów

Błąd „Nie znaleziono modułu” oznacza, że kontener serwera prawdopodobnie używa starszej wersji naszego obrazu, która nie zawiera jeszcze modułu BigQuery. Wdróż ponownie kontener serwera z tymi samymi ustawieniami za pomocą naszego skryptu wdrożenia. Moduł zostanie automatycznie uwzględniony po zakończeniu operacji.

Błąd braku wstawiania zwykle ma 1 obiekt błędu z kluczem reason:

[{reason: 'invalid'}]

Błąd wstawiania może zawierać wiele obiektów błędu z tablicą errors i obiektem row. Oto przykład odpowiedzi o błędzie po wstawieniu 2 wierszy, w których tylko jeden z nich zawiera błąd:

[
  {
    "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
    }
  }
]

Przykład

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);

Powiązane uprawnienia

access_bigquery


Firestore

Zwraca obiekt, który udostępnia funkcje Firestore.

Ten interfejs API obsługuje tylko Firestore w trybie natywnym, a nie Firestore w trybie Datastore.

Firestore.read

Funkcja Firestore.read odczytuje dane z dokumentu Firestore i zwraca obietnicę, która prowadzi do obiektu zawierającego 2 klucze: id i data. Jeśli dokument nie istnieje, obietnica jest odrzucana z obiektem zawierającym klucz reason równy not_found.

Składnia

Firestore.read(path[, options]);

Parametr Typ Opis
path ciąg znaków Ścieżka do dokumentu lub kolekcji. Nie może zaczynać się ani kończyć znakiem „/”.
options obiekt, Opcjonalne opcje żądania. Obsługiwane opcje to: projectId, disableCache i transaction. Nieznane klucze opcji są ignorowane. (Zobacz Opcje poniżej).

Parametr Typ Opis
projectId ciąg znaków Opcjonalnie. Identyfikator projektu Google Cloud Platform. W przypadku pominięcia tej informacji parametr projectId jest pobierany ze zmiennej środowiskowej GOOGLE_CLOUD_PROJECT, o ile ustawienie uprawnień access_firestore dla identyfikatora projektu jest ustawione na * lub GOOGLE_CLOUD_PROJECT. Jeśli kontener serwera działa w Google Cloud, element GOOGLE_CLOUD_PROJECT będzie już ustawiony na identyfikator projektu Google Cloud.
disableCache boolean Opcjonalnie. Określa, czy pamięć podręczna ma zostać wyłączona. Pamięć podręczna jest domyślnie włączona, co powoduje zapisywanie wyników w pamięci podręcznej na czas realizacji żądania.
transaction ciąg znaków Opcjonalnie. Wartość pobrana z Firestore.runTransaction(). Oznacza operację, która ma zostać użyta w transakcji.

Przykład

const Firestore = require('Firestore');

return Firestore.read('collection/document', {
  projectId: 'gcp-cloud-project-id',
}).then((result) => result.data.key, () => undefined);

Firestore.write

Funkcja Firestore.write zapisuje dane w dokumencie lub kolekcji Firestore. Jeśli ścieżka prowadzi do kolekcji, zostanie utworzony dokument z losowo wygenerowanym identyfikatorem. Jeśli ścieżka do dokumentu nie istnieje, zostanie utworzona. Ten interfejs API zwraca obietnicę, która odnosi się do identyfikatora dodanego lub zmodyfikowanego dokumentu. Jeśli używana jest opcja transakcji, interfejs API nadal zwraca obietnicę, ale nie będzie zawierać identyfikatora, ponieważ zapisy są grupowane.

Składnia

Firestore.write(path, input[, options]);

Parametry

Parametr Typ Opis
path ciąg znaków Ścieżka do dokumentu lub kolekcji. Nie może zaczynać się ani kończyć znakiem „/”.
input obiekt, Wartość do zapisania w dokumencie. Jeśli opcja scalania jest ustawiona, interfejs API scala klucze z danych wejściowych z dokumentem.
options obiekt, Opcjonalne opcje żądania. Obsługiwane opcje to: projectId, merge i transaction. Nieznane klawisze opcji są ignorowane. (Zobacz Opcje poniżej).

Parametr Typ Opis
projectId ciąg znaków Opcjonalnie. Identyfikator projektu Google Cloud Platform. W przypadku pominięcia tej informacji parametr projectId jest pobierany ze zmiennej środowiskowej GOOGLE_CLOUD_PROJECT, o ile ustawienie uprawnień access_firestore dla identyfikatora projektu jest ustawione na * lub GOOGLE_CLOUD_PROJECT. Jeśli kontener serwera działa w Google Cloud, element GOOGLE_CLOUD_PROJECT będzie już ustawiony na identyfikator projektu Google Cloud.
merge boolean Opcjonalnie. Jeśli ustawiona jest wartość true, scal klucze z danych wejściowych z dokumentem. W przeciwnym razie metoda zastąpi cały dokument. Wartość domyślna to false.
transaction ciąg znaków Opcjonalnie. Wartość pobrana z Firestore.runTransaction(). Oznacza operację, która ma zostać użyta w transakcji.

Przykład

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

Funkcja Firestore.query wysyła zapytanie do danej kolekcji i zwraca obietnicę, która zwraca uwagę na tablicę dokumentów Firestore pasujących do warunków zapytania. Obiekt dokumentu Firestore jest taki sam jak wymieniony powyżej w sekcji Firestore.read. Jeśli nie ma żadnych dokumentów spełniających warunki zapytania, zwrócona obietnica przekształca się w pustą tablicę.

Składnia

Firestore.query(collection, queryConditions[, options]);

Parametr Typ Opis
collection ciąg znaków Ścieżka do kolekcji. Nie może zaczynać się ani kończyć znakiem „/”.
queryConditions Tablica Tablica warunków zapytania. Każde zapytanie ma postać tablicy z 3 wartościami: klucz, operator i expectedValue. E.g.: [[‘id’, ‘<’, ‘5’], [’state’, ‘==’, ‘CA’]].

Aby utworzyć wynik zapytania, warunki zostaną połączone operatorem ORAZ. Listę zgodnych operatorów zapytań znajdziesz w sekcji Operatory zapytań w Firestore.
options obiekt, Opcjonalne opcje żądania. Obsługiwane opcje to: projectId, disableCache, limit i transaction. Nieznane klucze opcji są ignorowane. (Zobacz Opcje poniżej).

Parametr Typ Opis
projectId ciąg znaków Opcjonalnie. Identyfikator projektu Google Cloud Platform. W przypadku pominięcia tej informacji parametr projectId jest pobierany ze zmiennej środowiskowej GOOGLE_CLOUD_PROJECT, o ile ustawienie uprawnień access_firestore dla identyfikatora projektu jest ustawione na * lub GOOGLE_CLOUD_PROJECT. Jeśli kontener serwera działa w Google Cloud, element GOOGLE_CLOUD_PROJECT będzie już ustawiony na identyfikator projektu Google Cloud.
disableCache boolean Opcjonalnie. Określa, czy pamięć podręczna ma zostać wyłączona. Pamięć podręczna jest domyślnie włączona, co powoduje zapisywanie wyników w pamięci podręcznej na czas realizacji żądania.
limit liczba Opcjonalnie. Zmienia maksymalną liczbę wyników zwracanych przez zapytanie. Domyślna wartość to 5.
transaction ciąg znaków Opcjonalnie. Wartość pobrana z Firestore.runTransaction(). Oznacza operację, która ma zostać użyta w transakcji.

Przykład

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

Funkcja Firestore.runTransaction umożliwia użytkownikowi atomowe odczyt i zapis z Firestore. Jeśli wystąpi równoczesny zapis lub inny konflikt transakcji, transakcja zostanie ponowiona maksymalnie 2 razy. Jeśli po 3 próbach wszystkie próby zakończą się niepowodzeniem, interfejs API zostanie odrzucony z powodu błędu. Ten interfejs API zwraca obietnicę, która dla każdej operacji zapisu prowadzi do tablicy identyfikatorów dokumentów, jeśli transakcja się powiedzie, i odrzuci ją z powodu błędu.

Składnia

Firestore.runTransaction(callback[, options]);

Parametry

Parametr Typ Opis
callback funkcja Wywołanie zwrotne wywołane z identyfikatorem transakcji w postaci ciągu znaków. Identyfikator transakcji można przekazywać do wywołań interfejsu API do odczytu/zapisu lub zapytań. Ta funkcja wywołania zwrotnego musi zwrócić obietnicę. Wywołanie zwrotne może być zrealizowane maksymalnie 3 razy, zanim zakończy się niepowodzeniem.
options obiekt, Opcjonalne opcje żądania. Jedyną obsługiwaną opcją jest projectId. Nieznane klawisze opcji są ignorowane. (Zobacz Opcje poniżej).

Parametr Typ Opis
projectId ciąg znaków Opcjonalnie. Identyfikator projektu Google Cloud Platform. W przypadku pominięcia tej informacji parametr projectId jest pobierany ze zmiennej środowiskowej GOOGLE_CLOUD_PROJECT, o ile ustawienie uprawnień access_firestore dla identyfikatora projektu jest ustawione na * lub GOOGLE_CLOUD_PROJECT. Jeśli kontener serwera działa w Google Cloud, element GOOGLE_CLOUD_PROJECT będzie już ustawiony na identyfikator projektu Google Cloud.

Przykład

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);

Przykład błędu

Błędy dostępne w każdej funkcji Firestore będą odrzucane z obiektem zawierającym klucz reason:

Firestore.read(...).then(onSuccess, (error) => {
  if (error.reason === 'unknown') {
    // Handle the unknown error here.
  }
});

Przyczyny błędów mogą obejmować kody błędów interfejsu API REST Firestore.

Powiązane uprawnienia

access_firestore


JSON

Zwraca obiekt, który udostępnia funkcje JSON.

Funkcja parse() analizuje ciąg znaków w formacie JSON, aby utworzyć wartość lub obiekt opisany przez ten ciąg znaków. Jeśli wartości nie można przeanalizować (np. ma nieprawidłowy format JSON), funkcja zwróci undefined. Jeśli wartość wejściowa nie jest ciągiem znaków, zostanie przekształcona w ciąg znaków.

Funkcja stringify() konwertuje dane wejściowe na ciąg znaków JSON. Jeśli nie można przeanalizować wartości (np. obiekt podlega cyklu), metoda zwróci wartość undefined.

Przykład

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'});

Składnia

JSON.parse(stringInput);
JSON.stringify(value);

Powiązane uprawnienia

Brak.


Math

Obiekt udostępniający funkcje Math.

Składnia

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);

Parametry

Parametry funkcji matematycznych są konwertowane na liczby.

Powiązane uprawnienia

Brak.


Messages

Podane niżej interfejsy API współpracują ze sobą, umożliwiając przekazywanie komunikatów między różnymi częściami kontenera.


addMessageListener

Dodaje funkcję, która nasłuchuje wiadomości określonego typu. Gdy wiadomość tego typu jest wysyłana za pomocą interfejsu API sendMessage (zwykle za pomocą tagu), wywołanie zwrotne będzie wykonywane synchronicznie. Wywołanie zwrotne jest wykonywane z dwoma parametrami:

  1. messageType:string
  2. message:Object

Jeśli wywołanie zwrotne zostanie dodane w kliencie, będzie ono otrzymywać komunikaty dotyczące wszystkich zdarzeń utworzonych przez klienta. Jeśli wywołanie zwrotne ma odbierać komunikaty tylko z określonego zdarzenia, powiąż ten interfejs API ze zdarzeniem za pomocą polecenia bindToEvent w funkcji onStart interfejsu runContainer API. Zobacz przykład.

Składnia

const addMessageListener = require('addMessageListener');

addMessageListener('send_pixel', (messageType, message) => {
  // This will be run whenever something sends a 'send_pixel' message.
});

Parametry

Parametr Typ Opis
messageType ciąg znaków Typ wiadomości, która ma zostać nasłuchana. Jeśli wartość nie jest ciągiem, zostanie przekształcona w ciąg.
callback funkcja Wywołanie zwrotne, które ma być wykonywane, gdy zostanie wysłana wiadomość odpowiedniego typu. W przeciwnym razie interfejs API nic nie wykona.

Przykład

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.
      });
    }
  });
});

Powiązane uprawnienia

Wymaga uprawnienia use_message. Musisz skonfigurować uprawnienie tak, aby zezwalało na co najmniej:

  • Typ wiadomości z Usage o wartości listen lub listen_and_send.

hasMessageListener

Zwraca wartość „true”, jeśli dla danego typu wiadomości dodano odbiornik. W przeciwnym razie zwraca wartość „false”.

Składnia

const hasMessageListener = require('hasMessageListener');

hasMessageListener('send_pixel');

Powiązane uprawnienia

Brak.


sendMessage

Wysyła wiadomość określonego typu do zarejestrowanego detektora. Pozwala to wysyłać komunikaty z tagu z powrotem do klienta, który uruchomił kontener.

Składnia

const sendMessage = require('sendMessage');

sendMessage('send_pixel', {url: 'https://analytics.example.com/collect'});

Parametry

Parametr Typ Opis
messageType ciąg znaków Typ wiadomości do wysłania. Jeśli wartość nie jest ciągiem, zostanie przekształcona w ciąg.
message obiekt, Wiadomość do wysłania. Jeśli komunikat nie jest obiektem, interfejs API nic nie wykona.

Powiązane uprawnienia

Wymaga uprawnienia use_message. Musisz skonfigurować uprawnienie tak, aby zezwalało na co najmniej:

  • Typ wiadomości z Usage o wartości listen_and_send lub send.

Object

Zwraca obiekt, który udostępnia metody Object.

Metoda keys() określa działanie Object.keys() biblioteki standardowej. Zwraca tablicę nazw numerycznych właściwości danego obiektu w tej samej kolejności co pętla for...in.... Jeśli wartość wejściowa nie jest obiektem, zostanie przekształcona w obiekt.

Metoda values() określa działanie Object.values() biblioteki standardowej. Zwraca tablicę wartości numerycznych właściwości danego obiektu w tej samej kolejności co pętla for...in.... Jeśli wartość wejściowa nie jest obiektem, zostanie przekształcona w obiekt.

Metoda entries() określa działanie Object.entries() biblioteki standardowej. Zwraca tablicę par właściwości numerycznych [key, value] danego obiektu w tej samej kolejności, w jakiej byłaby pętla for...in.... Jeśli wartość wejściowa nie jest obiektem, zostanie przekształcona w obiekt.

Metoda freeze() określa działanie Object.freeze() biblioteki standardowej. Zablokowanego obiektu nie można już zmienić. Zablokowanie obiektu uniemożliwia dodawanie do niego nowych właściwości, usuwanie dotychczasowych oraz zmienianie ich wartości. freeze() zwraca ten sam obiekt, który został przekazany. Argument podstawowy lub pusty będzie traktowany tak, jakby był zablokowanym obiektem i zostanie zwrócony.

Metoda delete() określa działanie operatora usuwania z Biblioteki standardowej. Usuwa dany klucz z obiektu, chyba że obiekt jest zablokowany. Podobnie jak operator usuwania z Biblioteki standardowej zwraca true, jeśli pierwsza wartość wejściowa (objectInput) jest obiektem, który nie jest zablokowany, nawet jeśli druga wartość wejściowa (keyToDelete) określa klucz, który nie istnieje. W pozostałych przypadkach zwraca wartość false. Różni się jednak od operatora usuwania z biblioteki standardowej tym, że:

  • keyToDelete nie może być ciągiem rozdzielanym kropkami, który określa zagnieżdżony klucz.
  • Za pomocą polecenia delete() nie możesz usuwać elementów z tablicy.
  • Za pomocą delete() nie możesz usunąć żadnych usług z zakresu globalnego.

Składnia

Object.keys(objectInput)
Object.values(objectInput)
Object.entries(objectInput)
Object.freeze(objectInput)
Object.delete(objectInput, keyToDelete)

Parametry

Object.keys

Parametr Typ Opis
objectInput dowolny Obiekt, którego klucze do wyliczenia. Jeśli dane wejściowe nie są obiektem, zostaną przekształcone w obiekt.

Object.values

Parametr Typ Opis
objectInput dowolny Obiekt, którego wartości do wyliczenia. Jeśli dane wejściowe nie są obiektem, zostaną przekształcone w obiekt.

Object.entries

Parametr Typ Opis
objectInput dowolny Obiekt, którego pary klucz/wartość mają zostać wyliczone. Jeśli dane wejściowe nie są obiektem, zostaną przekształcone w obiekt.

Object.freeze

Parametr Typ Opis
objectInput dowolny Obiekt do zablokowania. Jeśli dane wejściowe nie są obiektem, będą traktowane jako zablokowane.

Object.delete

Parametr Typ Opis
objectInput dowolny Obiekt, którego klucz ma zostać usunięty.
keyToDelete ciąg znaków Klucz najwyższego poziomu do usunięcia.

Przykład

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

Zwraca obiekt, który udostępnia metody interakcji z obietnicami.

Obietnice pod względem funkcjonalnym są odpowiednikiem obietnic JavaScript. Każda instancja ma 3 metody zwracające obietnicę, która umożliwia dalsze działanie po jej sfinalizowaniu:

  • .then() – obsługuje zarówno rozwiązane, jak i odrzucone zgłoszenia. Przyjmuje się 2 wywołania zwrotne jako parametry: jedno dla przypadku powodzenia i drugie dla przypadku niepowodzenia.
  • .catch() – obsługuje tylko odrzucone zgłoszenia. Przyjmuje jedno wywołanie zwrotne jako parametr.
  • .finally() – umożliwia uruchomienie kodu niezależnie od tego, czy obietnica została zrealizowana czy odrzucona. Przyjmuje jedno wywołanie zwrotne jako parametr, który jest wywoływany bez argumentu.

Zmienna, która zwraca obietnicę, jest równa obliczonej wartości obietnicy lub false, jeśli obietnica ją odrzuci.

Przykład

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

Zwraca obietnicę, która:

  • rozwiązuje się, gdy wszystkie dane wejściowe zostaną rozwiązane lub
  • odrzuca, gdy którekolwiek z danych wejściowych odrzuca

Składnia

Promise.all(inputs);

Parametry

Parametr Typ Opis
inputs Tablica Tablica wartości lub obietnic. Jeśli dane wejściowe nie są obietnicą, są one przekazywane tak, jakby były to znaleziona wartość obietnicy. Jeśli dane wejściowe nie są tablicą, zgłasza błąd.

Przykład

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: ''}]
  });

Powiązane uprawnienia

Brak.

Promise.create

Tworzy obietnicę, która jest funkcjonalnie odpowiednikiem obietnicy JavaScript.

Składnia

Promise.create(resolver);

Parametry

Parametr Typ Opis
resolver funkcja Funkcja, która jest wywoływana z dwiema funkcjami: twierdzenia i odrzucania. Zwrócona obietnica zostanie uznana lub odrzucona po wywołaniu odpowiedniego parametru. Zgłasza błąd, jeśli resolver nie jest funkcją.

Przykład

const Promise = require('Promise');

return Promise.create((resolve, reject) => {
  // Do asynchronous work that eventually calls resolve() or reject()
});

Powiązane uprawnienia

Brak.

Testuj interfejsy API

Te interfejsy API współpracują z testami JavaScript w trybie piaskownicy, aby tworzyć testy szablonów niestandardowych w Menedżerze tagów Google. Te testowe interfejsy API nie wymagają instrukcji require(). [Więcej informacji o testowaniu szablonów niestandardowych]


assertApi

Zwraca obiekt dopasowywania, którego można używać do płynnego zgłaszania asercji dotyczących danego interfejsu API.

Składnia

assertApi(apiName)

Parametry

Parametr Typ Opis
apiName ciąg znaków Nazwa interfejsu API do sprawdzenia; ten sam ciąg znaków, który został przekazany do require().

Dopasowania

  • Subject.wasCalled()
  • Subject.wasNotCalled()
  • Subject.wasCalledWith(...expected)
  • Subject.wasNotCalledWith(...expected)

Przykłady

assertApi('sendPixel').wasCalled();
assertApi('getUrl').wasNotCalled();
assertApi('makeNumber').wasCalledWith('8');
assertApi('setInWindow').wasNotCalledWith('myVar', 'theWrongValue');

assertThat

Interfejs assertThat API jest wzorowany na bibliotece [Truth] Google. Zwraca obiekt, za pomocą którego można płynnie formułować stwierdzenia dotyczące wartości podmiotu. Niepowodzenie asercji spowoduje natychmiastowe zatrzymanie testu i oznaczenie go jako nieudanego. Jednak błąd jednego z testów nie będzie miał wpływu na pozostałe przypadki.

Składnia

assertThat(actual, opt_message)

Parametry

Parametr Typ Opis
actual dowolny Wartość do użycia podczas kontroli płynności.
opt_message ciąg znaków Opcjonalna wiadomość do wydrukowania w przypadku niepowodzenia potwierdzenia.

Dopasowania

Dopasowanie Opis
isUndefined() Informuje, że tematem jest undefined.
isDefined() Potwierdza, że podmiotem nie jest undefined.
isNull() Informuje, że tematem jest null.
isNotNull() Potwierdza, że podmiotem nie jest null.
isFalse() Informuje, że tematem jest false.
isTrue() Informuje, że tematem jest true.
isFalsy() Twierdzi, że temat jest fałszywy. Wartości falsy to undefined, null, false, NaN, 0 i „” (pusty ciąg znaków).
isTruthy() Twierdzi, że temat jest prawdziwy. Wartości falsy to undefined, null, false, NaN, 0 i „” (pusty ciąg znaków).
isNaN() Potwierdza, że podmiot jest wartością NaN.
isNotNaN() Wskazuje, że podmiot jest wartością inną niż NaN.
isInfinity() Informuje, że temat jest pozytywny lub negatywny.
isNotInfinity() Wskazuje, że podmiot jest wartością inną niż dodatnia lub ujemna nieskończoność.
isEqualTo(expected) Potwierdza, że podmiot jest równy podanej wartości. To jest porównanie wartości, a nie referencji. Zawartość obiektów i tablic jest porównywana rekurencyjnie.
isNotEqualTo(expected) Informuje, że podmiot nie jest równy podanej wartości. To jest porównanie wartości, a nie odniesienia. Zawartość obiektów i tablic jest porównywana rekurencyjnie.
isAnyOf(...expected) Informuje, że podmiot jest równy jednej z podanych wartości. To jest porównanie wartości, a nie odniesienia. Zawartość obiektów i tablic jest porównywana rekurencyjnie.
isNoneOf(...expected) Informuje, że podmiot nie jest równy żadnej z podanych wartości. To jest porównanie wartości, a nie referencji. Zawartość obiektów i tablic jest porównywana rekurencyjnie.
isStrictlyEqualTo(expected) Informuje, że podmiot jest dokładnie równy (===) podanej wartości.
isNotStrictlyEqualTo(expected) Informuje, że podmiot nie jest dokładnie równy (!==) podanej wartości.
isGreaterThan(expected) Informuje, że obiekt jest większy niż (>) podana w porównaniu uporządkowanym.
isGreaterThanOrEqualTo(expected) Informuje, że obiekt jest większy lub równy (>=) podanej wartości w porównaniu uporządkowanym.
isLessThan(expected) Informuje, że obiekt jest mniejszy niż podana w porównaniu uporządkowanym (<) wartość.
isLessThanOrEqualTo(expected) Informuje, że obiekt jest mniejszy lub równy (<=) podanej wartości w porównaniu uporządkowanym.
contains(...expected) Informuje, że podmiotem jest tablica lub ciąg znaków, który zawiera wszystkie podane wartości w dowolnej kolejności. To jest porównanie wartości, a nie odniesienia. Zawartość obiektów i tablic jest porównywana rekurencyjnie.
doesNotContain(...expected) Informuje, że podmiotem jest tablica lub ciąg znaków, który nie zawiera żadnej z podanych wartości. To jest porównanie wartości, a nie referencji. Zawartość obiektów i tablic jest porównywana rekurencyjnie.
containsExactly(...expected) Informuje, że obiekt jest tablicą, która zawiera wszystkie podane wartości w dowolnej kolejności i nie ma żadnych innych wartości. To jest porównanie wartości, a nie odniesienia. Zawartość obiektów i tablic jest porównywana rekurencyjnie.
doesNotContainExactly(...expected) Informuje, że podmiot jest tablicą, która zawiera inny zbiór wartości niż podane wartości w dowolnej kolejności. To jest porównanie wartości, a nie odniesienia. Zawartość obiektów i tablic jest porównywana rekurencyjnie.
hasLength(expected) Informuje, że podmiot jest tablicą lub ciągiem znaków o podanej długości. asercja zawsze kończy się niepowodzeniem, jeśli wartość nie jest tablicą ani ciągiem znaków.
isEmpty() Informuje, że obiektem jest tablica lub ciąg znaków, który jest pusty (długość = 0). asercja zawsze kończy się niepowodzeniem, jeśli wartość nie jest tablicą ani ciągiem znaków.
isNotEmpty() Informuje, że podmiotem jest tablica lub ciąg znaków, który nie jest pusty (długość > 0). asercja zawsze kończy się niepowodzeniem, jeśli wartość nie jest tablicą ani ciągiem znaków.
isArray() Informuje, że typem podmiotu jest tablica.
isBoolean() Wskazuje, że typ tematu jest wartością logiczną.
isFunction() Informuje, że typ podmiotu jest funkcją.
isNumber() Potwierdza, że typ tematu jest liczbą.
isObject() Potwierdza, że typ podmiotu jest obiektem.
isString() Potwierdza, że typ tematu jest ciągiem znaków.

Przykłady

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

Natychmiast nie zakończy się bieżący test i drukuje określoną wiadomość, jeśli została dostarczona.

Składnia

fail(opt_message);

Parametry

Parametr Typ Opis
opt_message ciąg znaków Opcjonalny tekst komunikatu o błędzie.

Przykład

fail('This test has failed.');

mock

Interfejs mock API pozwala zastąpić działanie interfejsów API w trybie piaskownicy. Przykładowy interfejs API można bezpiecznie używać w kodzie szablonu, ale nie działa, gdy znajduje się w trybie testowym. Makiety są resetowane przed każdym testem.

Składnia

mock(apiName, returnValue);

Parametry

Parametr Typ Opis
apiName ciąg znaków Nazwa interfejsu API do pozorowania; ten sam ciąg znaków, który został przekazany do require()
returnValue dowolny Wartość do zwrócenia dla interfejsu API lub funkcji wywołanej w miejscu interfejsu API. Jeśli returnValue jest funkcją, jest ona wywoływana zamiast interfejsu Sandboxed API. Jeśli returnValue jest czymś innym niż funkcja, wartość ta jest zwracana zamiast interfejsu Sandboxed API.

Przykłady

mock('encodeUri', "https://endpoint.example.com/?account=12345");
mock('sendPixel', function(url, onSuccess, onFailure) {
    onSuccess();
});

runCode

Uruchamia kod szablonu, czyli zawartość karty Kod, w bieżącym środowisku testowym z danym obiektem danych wejściowych.

Składnia

runCode(data)

Parametry

Parametr Typ Opis
data obiekt, Obiekt danych do użycia w teście.

Zwracana wartość

Zwraca wartość zmiennej dla szablonów zmiennych. Zwraca wartość undefined w przypadku pozostałych typów szablonów.

Przykład

runCode({field1: 123, field2: 'value'});