W tym dokumencie opisujemy interfejsy API do tagowania po stronie serwera.
addEventCallback
Rejestruje funkcję wywołania zwrotnego, która zostanie wywołana po zakończeniu zdarzenia. Wywołanie zwrotne jest wywoływane po wykonaniu wszystkich tagów dla zdarzenia. Wywołanie zwrotne przekazuje 2 wartości: identyfikator kontenera, który wywołuje funkcję, oraz obiekt zawierający informacje o zdarzeniu.
Gdy ten interfejs API jest używany w tagu, jest 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 runContainer
API. Więcej szczegółów 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, który został uruchomiony podczas zdarzenia, będzie miał wpis w tej tablicy. Obiekt danych tagu zawiera identyfikator tagu (id ), jego stan wykonania (status ) i czas wykonywania (executionTime ). Dane tagu będą też zawierać dodatkowe metadane tagu skonfigurowane na jego poziomie.
|
Na koncie klienta:
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
callLater
Planuje 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, aby zgłosić prawa do żądania. Po odebraniu żądania kontener nie uruchamia dodatkowych klientów.
Ten interfejs API zgłasza wyjątek, jeśli jest wywoływany w tagu lub zmiennej. Ten interfejs API zgłasza wyjątek, jeśli jest wywoływany po zwróceniu klienta (np. w wywołaniu asynchronicznym, takim jak callLater
lub funkcja onComplete
runContainer
).
Klient powinien zgłosić żądanie za pomocą tego interfejsu API przed wywołaniem interfejsu API runContainer
.
Przykład
const claimRequest = require('claimRequest');
claimRequest();
Składnia
claimRequest();
Powiązane uprawnienia
Brak.
computeEffectiveTldPlusOne
Zwraca obowiązującą domenę najwyższego poziomu + 1 (eTLD + 1) danej domeny lub adresu URL. Liczbę eTLD+1 oblicza się, oceniając domenę pod kątem zgodności z regułami listy domen publicznych. Jest to zwykle domena najwyższego poziomu, w której można ustawić plik cookie.
Jeśli argument ma wartość null lub jest niezdefiniowany, to wartość argumentu jest zwracana w niezmienionej postaci. 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, na podstawie którego ma zostać obliczona domena eTLD+1. |
Powiązane uprawnienia
Brak.
createRegex
Tworzy nowe wystąpienie wyrażenia regularnego i zwraca je opakowane w obiekt. Nie możesz uzyskać bezpośredniego dostępu do wyrażenia regularnego. Możesz go jednak przekazać do testRegex
API, String.replace()
, String.match()
i String.search()
.
Zwraca wartość null
, jeśli wyrażenie regularne jest nieprawidłowe lub parametr Re2 jest niedostępny 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ą wartości „g” (globalnie) oraz „i” (wielkość liter nie jest rozróżniana). Pozostałe znaki są ignorowane dyskretnie. |
Powiązane uprawnienia
Brak.
Minimalna wersja obrazu
decodeUri
Dekoduje wszystkie zakodowane znaki w podanym identyfikatorze URI. Zwraca ciąg znaków reprezentujący zdekodowany identyfikator URI. Zwraca undefined
, jeśli podano nieprawidłowe dane wejściowe.
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, który został 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 undefined
w przypadku 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 znaków 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 | Pełny 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 znaków 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 | Składnik 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 uprawnień read_request
. Uprawnienie musi być skonfigurowane w taki sposób, aby zezwalało na dostęp co najmniej:
body
query parameters
extractEventsFromMpv2
Konwertuje przychodzące żądanie Measurement Protocol 2 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 uprawnień read_request
. Uprawnienie musi być skonfigurowane w taki sposób, aby zezwalało na dostęp co najmniej:
body
query parameters
fromBase64
Dekoduje ciąg zakodowany w formacie base64. Zwraca undefined
, jeśli dane wejściowe są nieprawidłowe.
Składnia
fromBase64(base64EncodedString);
Parametry
Parametr | Typ | Opis |
---|---|---|
base64EncodedString |
ciąg znaków | Ciąg znaków 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ę (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 potencjalna wartość zwróconej liczby całkowitej (włącznie). |
Powiązane uprawnienia
Brak.
getAllEventData
Zwraca kopię danych zdarzenia.
Składnia
getAllEventData();
Powiązane uprawnienia
getClientName
Zwraca ciąg znaków zawierający nazwę bieżącego klienta.
Składnia
getClientName();
Powiązane uprawnienia
getContainerVersion
Zwraca obiekt zawierający dane o bieżącym kontenerze. Zwrócony 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
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 ustawiona jest wartość true , wartości plików cookie nie będą dekodowane przed zwróceniem. Domyślna wartość to false .
|
Powiązane uprawnienia
getEventData
Zwraca kopię wartości w danych zdarzenia w przypadku podanej ścieżki. Zwraca undefined
, jeśli nie ma danych zdarzenia lub jeśli na danej ścieżce 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, zostanie przekształcony w ciąg znaków.
|
Składnia
getEventData(keyPath);
Powiązane uprawnienia
getGoogleAuth
Zwraca obiekt autoryzacji, który użyty z sendHttpGet
lub sendHttpRequest
będzie zawierał nagłówek autoryzacji dla interfejsów Google Cloud APIs. Ten interfejs API korzysta z domyślnych danych logowania aplikacji do automatycznego znajdowania danych logowania w środowisku 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, do których można żądać dostępu. |
Powiązane uprawnienia
Wymaga uprawnień use_google_credentials
. Uprawnienie musi być skonfigurowane z co najmniej 1 dozwolonym zakresem.
getGoogleScript
Pobiera zasób ze wstępnie określonego zestawu skryptów Google i zwraca obietnicę ze skryptem oraz powiązanymi metadanymi buforowania.
Obietnica zostanie przetworzona do obiektu zawierającego 2 klucze: script
i metadata
. Jeśli żądanie nie zostanie zrealizowane, obietnica zostanie odrzucona z użyciem klucza reason
.
Obiekt metadata
będzie zawierać poniższe metadane z pamięci podręcznej oparte na nagłówkach odpowiedzi zasobów. Każde pole będzie obecne tylko wtedy, gdy odpowiedź na żądanie zasobu 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 witryny https://www.google-analytics.com/analytics.js .Opcja 'GTAG' pobiera skrypt globalnego tagu witryny (gtag.js) z usługi https://www.googletagmanager.com/gtag/js .Opcja 'GTM' pobiera skrypt Menedżera tagów Google z adresu https://www.googletagmanager.com/gtm.js .
|
options |
obiekt | Opcjonalne opcje żądania. Obsługiwane opcje znajdziesz poniżej. |
Opcje
Opcja | 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 ma wartość prawda, wysyła żądanie i zwraca wersję skryptu pomiarowego do debugowania. |
timeout |
liczba |
Limit czasu żądania w milisekundach. Wartości niedodatnie są ignorowane. Jeśli minie limit czasu żądania, wywołanie zwrotne zostanie wywołane z wartością undefined w przypadku wartości skryptu i {} dla obiektu metadanych.
|
Nierozpoznane klucze opcji są ignorowane.
Powiązane uprawnienia
Wymaga uprawnień send_http
. Uprawnienie musi być skonfigurowane w taki sposób,
aby zezwalało na dostęp do co najmniej:
- Zezwól na używanie domen Google
getRemoteAddress
Zwraca w ciągu znaków reprezentację 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 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 jest dokładny.
Składnia
getRemoteAddress();
Powiązane uprawnienia
Wymaga uprawnień read_request
. Uprawnienie musi być skonfigurowane w taki sposób, aby zezwalało na dostęp co najmniej:
- Nagłówki
Forwarded
iX-Forwarded-For
- Zdalny adres IP
getRequestBody
Zwraca treść żądania w postaci ciągu znaków (jeśli występuje) lub undefined
w innym przypadku.
Składnia
getRequestBody();
Powiązane uprawnienia
getRequestHeader
Zwraca wartość nagłówka nazwanego żądania jako ciąg znaków (jeśli występuje) lub undefined
w innym przypadku. Jeśli nagłówek się powtarza, zwracane wartości są łączone za pomocą funkcji ', '
.
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 tej wartości nie jest rozróżniana. |
Powiązane uprawnienia
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'
, funkcja zwraca '/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
getRequestQueryParameter
Zwraca zdekodowaną wartość nazwanego parametru ciągu zapytania w postaci ciągu znaków lub undefined
, jeśli parametr nie jest podany. Jeśli parametr powtórzy się w ciągu zapytania, zostanie zwrócona pierwsza wartość, która pojawia się w ciągu zapytania.
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
getRequestQueryParameters
Zwraca parametry zapytania przychodzącego żądania HTTP jako obiekt, który mapuje nazwy parametrów zapytania na odpowiednie 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
getRequestQueryString
Zwraca zapytanie jako ciąg znaków, bez poprzedzającego znaku zapytania, lub pusty ciąg znaków, 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
getTimestamp
Wycofano. Preferuję parametr getTimestampMillis.
Zwraca liczbę, która reprezentuje (w milisekundach) bieżący czas od epoki uniksowej. Zwracana jest wartość Date.now()
.
Składnia
getTimestamp();
Powiązane uprawnienia
Brak.
getTimestampMillis
Zwraca liczbę, która reprezentuje (w milisekundach) bieżący czas od epoki uniksowej. Zwracana jest wartość Date.now()
.
Składnia
getTimestampMillis();
Powiązane uprawnienia
Brak.
getType
Zwraca ciąg tekstowy opisujący typ danej wartości.
Typ danych wejściowych | Zwrócona wartość |
---|---|
ciąg znaków | 'string' |
liczba | 'number' |
boolean | 'boolean' |
null | 'null' |
nieokreślone | '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 uwierzytelniania wiadomości opartego na haszach (HMAC) z SHA-256. Domyślne kodowanie to base64url
.
Aby użyć tego interfejsu API, ustaw zmienną środowiskową SGTM_CREDENTIALS
na serwerze na ścieżkę do pliku klucza JSON zakodowanego w UTF-8 w 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 obliczania wartości HMAC. |
keyId
|
ciąg znaków | Identyfikator klucza z pliku kluczy JSON odnoszący się do klucza, który ma zostać użyty. |
options
|
obiekt | Opcjonalna konfiguracja interfejsu API. (zobacz Opcje poniżej). |
Opcje
Opcja | Typ | Opis |
---|---|---|
outputEncoding
|
ciąg znaków | Określa format kodowania zwracanej wartości. Obsługiwane formaty to hex , base64 i base64url . Jeśli nie zostanie podany, domyślna wartość to base64url . |
Powiązane uprawnienia
Minimalna wersja obrazu
isRequestMpv1
Zwraca true
, jeśli żądanie przychodzące jest żądaniem z 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 true
, jeśli żądanie przychodzące jest żądaniem z platformy Measurement Protocol w wersji 2, lub 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 argumenty w konsoli.
Te logi są widoczne w narzędziu Eksplorator 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 każdy jest w razie potrzeby konwertowany na ciąg znaków i logowany w konsoli.
Powiązane uprawnienia
makeInteger
Konwertuje podaną wartość na liczbę (całkowitą).
Składnia
makeInteger(value);
Parametry
Parametr | Typ | Opis |
---|---|---|
value |
dowolny typ | Wartość do przekonwertowania. |
Powiązane uprawnienia
Brak.
makeNumber
Konwertuje podaną wartość na liczbę.
Składnia
makeNumber(value);
Parametry
Parametr | Typ | Opis |
---|---|---|
value |
dowolny typ | Wartość do przekonwertowania. |
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 przekonwertowania. |
Powiązane uprawnienia
Brak.
makeTableMap
Konwertuje prosty obiekt tabeli z 2 kolumnami na Map
. Służą one 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: przekonwertowana wartość Map
pary klucz-wartość została do niego dodana lub null
w przeciwnym razie.
Składnia
makeTableMap(tableObj, keyColumnName, valueColumnName);
Parametry
Parametr | Typ | Opis |
---|---|---|
tableObj |
Wyświetl listę |
Obiekt tabeli do przekonwertowania. To lista map, w których każdy element Map odpowiada wierszowi tabeli. Każda nazwa właściwości w obiekcie wiersza jest nazwą kolumny, a wartością właściwości jest wartość kolumny w wierszu.
|
keyColumnName |
ciąg znaków |
Nazwa kolumny, której wartości staną się kluczami w przekonwertowanej postaci Map .
|
valueColumnName |
ciąg znaków |
Nazwa kolumny, której wartości staną się wartościami w przekonwertowanej postaci Map .
|
Powiązane uprawnienia
Brak.
parseUrl
Zwraca obiekt, który zawiera wszystkie części składowe danego adresu URL, podobnie jak obiekt URL
.
Ten interfejs API zwróci 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ść jako pusty ciąg znaków, a w przypadku obiektu searchParams
– pusty obiekt.
Zwrócony 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 do analizy. |
Powiązane uprawnienia
Brak.
returnResponse
Usuwa odpowiedź ustawioną wcześniej przez inne szablony za pomocą interfejsów API, które modyfikują odpowiedź, w tym setCookie, setPixelResponse, setResponseBody, setResponseHeader i setResponseStatus. Domyślnie zawiera kod stanu HTTP 200, pustą treść i brak nagłówków.
Zalecamy używanie tego interfejsu API z szablonu klienta.
Składnia
returnResponse();
Przykład
Zobacz przykład: runContainer
.
Powiązane uprawnienia
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
. Użyj narzędzia bindToEvent
, aby uruchomić interfejs API w kontekście zdarzenia.
Więcej informacji znajdziesz w przykładzie funkcji addEventCallback.
Zalecamy 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 wywoływane po zakończeniu uruchamiania wszystkich tagów. |
onStart |
funkcja | Wywołanie zwrotne wywoływane natychmiast przed uruchomieniem tagów. |
Powiązane uprawnienia
sendEventToGoogleAnalytics
Wysyła do Google Analytics jedno zdarzenie z użyciem wspólnych danych zdarzenia i zwraca obietnicę, która odnosi się do obiektu z kluczem location
lub odrzuca obiekt z kluczem reason
. Miejsce docelowe, Universal Analytics lub Google Analytics 4, korzysta z identyfikatora pomiaru zawartego w danych zdarzenia.
Pole location
jest ustawione na nagłówek location
(jeśli istnieje).
Przykład
const logToConsole = require('logToConsole');
const sendEventToGoogleAnalytics = require('sendEventToGoogleAnalytics');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');
// Sends an event to Google Analytics and returns failure if the request did not
// succeed. Additionally, if the request resulted in a redirect request, the
// code nominates a redirect response to be returned.
sendEventToGoogleAnalytics(event).then((response) => {
if (response.location) {
setResponseHeader('location', response.location);
setResponseStatus(302);
} else {
setResponseStatus(200);
}
data.gtmOnSuccess();
}).catch((error) => {
logToConsole(error.reason);
setResponseStatus(500);
data.gtmOnFailure();
});
Składnia
sendEventToGoogleAnalytics(event);
Parametry
Parametr | Typ | Opis |
---|---|---|
event |
obiekt | Zdarzenie w formacie ujednoliconego schematu. |
Powiązane uprawnienia
Wymaga uprawnień send_http
. Uprawnienie musi być skonfigurowane w taki sposób,
aby zezwalało na dostęp do co najmniej:
- Zezwól na używanie domen Google
sendHttpGet
Wysyłam żądanie HTTP GET do określonego adresu URL i zwraca obietnicę, która kończy się w wyniku zakończenia żądania lub po przekroczeniu limitu czasu.
Otrzymany wynik to obiekt zawierający 3 klucze: statusCode
, headers
i body
. Jeśli żądanie nie zostało zrealizowane (np. z powodu nieprawidłowego adresu URL, braku trasy do hosta, niepowodzenia negocjacji SSL itp.), obietnica zostanie odrzucona z powodu błędu {reason:
'failed'}
. Jeśli ustawiona była opcja timeout
, a minął limit czasu żądania, obietnica zostanie odrzucona. W tym celu: {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 URL. |
options
|
obiekt | Opcjonalne opcje żądania. (zobacz Opcje poniżej). |
Opcje
Opcja | Typ | Opis |
---|---|---|
headers |
ciąg znaków | Dodatkowe nagłówki żądania. |
timeout
|
liczba | Czas oczekiwania (w milisekundach), po którym żądanie zostanie przerwane. Domyślna wartość to 15000 . |
authorization
|
obiekt | Opcjonalny obiekt autoryzacji z wywołania do getGoogleAuth , który ma zawierać nagłówki autoryzacji przy wysyłaniu żądań do googleapis.com . |
Powiązane uprawnienia
sendHttpRequest
Wysyłam żądanie HTTP na podany adres URL i zwraca obietnicę, która rozwiązuje problem z odpowiedzią po tym, jak żądanie zostanie ukończone lub przekroczony zostanie limit czasu.
Otrzymany wynik to obiekt zawierający 3 klucze: statusCode
, headers
i body
. Jeśli żądanie nie zostało zrealizowane (np. z powodu nieprawidłowego adresu URL, braku trasy do hosta, niepowodzenia negocjacji SSL itp.), obietnica zostanie odrzucona z powodu błędu {reason:
'failed'}
. Jeśli ustawiona była opcja timeout
, a minął limit czasu żądania, obietnica zostanie odrzucona. W tym celu: {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 URL. |
options
|
obiekt | Opcjonalne opcje żądania. (zobacz Opcje poniżej). |
body |
ciąg znaków | Opcjonalna treść żądania. |
Opcje
Opcja | 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), po którym żądanie zostanie przerwane. Domyślna wartość to 15000 . |
authorization
|
obiekt | Opcjonalny obiekt autoryzacji z wywołania do getGoogleAuth , który ma zawierać nagłówki autoryzacji przy wysyłaniu żądań do googleapis.com . |
Powiązane uprawnienia
sendPixelFromBrowser
Wysyła polecenie do przeglądarki, aby wczytać podany adres URL jako tag <img>
. Ten protokół polecenia jest obsługiwany w tagach internetowych tag Google w GA4 i 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 Command 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 wysyłany do przeglądarki. |
Powiązane uprawnienia
setCookie
Ustawia lub usuwa plik cookie z określonymi opcjami.
Aby usunąć plik cookie, trzeba ustawić plik cookie z tą samą ścieżką i domeną, za pomocą których został utworzony, oraz przypisać mu wartość wygaśnięcia w przeszłości, np. "Thu, 01 Jan 1970 00:00:00 GMT"
.
Pamiętaj, że aby odpowiedź została zwrócona klientowi, musi być wywoływana metoda 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 i sameSite. (Patrz Opcje poniżej). |
noEncode |
boolean |
Jeśli ustawiona jest wartość prawda, wartość pliku cookie nie będzie kodowana. Domyślna wartość to false .
|
domain (domena): host, do którego zostanie wysłany plik cookie. Jeśli ustawisz specjalną wartość „auto”, host jest automatycznie obliczany według tej strategii:
- eTLD+1 nagłówka
Forwarded
(jeśli występuje). - eTLD+1 nagłówka
X-Forwarded-Host
(jeśli występuje). - eTLD+1 nagłówka
Host
.
- eTLD+1 nagłówka
utraci ważność: maksymalny okres ważności pliku cookie. Musi to być ciąg znaków z datą w formacie UTC, np. „Sat, 26 Oct 1985 08:21:00 GMT”. Jeśli ustawione są zarówno
expires
, jak imax-age
, zasadamax-age
ma pierwszeństwo.httpOnly: uniemożliwia JavaScript dostęp do pliku cookie, jeśli
true
.max-age: liczba sekund do wygaśnięcia pliku cookie. Liczba ujemna lub zerowa oznacza natychmiastowe wygaśnięcie pliku cookie. Jeśli ustawione są zarówno
expires
, jak imax-age
, zasadamax-age
ma pierwszeństwo.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 wtedy, gdy żądanie pochodzi z punktu końcowegohttps:
.sameSite: potwierdza, że plik cookie nie może być wysyłany wraz z żądaniami z innych domen. Musi to być
'strict'
,'lax'
lub'none'
.
Powiązane uprawnienia
setPixelResponse
Ustawia treść odpowiedzi jako GIF 1 x 1, ustawia nagłówek Content-Type na „image/gif”, ustawia nagłówki buforowania w taki sposób, aby klienty użytkownika nie buforowały odpowiedzi, i ustawia jej stan na 200.
Pamiętaj, że aby odpowiedź została zwrócona klientowi, musi być wywoływana metoda returnResponse.
Składnia
setPixelResponse();
Powiązane uprawnienia
Wymaga uprawnień access_response
. Uprawnienie musi być skonfigurowane w taki sposób, aby zezwalało na dostęp co najmniej:
headers
– musi zezwalać na te kluczecontent-type
cache-control
expires
pragma
body
status
setResponseBody
Ustawia treść odpowiedzi na argument.
Pamiętaj, że aby odpowiedź została zwrócona klientowi, musi być wywoływana metoda 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 w treści odpowiedzi (wartość domyślna to 'utf8' ). Obsługiwane wartości to 'ascii' , 'utf8' , 'utf16le' , 'ucs2' , 'base64' , 'latin1' , 'binary' i 'hex' .
|
Powiązane uprawnienia
Wymaga uprawnień access_response
. Uprawnienie musi być skonfigurowane w taki sposób, aby zezwalało na dostęp co najmniej:
body
setResponseHeader
Ustawia nagłówek w odpowiedzi, która zostanie zwrócona. Jeśli ten interfejs API wcześniej ustawił nagłówek o tej nazwie (wielkość liter nie ma znaczenia), to drugie wywołanie zastąpi lub wyczyści wartość ustawioną przez poprzednie wywołanie.
Pamiętaj, że aby odpowiedź została zwrócona klientowi, musi być wywoływana metoda returnResponse.
Składnia
setResponseHeader(name, value);
Parametry
Parametr | Typ | Opis |
---|---|---|
name |
ciąg znaków | Nazwa nagłówka. W nazwach nagłówków HTTP wielkość liter nie jest rozróżniana, dlatego nazwa nagłówka będzie zapisana małymi literami. |
value |
ciąg niezdefiniowany | Wartość nagłówka. Jeśli ma wartość null lub nie została określona, usuwa nazwany nagłówek z odpowiedzi, która zostanie zwrócona. |
Powiązane uprawnienia
Wymaga uprawnień access_response
. Uprawnienie musi być skonfigurowane w taki sposób, aby zezwalało na dostęp co najmniej:
headers
setResponseStatus
Ustawia kod stanu HTTP odpowiedzi, która zostanie zwrócona.
Pamiętaj, że aby odpowiedź została zwrócona klientowi, musi być wywoływana metoda returnResponse.
Składnia
setResponseStatus(statusCode);
Parametry
Parametr | Typ | Opis |
---|---|---|
statusCode |
liczba | Kod stanu HTTP, który ma zostać zwrócony. |
Powiązane uprawnienia
Wymaga uprawnień access_response
. Uprawnienie musi być skonfigurowane w taki sposób, aby zezwalało na dostęp co najmniej:
status
sha256
Oblicza skrót SHA-256 danych wejściowych i wywołuje wywołanie zwrotne z podsumowaniem zakodowanym w 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. W przypadku szablonów niestandardowych w kontenerach serwera należy jednak używać 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 zaszyfrowania. |
onSuccess |
funkcja |
Wywoływana z wynikowym skrótem zakodowanym w formacie base64, chyba że obiekt options określa inne kodowanie wyjściowe.
|
options |
obiekt |
Opcjonalny obiekt opcji określających kodowanie wyjściowe. Jeśli jest określony, obiekt powinien zawierać klucz outputEncoding o wartości base64 lub hex .
|
Powiązane uprawnienia
Brak.
sha256Sync
Oblicza i zwraca skrót SHA-256 danych wejściowych zakodowanych 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 zaszyfrowania. |
options |
obiekt |
Opcjonalny obiekt opcji określających kodowanie wyjściowe. Jeśli jest określony, obiekt powinien zawierać klucz outputEncoding o wartości base64 lub hex .
|
Powiązane uprawnienia
Brak.
templateDataStorage
Zwraca obiekt z metodami dostępu do magazynu danych szablonów. Magazyn danych szablonów umożliwia udostępnianie danych różnym wykonaniom jednego szablonu. Dane przechowywane w pamięci szablonu pozostają na serwerze, na którym działa kontener. W większości przypadków kontener działa kilka serwerów, więc przechowywanie danych w magazynie danych szablonu nie gwarantuje, że każde kolejne żądanie będzie miało do nich dostęp.
Termin „dane” w nazwie „templateDataStorage” oznacza, że za pomocą tego interfejsu API mogą być przechowywane tylko proste typy danych, które nie należą do funkcji. Wszystkie funkcje lub odwołania do funkcji przekazywane 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
testRegex
Testuje ciąg znaków pod kątem wyrażenia regularnego utworzonego za pomocą interfejsu API createRegex
. Zwraca wartość true
, jeśli wyrażenie regularne jest zgodne. W przeciwnym razie zwraca 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 używane do testowania, zwracane z interfejsu API createRegex. |
string |
ciąg znaków | Ciąg testowy do przetestowania. |
Powiązane uprawnienia
Brak.
toBase64
Koduje ciąg 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 do zakodowania. |
options
|
obiekt | Opcjonalna konfiguracja interfejsu API. (zobacz Opcje poniżej). |
Opcje
Opcja | Typ | Opis | Wersja minimalna |
---|---|---|---|
urlEncoding
|
boolean | Jeśli ma wartość prawda, wynik zostanie zakodowany 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 udostępniający funkcje BigQuery.
Funkcja BigQuery.insert
umożliwia zapisywanie danych w tabeli BigQuery. Zwraca obietnicę, która obowiązuje po pomyślnym wstawieniu, lub odrzuca w przypadku błędu.
Jeśli wstawienie się powiedzie, obietnica rozwiązuje się bez użycia argumentów.
Jeśli wstawienie się nie uda, obietnica zostanie odrzucona wraz z listą obiektów zawierających przyczynę błędu i prawdopodobnie obiektu wiersza, jeśli wystąpi błąd. Może się zdarzyć, że część żądania zostanie zrealizowana, a inne nie. W tym przypadku obietnica jest odrzucana wraz z listą błędów w każdym wierszu z obiektem wiersza, co ułatwia rozróżnienie, które wiersze zostały wstawione (patrz 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 |
Określa informacje wymagane do nawiązania połączenia z tabelą BigQuery. Występuje 1 parametr opcjonalny i 2 wymagane:
|
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. (Patrz 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. Domyślna wartość to false . |
skipInvalidRows |
boolean | Jeśli ustawiono wartość true , wstaw wszystkie prawidłowe wiersze żądania, nawet jeśli istnieją nieprawidłowe wiersze. Domyślna wartość to false . |
Błąd „Nie znaleziono modułu” oznacza, że Twój kontener serwera prawdopodobnie używa starszej wersji 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 dodany po zakończeniu operacji.
Błąd inny niż wstawienie zwykle ma 1 obiekt błędu z kluczem reason
:
[{reason: 'invalid'}]
Błąd wstawiania może zawierać wiele obiektów błędu z tablicy errors
i obiektem row
. Poniżej znajdziesz przykład odpowiedzi na błąd po wstawieniu 2 wierszy, w których tylko 1 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
Firestore
Zwraca obiekt, który udostępnia funkcje Firestore.
Ten interfejs API obsługuje tylko Firestore w trybie natywnym, a nie Firestore w trybie magazynu danych. Dodatkowo interfejs API obsługuje tylko używanie domyślnej bazy danych.
Firestore.read
Funkcja Firestore.read
odczytuje dane z dokumentu Firestore i zwraca obietnicę odnoszącą się do obiektu zawierającego 2 klucze: id
i data
. Jeśli dokument nie istnieje, obietnica odrzuca obiekt zawierający 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. (Patrz Opcje poniżej). |
Parametr | Typ | Opis |
---|---|---|
projectId |
ciąg znaków | Opcjonalnie. Identyfikator projektu Google Cloud Platform. W przypadku pominięcia tego pola obiekt 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, parametr GOOGLE_CLOUD_PROJECT będzie już ustawiony na identyfikator projektu Google Cloud. |
disableCache |
boolean | Opcjonalnie. Określa, czy pamięć podręczna ma być wyłączona. Buforowanie jest domyślnie włączone, dzięki czemu wyniki są zapisywane w pamięci podręcznej na czas trwania żądania. |
transaction |
ciąg znaków | Opcjonalnie. Wartość pobrana z Firestore.runTransaction(). Oznacza operację, która ma być 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 o losowo generowanym identyfikatorze. Jeśli ścieżka prowadzi do dokumentu, który nie istnieje, zostanie utworzona. Ten interfejs API zwraca obietnicę odpowiadającą identyfikatorowi 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ą zgrupowane.
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 scali klucze z danych wejściowych do dokumentu. |
options |
obiekt | Opcjonalne opcje żądania. Obsługiwane opcje to: projectId, merge i transaction. Nieznane klawisze opcji są ignorowane. (Patrz Opcje poniżej). |
Parametr | Typ | Opis |
---|---|---|
projectId |
ciąg znaków | Opcjonalnie. Identyfikator projektu Google Cloud Platform. W przypadku pominięcia tego pola obiekt 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, parametr GOOGLE_CLOUD_PROJECT będzie już ustawiony na identyfikator projektu Google Cloud. |
merge |
boolean | Opcjonalnie. Jeśli ma wartość true , scal klucze z danych wejściowych do dokumentu. W przeciwnym razie metoda zastąpi cały dokument. Domyślna wartość to false . |
transaction |
ciąg znaków | Opcjonalnie. Wartość pobrana z Firestore.runTransaction(). Oznacza operację, która ma być 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ę odnoszącą się do tablicy dokumentów Firestore pasujących do warunków zapytania. Obiekt dokumentu Firestore jest taki sam jak wymieniony powyżej w Firestore.read
. Jeśli nie ma dokumentów spełniających warunki zapytania, zwrócona obietnica przejdzie 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: key, operator i expectedValue. E.g.:
[[„identyfikator”, „<”, „5”], [„stan”, „==”, „CA”]]. Warunki są łączone za pomocą operatora I, by utworzyć wynik zapytania. Listę zgodnych operatorów zapytań znajdziesz w artykule Operatory zapytań Firestore. |
options |
obiekt | Optional request options. The supported options are: projectId, disableCache, limit, and transaction. Unknown option keys are ignored. (See Options, below.) |
Parametr | Typ | Opis |
---|---|---|
projectId |
ciąg znaków | Opcjonalnie. Identyfikator projektu Google Cloud Platform. W przypadku pominięcia tego pola obiekt 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, parametr GOOGLE_CLOUD_PROJECT będzie już ustawiony na identyfikator projektu Google Cloud. |
disableCache |
boolean | Opcjonalnie. Określa, czy pamięć podręczna ma być wyłączona. Buforowanie jest domyślnie włączone, dzięki czemu wyniki są zapisywane w pamięci podręcznej na czas trwania żą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 być 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
pozwala użytkownikowi całościowo odczytywać i zapisywać dane 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 nie powiedzie się, interfejs API odrzuci z powodu błędu. Ten interfejs API zwraca obietnicę, która zwraca tablicę identyfikatorów dokumentów dla każdej operacji zapisu (jeśli transakcja się powiedzie, i odrzuca z powodu błędu).
Składnia
Firestore.runTransaction(callback[, options]);
Parametry
Parametr | Typ | Opis |
---|---|---|
callback |
funkcja | Wywołanie zwrotne z identyfikatorem transakcji w postaci ciągu znaków. Identyfikator transakcji może być przekazywany do wywołań interfejsu API do odczytu, zapisu i zapytań. Ta funkcja wywołania zwrotnego musi zwrócić obietnicę. Wywołanie zwrotne może zostać wykonane maksymalnie 3 razy, zanim zakończy się niepowodzeniem. |
options |
obiekt | Opcjonalne opcje żądania. Jedyną obsługiwaną opcją jest projectId. Nieznane klawisze opcji są ignorowane. (Patrz Opcje poniżej). |
Parametr | Typ | Opis |
---|---|---|
projectId |
ciąg znaków | Opcjonalnie. Identyfikator projektu Google Cloud Platform. W przypadku pominięcia tego pola obiekt 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, parametr 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);
Błędy dostępne w każdej funkcji Firestore będą odrzucane za pomocą obiektu zawierającego klucz reason
:
Firestore.read(...).then(onSuccess, (error) => {
if (error.reason === 'unknown') {
// Handle the unknown error here.
}
});
Przyczyny błędu mogą obejmować kody błędów interfejsu API typu REST Firestore.
Powiązane uprawnienia
JSON
Zwraca obiekt, który udostępnia funkcje JSON.
Funkcja parse()
analizuje ciąg znaków JSON, aby utworzyć wartość lub obiekt opisany przez ciąg. Jeśli nie można przeanalizować wartości (np. ma nieprawidłowy format JSON), funkcja zwróci undefined
. Jeśli wartość wejściowa nie jest ciągiem, zostanie ona przekształcona w ciąg znaków.
Funkcja stringify()
przekształca dane wejściowe na ciąg znaków JSON. Jeśli nie można przeanalizować wartości (np. obiekt ma cykl), 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 matematycznej są konwertowane na liczby.
Powiązane uprawnienia
Brak.
Messages
Poniższe interfejsy API współpracują ze sobą, aby umożliwiać przekazywanie wiadomości między różnymi częściami kontenera.
addMessageListener
Dodaje funkcję, która nasłuchuje wiadomości określonego typu. Gdy komunikat tego typu jest wysyłany za pomocą interfejsu API sendMessage
(zwykle przez tag), wywołanie zwrotne jest wykonywane synchronicznie. Wywołanie zwrotne jest wykonywane z 2 parametrami:
messageType:string
message:Object
Jeśli wywołanie zwrotne zostanie dodane w kliencie, wywołanie zwrotne będzie odbierać komunikaty dotyczące wszystkich zdarzeń utworzonych przez klienta. Jeśli wywołanie zwrotne powinno otrzymywać komunikaty tylko z określonego zdarzenia, powiąż ten interfejs API ze zdarzeniem za pomocą funkcji 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ć odsłuchana. Jeśli wartość nie jest ciągiem, zostanie przekształcona w ciąg znaków. |
callback |
funkcja | Wywołanie zwrotne uruchamiane po wysłaniu wiadomości odpowiedniego typu. Jeśli wywołanie zwrotne nie jest funkcją, interfejs API nie zrobi nic. |
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 uprawnień use_message
. Uprawnienie musi być skonfigurowane w taki sposób,
aby zezwalało na co najmniej:
- Typ wiadomości z
Usage
o wartościlisten
lublisten_and_send
.
hasMessageListener
Zwraca wartość „prawda”, jeśli do danego typu wiadomości został dodany detektor wiadomości. W przeciwnym razie zwraca wartość fałsz.
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ć wiadomości 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 znaków. |
message |
obiekt | Wiadomość do wysłania. Jeśli komunikat nie jest obiektem, interfejs API nie zrobi nic. |
Powiązane uprawnienia
Wymaga uprawnień use_message
. Uprawnienie musi być skonfigurowane w taki sposób,
aby zezwalało na co najmniej:
- Typ wiadomości z
Usage
o wartościlisten_and_send
lubsend
.
Object
Zwraca obiekt, który udostępnia metody Object
.
Metoda keys()
udostępnia działanie Object.keys() biblioteki standardowej. Zwraca tablicę własnych wyliczanych nazw właściwości 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 values()
udostępnia działanie Object.values() biblioteki standardowej. Zwraca tablicę wartości właściwości wyliczanych danego obiektu w tej samej kolejności, w jakiej zostałaby użyta pętla for...in...
. Jeśli wartość wejściowa nie jest obiektem, zostanie przekształcona w obiekt.
Metoda entries()
udostępnia działanie Object.entries() biblioteki standardowej. Zwraca tablicę par możliwych do wyliczeniowych obiektu [key, value]
w tej samej kolejności, w jakiej zostałaby użyta pętla for...in...
. Jeśli wartość wejściowa nie jest obiektem, zostanie przekształcona w obiekt.
Metoda freeze()
udostępnia 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, usunięcie istniejących właściwości oraz zmianę wartości istniejących właściwości. freeze()
zwraca ten sam obiekt, który został przekazany. Argument podstawowy lub pusty będzie traktowany jako zablokowany obiekt i zostanie zwrócony.
Metoda delete()
działa w ramach operatora usuwania Biblioteki standardowej. Usuwa podany klucz z obiektu, chyba że obiekt zostanie zablokowany.
Podobnie jak operator usuwania w bibliotece 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
) wskazuje klucz, który nie istnieje. We wszystkich innych przypadkach zwraca wartość false
. Różni się jednak od operatora usuwania w bibliotece standardowej pod tymi względami:
keyToDelete
nie może być ciągiem rozdzielanym kropkami, który określa zagnieżdżony klucz.- Nie można użyć funkcji
delete()
do usunięcia elementów z tablicy. - Za pomocą funkcji
delete()
nie można usuwać żadnych właściwości 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ść do wyliczenia. 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 zablokowany obiekt. |
Object.delete
Parametr | Typ | Opis |
---|---|---|
objectInput | dowolny | Obiekt, którego klucz do usunięcia. |
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 to odpowiednik obietnic JavaScriptu. Każda instancja ma 3 metody zwracające obietnicę, która umożliwia podjęcie dalszych działań, gdy obietnica zostanie spełniony:
.then()
– zajmuje się zarówno rozwiązanymi, jak i odrzuconymi zgłoszeniami. Pobiera 2 wywołania zwrotne jako parametry: jedno dla przypadku powodzenia, a 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 rozpatrzona czy odrzucona. Przyjmuje jedno wywołanie zwrotne jako parametr wywoływany bez argumentu.
Zmienna, która zwraca obietnicę, równa się ostatecznej wartości obietnicy lub false
, jeśli obietnica ją odrzuca.
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ę, że:
- rozwiązuje się po przeanalizowaniu wszystkich danych wejściowych,
- odrzuca, gdy dowolne z danych wejściowych zostaną odrzucone
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ą przekazywane tak, jakby były uzyskaną wartością obietnicy. Jeśli dane wejściowe nie są tablicami, zwraca 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 równoważna z obietnicą JavaScript.
Składnia
Promise.create(resolver);
Parametry
Parametr | Typ | Opis |
---|---|---|
resolver |
funkcja | Funkcja, która jest wyzwalana z użyciem dwóch funkcji – rozstrzygania i odrzucania. Zwrócona obietnica zostanie zakończona 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 testach szablonów niestandardowych]
assertApi
Zwraca obiekt dopasowania, którego można używać do płynnego formułowania asercji do podanego interfejsu API.
Składnia
assertApi(apiName)
Parametry
Parametr | Typ | Opis |
---|---|---|
apiName |
ciąg znaków | Nazwa interfejsu API do sprawdzenia; ciąg znaków przekazywany 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 API assertThat
jest oparty na bibliotece Google [Truth]. Zwraca obiekt, za pomocą którego można płynnie formułować asercje dotyczące wartości podmiotu. Niepowodzenie asercji spowoduje natychmiastowe zatrzymanie testu i oznaczenie go jako nieudanego. Niepowodzenie w jednym teście nie wpływa jednak na pozostałe.
Składnia
assertThat(actual, opt_message)
Parametry
Parametr | Typ | Opis |
---|---|---|
actual |
dowolny | Wartość do użycia podczas sprawdzania płynności. |
opt_message |
ciąg znaków | Opcjonalna wiadomość do wyświetlenia w przypadku niepowodzenia potwierdzenia. |
Dopasowania
Dopasowanie | Opis |
---|---|
isUndefined() |
Wskazuje, że obiekt to undefined . |
isDefined() |
Wskazuje, że temat nie należy do kategorii undefined . |
isNull() |
Wskazuje, że obiekt to null . |
isNotNull() |
Wskazuje, że temat nie należy do kategorii null . |
isFalse() |
Wskazuje, że obiekt to false . |
isTrue() |
Wskazuje, że obiekt to true . |
isFalsy() |
Twierdzenie, że temat jest fałszywy. Wartości Falsy to undefined , null , false , NaN , 0 i „” (pusty ciąg znaków). |
isTruthy() |
Twierdzenie, że temat jest zgodny z prawdą. Wartości Falsy to undefined , null , false , NaN , 0 i „” (pusty ciąg znaków). |
isNaN() |
Stwierdza, że podmiot jest wartością NaN. |
isNotNaN() |
Twierdzi, że podmiot ma dowolną wartość oprócz NaN. |
isInfinity() |
Twierdzi, że obiekt ma wartość dodatnią lub ujemną (nieskończoność). |
isNotInfinity() |
Twierdzi, że obiekt ma dowolną wartość poza dodatnią lub ujemną nieskończonością. |
isEqualTo(expected) |
Stwierdza, że podmiot jest równa podanej wartości. To jest porównanie wartości, a nie referencyjne. Zawartość obiektów i tablic jest porównywana rekurencyjnie. |
isNotEqualTo(expected) |
Stwierdza, że podmiot nie jest równa podanej wartości. To jest porównanie wartości, a nie odniesienia. Zawartość obiektów i tablic jest porównywana rekurencyjnie. |
isAnyOf(...expected) |
Stwierdza, że temat jest równa 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) |
Stwierdza, że podmiot nie jest równa żadnej z podanych wartości. To jest porównanie wartości, a nie pliku referencyjnego. Zawartość obiektów i tablic jest porównywana rekurencyjnie. |
isStrictlyEqualTo(expected) |
Stwierdza, że podmiot jest ściśle równy (=== ) podanej wartości. |
isNotStrictlyEqualTo(expected) |
Stwierdza, że podmiot nie jest ściśle równy (!== ) podanej wartości. |
isGreaterThan(expected) |
Stwierdzono, że podmiot jest większy od (> ) podanej wartości w porównaniu uporządkowanym. |
isGreaterThanOrEqualTo(expected) |
Stwierdza, że temat jest większy lub równy (>= ) podanej wartości w porównaniu uporządkowanym. |
isLessThan(expected) |
Stwierdzono, że temat jest mniejszy od (< ) podanej wartości w porównaniu uporządkowanym. |
isLessThanOrEqualTo(expected) |
Stwierdza, że temat jest mniejszy lub równy (<= ) podanej wartości w porównaniu uporządkowanym. |
contains(...expected) |
Stwierdzono, że podmiot jest tablicą lub ciągiem znaków zawierającym wszystkie podane wartości w dowolnej kolejności. To jest porównanie wartości, a nie referencyjne. Zawartość obiektów i tablic jest porównywana rekurencyjnie. |
doesNotContain(...expected) |
Stwierdzono, że podmiot jest tablicą lub ciągiem znaków, które nie zawierają żadnej z podanych wartości. To jest porównanie wartości, a nie pliku referencyjnego. Zawartość obiektów i tablic jest porównywana rekurencyjnie. |
containsExactly(...expected) |
Stwierdzono, że podmiot jest tablicą, która zawiera wszystkie podane wartości w dowolnej kolejności i nie zawiera żadnych innych wartości. To jest porównanie wartości, a nie referencyjne. Zawartość obiektów i tablic jest porównywana rekurencyjnie. |
doesNotContainExactly(...expected) |
Stwierdzono, że temat 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 referencyjne. Zawartość obiektów i tablic jest porównywana rekurencyjnie. |
hasLength(expected) |
Potwierdza, że temat jest tablicą lub ciągiem znaków o podanej długości. Potwierdzenie zawsze kończy się niepowodzeniem, jeśli wartość nie jest tablicą ani ciągiem znaków. |
isEmpty() |
Potwierdza, że temat jest tablicą lub pustym ciągiem znaków (długość = 0). Potwierdzenie zawsze kończy się niepowodzeniem, jeśli wartość nie jest tablicą ani ciągiem znaków. |
isNotEmpty() |
Potwierdza, że temat jest tablicą lub ciągiem znaków, który nie jest pusty (długość > 0). Potwierdzenie zawsze kończy się niepowodzeniem, jeśli wartość nie jest tablicą ani ciągiem znaków. |
isArray() |
Stwierdza, że typem podmiotu jest tablica. |
isBoolean() |
Stwierdza, że typ podmiotu jest wartością logiczną. |
isFunction() |
Stwierdza, że typ podmiotu jest funkcją. |
isNumber() |
Stwierdza, że typ podmiotu jest liczbą. |
isObject() |
Stwierdza, że typ podmiotu jest obiektem. |
isString() |
Zapewnia, że typem tematu jest ciąg 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
Natychmiastowo zakończy bieżący test i wydrukuje podany komunikat (jeśli został podany).
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. Imitacji interfejsu API można bezpiecznie używać w kodzie szablonu, ale w trybie testowym nie działa. Przykłady są resetowane przed uruchomieniem każdego testu.
Składnia
mock(apiName, returnValue);
Parametry
Parametr | Typ | Opis |
---|---|---|
apiName |
ciąg znaków | Nazwa interfejsu API do imitowania; ten sam ciąg znaków co przekazany do require() |
returnValue |
dowolny | Wartość do zwrócenia dla interfejsu API lub funkcji wywoływanej zamiast interfejsu API. Jeśli returnValue jest funkcją, jest ona wywoływana zamiast interfejsu API w trybie piaskownicy. Jeśli returnValue jest funkcją inną niż funkcja, zwracana jest wartość zamiast interfejsu API w trybie piaskownicy. |
Przykłady
mock('encodeUri', "https://endpoint.example.com/?account=12345");
mock('sendPixel', function(url, onSuccess, onFailure) {
onSuccess();
});
runCode
Uruchamia kod szablonu (tj. 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 undefined
w przypadku wszystkich innych typów szablonów.
Przykład
runCode({field1: 123, field2: 'value'});