API pemberian tag sisi server

Dokumen ini berisi penjelasan tentang API untuk pemberian tag sisi server.


addEventCallback

Mendaftarkan fungsi callback yang akan dipanggil di akhir peristiwa. Callback akan dipanggil saat semua tag untuk peristiwa telah dieksekusi. Callback mendapatkan dua nilai: id penampung yang memanggil fungsi dan objek yang berisi informasi tentang peristiwa.

Saat digunakan di tag, API ini dikaitkan dengan peristiwa saat ini. Saat digunakan di klien, API ini harus terikat ke peristiwa tertentu menggunakan fungsi bindToEvent di runContainer API. Lihat contoh untuk detail selengkapnya.

Sintaksis

const addEventCallback = require('addEventCallback');

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

Parameter

Parameter Jenis Deskripsi
callback fungsi Fungsi yang akan dipanggil di akhir peristiwa.

Objek eventData berisi data berikut:

Nama Kunci Jenis Deskripsi
tags Array Array objek data tag. Setiap tag yang diaktifkan selama peristiwa akan memiliki entri dalam array ini. Objek data tag berisi ID tag (id), status eksekusinya (status), dan waktu eksekusinya (executionTime). Data tag juga akan menyertakan metadata tag tambahan yang dikonfigurasi di tag.

Contoh

Di klien:

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

Di tag:

const addEventCallback = require('addEventCallback');

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

Izin terkait

read_event_metadata


callLater

Menjadwalkan panggilan ke fungsi agar terjadi secara asinkron. Fungsi ini akan dipanggil setelah kode saat ini ditampilkan. Fungsi ini setara dengan setTimeout(<function>, 0).

Contoh

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

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

Sintaksis

callLater(function)

Parameter

Parameter Jenis Deskripsi
function fungsi Fungsi yang akan dipanggil.

Izin terkait

Tidak ada.


claimRequest

Gunakan API ini di klien untuk mengklaim permintaan. Setelah permintaan diklaim, penampung tidak menjalankan klien tambahan.

API ini melempar pengecualian jika dipanggil dalam tag atau variabel. API ini menampilkan pengecualian jika dipanggil setelah klien ditampilkan (misalnya, jika dipanggil dalam callback asinkron seperti di callLater atau fungsi runContainer onComplete).

Klien harus mengklaim permintaan menggunakan API ini sebelum memanggil runContainer API.

Contoh

const claimRequest = require('claimRequest');

claimRequest();

Sintaksis

claimRequest();

Izin terkait

Tidak ada.


computeEffectiveTldPlusOne

Menampilkan domain level teratas efektif + 1 (eTLD+1) dari domain atau URL yang diberikan. eTLD+1 dikomputasi dengan mengevaluasi domain berdasarkan aturan Daftar Suffix Publik. eTLD+1 biasanya merupakan domain level tertinggi tempat Anda dapat menetapkan cookie.

Jika argumen null atau undefined (belum ditentukan), nilai argumen akan ditampilkan tanpa perubahan. Jika tidak, argumen dikonversi menjadi string. Jika argumen bukan domain atau URL yang valid, string kosong akan ditampilkan. Jika server tidak dapat mengambil daftar suffix publik, nilai argumen akan ditampilkan tanpa perubahan.

Contoh

const computeEffectiveTldPlusOne = require('computeEffectiveTldPlusOne');

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

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

Sintaksis

computeEffectiveTldPlusOne(domainOrUrl);

Parameter

Parameter Jenis Deskripsi
domainOrUrl string Domain atau URL untuk menghitung eTLD+1.

Izin terkait

Tidak ada.


createRegex

Membuat instance ekspresi reguler baru dan menampilkannya di dalam sebuah objek. Anda tidak dapat mengakses ekspresi reguler secara langsung. Namun, Anda dapat meneruskannya ke testRegex API, String.replace(), String.match(), dan String.search().

Menampilkan null jika ekspresi reguler tidak valid atau Re2 tidak tersedia di server.

API ini menggunakan implementasi Re2. Image Docker server harus menggunakan versi 2.0.0 atau yang lebih baru.

Contoh

const createRegex = require('createRegex');

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

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

Sintaksis

createRegex(pattern, flags);

Parameter

Parameter Jenis Deskripsi
pattern string Teks ekspresi reguler
flags string String opsional berisi tanda untuk ekspresi reguler yang sedang dibuat. `g` (global) dan `i` (abaikan huruf besar/kecil) didukung. Semua karakter lainnya otomatis diabaikan.

Izin terkait

Tidak ada.

Versi image minimum

2.0.0


decodeUri

Mendekode karakter apa pun yang dienkode dalam URI yang disediakan. Menampilkan string yang merepresentasikan URI yang didekode. Menampilkan undefined jika disediakan dengan input yang tidak valid.

Contoh

const decodeUri = require('decodeUri');

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

Sintaksis

decodeUri(encoded_uri);

Parameter

Parameter Jenis Deskripsi
encoded_uri string URI yang telah dienkode oleh encodeUri() atau dengan cara lain.

Izin terkait

Tidak ada.


decodeUriComponent

Mendekode karakter apa pun yang dienkode dalam komponen URI yang disediakan. Menampilkan string yang mewakili komponen URI yang didekode. Menampilkan undefined jika input yang diberikan tidak valid.

Contoh

const decodeUriComponent = require('decodeUriComponent');

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

Sintaksis

decodeUriComponent(encoded_uri_component);

Parameter

Parameter Jenis Deskripsi
encoded_uri_component string Komponen URI yang telah dienkode oleh encodeUriComponent() atau dengan cara lain.

Izin terkait

Tidak ada.


encodeUri

Menampilkan Uniform Resource Identifier (URI) yang dienkode dengan meng-escape karakter khusus. Menampilkan string yang mewakili string yang disediakan yang dienkode sebagai URI.

Contoh

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

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

Sintaksis

encodeUri(uri);

Parameter

Parameter Jenis Deskripsi
uri string URI lengkap.

Izin terkait

Tidak ada.


encodeUriComponent

Menampilkan Uniform Resource Identifier (URI) yang dienkode dengan meng-escape karakter khusus. Menampilkan string yang mewakili string yang disediakan yang dienkode sebagai URI.

Contoh

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

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

Sintaksis

encodeUriComponent(str);

Parameter

Parameter Jenis Deskripsi
str string Komponen URI.

Izin terkait

Tidak ada.


extractEventsFromMpv1

Menerjemahkan permintaan Measurement Protocol V1 yang masuk ke daftar peristiwa dalam format Skema Terpadu. Menampilkan daftar peristiwa yang diekstrak. Menampilkan error jika permintaan tidak menggunakan format yang tepat.

Contoh

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

Sintaksis

extractEventsFromMpv1();

Izin terkait

Memerlukan izin read_request. Izin harus dikonfigurasi untuk mengizinkan akses setidaknya ke:

  • body
  • query parameters

extractEventsFromMpv2

Menerjemahkan permintaan Measurement Protocol V2 yang masuk ke daftar peristiwa dalam format Skema Terpadu. Menampilkan daftar peristiwa yang diekstrak. Menampilkan error jika permintaan tidak menggunakan format yang tepat.

Contoh

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

Sintaksis

extractEventsFromMpv2();

Izin terkait

Memerlukan izin read_request. Izin harus dikonfigurasi untuk mengizinkan akses setidaknya ke:

  • body
  • query parameters

fromBase64

Mendekode string yang dienkode base64. Menampilkan undefined jika input tidak valid.

Sintaksis

fromBase64(base64EncodedString);

Parameter

Parameter Jenis Deskripsi
base64EncodedString string String berenkode base64.

Contoh

const fromBase64 = require('fromBase64');

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

Izin terkait

Tidak ada.


generateRandom

Menampilkan angka (bilangan bulat) acak dalam rentang yang diberikan.

Contoh

const generateRandom = require('generateRandom');

const randomValue = generateRandom(0, 10000000);

Sintaksis

generateRandom(min, max);

Parameter

Parameter Jenis Deskripsi
min angka Nilai potensial minimum dari bilangan bulat yang ditampilkan (inklusif).
max angka Nilai potensial maksimum dari bilangan bulat yang ditampilkan (inklusif).

Izin terkait

Tidak ada.


getAllEventData

Menampilkan salinan data peristiwa.

Sintaksis

getAllEventData();

Izin terkait

read_event_data


getClientName

Menampilkan string yang berisi nama klien saat ini.

Sintaksis

getClientName();

Izin terkait

read_container_data


getContainerVersion

Menampilkan objek yang berisi data tentang penampung saat ini. Objek yang ditampilkan akan memiliki kolom berikut:

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

Contoh

const getContainerVersion = require('getContainerVersion');

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

Sintaksis

getContainerVersion();

Izin terkait

read_container_data


getCookieValues

Menampilkan array yang berisi nilai semua cookie dengan nama yang diberikan.

Contoh

const getCookieValues = require('getCookieValues');

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

Sintaksis

getCookieValues(name[, noDecode]);

Parameter

Parameter Jenis Deskripsi
name string Nama cookie.
noDecode boolean Jika true, nilai cookie tidak akan didekode sebelum ditampilkan. Nilai defaultnya adalah false.

Izin terkait

get_cookies


getEventData

Menampilkan salinan nilai di jalur yang diberikan dalam data peristiwa. Menampilkan undefined jika tidak ada data peristiwa atau jika tidak ada nilai di jalur yang diberikan.

Contoh

const getEventData = require('getEventData');

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

Parameter

Parameter Jenis Deskripsi
keyPath apa pun Jalur kunci, di mana komponen jalur dipisahkan dengan titik. Komponen jalur dapat berupa kunci pada suatu objek atau indeks di array. Jika keyPath bukan string, komponen ini dikonversi menjadi string.

Sintaksis

getEventData(keyPath);

Izin terkait

read_event_data


getGoogleAuth

Menampilkan objek otorisasi yang, saat digunakan dengan sendHttpGet atau sendHttpRequest, akan menyertakan header otorisasi untuk Google Cloud API. API ini menggunakan Kredensial Default Aplikasi untuk menemukan kredensial secara otomatis dari lingkungan server.

Contoh

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

Sintaksis

getGoogleAuth(scopes);

Parameter

Parameter Jenis Deskripsi
scopes Array Array cakupan Google API OAuth 2.0 untuk meminta akses.

Izin terkait

Memerlukan izin use_google_credentials. Izin harus dikonfigurasi dengan satu atau beberapa cakupan yang diizinkan.


getGoogleScript

Mengambil resource dari sekumpulan skrip Google yang telah ditentukan, dan menampilkan promise dengan skrip dan metadata terkait yang tersimpan dalam cache.

Promise akan di-resolve ke objek yang berisi dua kunci: script dan metadata. Jika permintaan gagal, promise akan ditolak dengan kunci reason.

Objek metadata akan berisi metadata berikut yang tersimpan dalam cache berdasarkan header respons resource; setiap kolom hanya akan ada jika header yang sesuai ada dalam respons resource.

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

Contoh

const getGoogleScript = require('getGoogleScript');

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

Sintaksis

getGoogleScript(script[, options]);

Parameter

Parameter Jenis Deskripsi
script string Nama skrip. Skrip yang didukung adalah 'ANALYTICS', 'GTAG', dan 'GTM'.

Opsi 'ANALYTICS' mengambil skrip Google Analytics dari https://www.google-analytics.com/analytics.js.

Opsi 'GTAG' akan mengambil skrip tag situs global (gtag.js) dari https://www.googletagmanager.com/gtag/js.

Opsi 'GTM' mengambil skrip Google Tag Manager dari https://www.googletagmanager.com/gtm.js.
options objek Opsi permintaan opsional. Lihat opsi yang didukung di bawah.

Opsi

Opsi Jenis Deskripsi
id string Berlaku untuk 'GTAG' dengan ID pengukuran gtag dan 'GTM' dengan ID penampung web (misalnya, GTM-XXXX).
debug apa pun Jika true (benar), meminta dan menampilkan versi debug skrip pengukuran.
timeout angka Waktu tunggu permintaan dalam milidetik; nilai non-positif diabaikan. Jika waktu permintaan habis, callback akan dipanggil dengan undefined untuk nilai skrip dan {} untuk objek metadata.

Kunci opsi yang tidak dikenal akan diabaikan.

Izin terkait

Memerlukan izin send_http. Izin harus dikonfigurasi untuk mengizinkan akses setidaknya ke:

  • Izinkan Google Domains

getRemoteAddress

Menampilkan representasi string alamat IP tempat permintaan berasal, misalnya, 12.345.67.890 untuk IPv4 atau 2001:0db8:85a3:0:0:8a2e:0370:7334 untuk IPv6, dengan membaca header permintaan seperti Forwarded dan X-Forwarded-For. Catatan: API ini melakukan upaya terbaik untuk menemukan IP asal, tetapi tidak dapat menjamin hasilnya akan akurat.

Sintaksis

getRemoteAddress();

Izin terkait

Memerlukan izin read_request. Izin harus dikonfigurasi untuk mengizinkan akses setidaknya ke:

  • Header Forwarded dan X-Forwarded-For
  • Alamat IP Jarak Jauh

getRequestBody

Menampilkan isi permintaan sebagai string, jika ada, atau undefined jika tidak ada.

Sintaksis

getRequestBody();

Izin terkait

read_request


getRequestHeader

Menampilkan nilai header permintaan bernama sebagai string, jika ada, atau undefined jika tidak ada. Jika header diulang, nilai yang ditampilkan akan digabungkan dengan ', '.

Contoh

const getRequestHeader = require('getRequestHeader');

const host = getRequestHeader('host');

Sintaksis

getRequestHeader(headerName);

Parameter

Parameter Jenis Deskripsi
headerName string Nama header. Nilai ini tidak peka huruf besar/kecil.

Izin terkait

read_request


getRequestMethod

Menampilkan metode permintaan, misalnya, 'GET' atau 'POST', sebagai string.

Contoh

const getRequestMethod = require('getRequestMethod');

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

Sintaksis

getRequestMethod();

Izin terkait

Tidak ada.


getRequestPath

Menampilkan jalur permintaan tanpa string kueri. Misalnya, jika URL-nya adalah '/foo?id=123', '/foo' akan ditampilkan. Secara otomatis menghapus awalan URL penampung Server dari jalur. Misalnya, jika URL penampung server adalah https://example.com/analytics dan jalur permintaan adalah '/analytics/foo', maka '/foo' akan ditampilkan.

Contoh

const getRequestPath = require('getRequestPath');

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

Sintaksis

getRequestPath();

Izin terkait

read_request


getRequestQueryParameter

Menampilkan nilai parameter string kueri bernama yang didekode sebagai string, atau undefined jika parameter tidak ada. Jika parameter tersebut diulang dalam string kueri, nilai pertama yang muncul dalam string kueri akan ditampilkan.

Contoh

const getRequestQueryParameter = require('getRequestQueryParameter');

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

Sintaksis

getRequestQueryParameter(name);

Parameter

Parameter Jenis Deskripsi
name string Nama parameter kueri.

Izin terkait

read_request


getRequestQueryParameters

Menampilkan parameter kueri permintaan HTTP yang masuk sebagai objek yang memetakan nama parameter kueri ke nilai yang sesuai. Nama dan nilai parameter didekode.

Contoh

const getRequestQueryParameters = require('getRequestQueryParameters');

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

Sintaksis

getRequestQueryParameters();

Izin terkait

read_request


getRequestQueryString

Menampilkan kueri permintaan sebagai string, tanpa tanda tanya di awal, atau string kosong jika URL permintaan tidak menyertakan string kueri.

Contoh

const getRequestQueryString = require('getRequestQueryString');

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

Sintaksis

getRequestQueryString();

Izin terkait

read_request


getTimestamp

Tidak digunakan lagi. Pilih getTimestampMillis.

Menampilkan angka yang merepresentasikan waktu saat ini dalam milidetik sejak epoch Unix, seperti yang ditampilkan oleh Date.now().

Sintaksis

getTimestamp();

Izin terkait

Tidak ada.


getTimestampMillis

Menampilkan angka yang merepresentasikan waktu saat ini dalam milidetik sejak epoch Unix, seperti yang ditampilkan oleh Date.now().

Sintaksis

getTimestampMillis();

Izin terkait

Tidak ada.


getType

Menampilkan string yang menjelaskan jenis nilai yang diberikan.

Jenis Input Nilai yang Ditampilkan
string 'string'
angka 'number'
boolean 'boolean'
null 'null'
belum ditentukan 'undefined'
Array 'array'
Objek 'object'
Fungsi 'function'

Contoh

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

Sintaksis

getType(value);

Parameter

Parameter Jenis Deskripsi
value apa pun Nilai input.

Izin terkait

Tidak ada.


hmacSha256

Menghitung tanda tangan yang dienkode menggunakan Kode Autentikasi Pesan Berbasis Hash (HMAC) dengan SHA-256. Setelan defaultnya adalah encoding base64url.

Untuk menggunakan API ini, tetapkan variabel lingkungan SGTM_CREDENTIALS di server ke jalur file kunci JSON yang dienkode UTF-8 dengan format berikut:

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

Nilainya adalah kunci HMAC yang dienkode base64. Teks JSON tidak boleh diawali dengan penanda urutan byte.

Contoh

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;

Sintaksis

hmacSha256(data, keyId, options)

Parameter

Parameter Jenis Deskripsi
data string Data untuk menghitung nilai HMAC.
keyId string ID kunci dari file kunci JSON yang merujuk ke kunci yang akan digunakan.
options objek Konfigurasi API opsional. (Lihat Opsi di bawah.)

Opsi

Opsi Jenis Deskripsi
outputEncoding string Menentukan format encoding untuk nilai yang ditampilkan. Format yang didukung adalah hex, base64, atau base64url. Secara default ke base64url jika tidak ditentukan.

Izin terkait

use_custom_private_keys

Versi image minimum

1.0.0


isRequestMpv1

Menampilkan true jika permintaan yang masuk adalah permintaan Measurement Protocol V1, atau false jika bukan.

Contoh

const isRequestMpv1 = require('isRequestMpv1');

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

Sintaksis

isRequestMpv1();

Izin terkait

Tidak ada.


isRequestMpv2

Menampilkan true jika permintaan yang masuk adalah permintaan Measurement Protocol V2, atau false jika bukan.

Contoh

const isRequestMpv2 = require('isRequestMpv2');

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

Sintaksis

isRequestMpv2();

Izin terkait

Tidak ada.


logToConsole

Mencatat argumennya ke konsol.

Log ini dapat dilihat dalam Logs Explorer di Google Cloud Console. Dari Logs Explorer, jalankan kueri logName =~ "stdout" untuk melihat entri log yang dibuat oleh API ini.

Contoh

const logToConsole = require('logToConsole');

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

Sintaksis

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

Parameter

API mengambil satu atau beberapa argumen, yang masing-masing dikonversi menjadi string, jika perlu, dan dicatat dalam log ke konsol.

Izin terkait

logging


makeInteger

Mengonversi nilai yang diberikan ke sebuah angka (bilangan bulat).

Sintaksis

makeInteger(value);

Parameter

Parameter Jenis Deskripsi
value jenis apa saja Nilai yang akan dikonversi.

Izin terkait

Tidak ada.


makeNumber

Mengonversi nilai yang diberikan ke sebuah angka.

Sintaksis

makeNumber(value);

Parameter

Parameter Jenis Deskripsi
value jenis apa saja Nilai yang akan dikonversi.

Izin terkait

Tidak ada.


makeString

Menampilkan nilai yang diberikan sebagai string.

Sintaksis

makeString(value);

Parameter

Parameter Jenis Deskripsi
value jenis apa saja Nilai yang akan dikonversi.

Izin terkait

Tidak ada.


makeTableMap

Mengonversi objek tabel sederhana dengan dua kolom menjadi Map. API ini digunakan untuk mengubah kolom template SIMPLE_TABLE dengan dua kolom menjadi format yang lebih mudah dikelola.

Misalnya, fungsi ini dapat mengonversi objek tabel:

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

menjadi Peta:

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

Menampilkan Object: Map yang dikonversi jika pasangan nilai kunci telah ditambahkan ke sini atau null.

Sintaksis

makeTableMap(tableObj, keyColumnName, valueColumnName);

Parameter

Parameter Jenis Deskripsi
tableObj Daftar Objek tabel yang akan dikonversi. Parameter ini adalah daftar peta dengan setiap Map merepresentasikan baris dalam tabel. Setiap nama properti dalam objek baris adalah nama kolom, dan nilai properti adalah nilai kolom dalam baris.
keyColumnName string Nama kolom yang nilainya akan menjadi kunci dalam Map yang dikonversi.
valueColumnName string Nama kolom yang nilainya akan menjadi nilai dalam Map yang dikonversi.

Izin terkait

Tidak ada.


parseUrl

Menampilkan objek yang berisi semua bagian komponen URL tertentu, mirip dengan objek URL.

API ini akan menampilkan undefined untuk URL dengan format yang salah. Untuk URL yang diformat dengan benar, kolom yang tidak ada dalam string URL akan memiliki nilai string kosong, atau objek kosong untuk searchParams.

Objek yang ditampilkan akan memiliki kolom berikut:

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

Contoh

const parseUrl = require('parseUrl');

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

Sintaksis

parseUrl(url);

Parameter

Parameter Jenis Deskripsi
url string URL lengkap yang akan diuraikan.

Izin terkait

Tidak ada.


returnResponse

Menghapus respons yang sebelumnya ditetapkan oleh template lain menggunakan API yang mengubah respons, termasuk setCookie, setPixelResponse, setResponseBody, setResponseHeader, dan setResponseStatus. Nilai defaultnya adalah kode status HTTP 200, isi kosong, dan tanpa header.

Sebaiknya API ini digunakan dari template klien.

Sintaksis

returnResponse();

Contoh

Lihat contoh runContainer.

Izin terkait

return_response


runContainer

Menjalankan logika penampung (variabel, pemicu, tag) dalam cakupan peristiwa. Jika API ini dipanggil selama eksekusi penampung, penampung akan dijalankan lagi.

Callback onComplete dan onStart menerima fungsi yang disebut bindToEvent. Gunakan bindToEvent untuk menjalankan API dalam konteks peristiwa. Lihat contoh addEventCallback untuk detail selengkapnya.

Sebaiknya API ini digunakan dari template klien.

Contoh

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

Sintaksis

runContainer(event, onComplete, onStart);

Parameter

Parameter Jenis Deskripsi
event objek Parameter peristiwa.
onComplete fungsi Callback yang dipanggil setelah semua tag selesai diaktifkan.
onStart fungsi Callback yang langsung dipanggil, sebelum tag mulai diaktifkan.

Izin terkait

run_container


sendEventToGoogleAnalytics

Mengirimkan satu peristiwa menggunakan Data Peristiwa Umum ke Google Analytics dan menampilkan promise yang di-resolve ke objek dengan kunci location atau ditolak ke objek dengan kunci reason. Tujuan, yaitu Google Analytics 4, ditentukan berdasarkan ID pengukuran dalam data peristiwa.

Kolom location ditetapkan ke header location, jika ada.

Contoh

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

Sintaksis

sendEventToGoogleAnalytics(event);

Parameter

Parameter Jenis Deskripsi
event objek Peristiwa dalam format Skema Terpadu.

Izin terkait

Memerlukan izin send_http. Izin harus dikonfigurasi untuk mengizinkan akses setidaknya ke:

  • Izinkan Google Domains

sendHttpGet

Membuat permintaan HTTP GET ke URL yang ditentukan, dan menampilkan promise yang di-resolve dengan hasil setelah permintaan selesai atau habis waktunya.

Hasil yang di-resolve adalah objek yang berisi tiga kunci: statusCode, headers, dan body. Jika permintaan gagal (misalnya, URL tidak valid, tidak ada rute untuk dihosting, kegagalan negosiasi SSL, dsb.), promise akan ditolak dengan: {reason: 'failed'}. Jika opsi timeout ditetapkan dan waktu permintaan habis, promise akan ditolak dengan: {reason: 'timed_out'}

Contoh

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

Sintaksis

sendHttpGet(url[, options]);

Parameter

Parameter Jenis Deskripsi
url string URL yang diminta.
options objek Opsi permintaan opsional. (Lihat Opsi di bawah.)

Opsi

Opsi Jenis Deskripsi
headers string Header permintaan tambahan.
timeout angka Waktu tunggu, dalam milidetik, sebelum permintaan dibatalkan. Default-nya adalah 15000.
authorization objek Objek otorisasi Opsional dari panggilan ke getGoogleAuth untuk menyertakan header otorisasi saat membuat permintaan ke googleapis.com.

Izin terkait

send_http


sendHttpRequest

Membuat permintaan HTTP ke URL yang ditentukan, dan menampilkan promise yang di-resolve dengan respons setelah permintaan selesai atau habis waktunya.

Hasil yang di-resolve adalah objek yang berisi tiga kunci: statusCode, headers, dan body. Jika permintaan gagal (misalnya, URL tidak valid, tidak ada rute untuk dihosting, kegagalan negosiasi SSL, dsb.), promise akan ditolak dengan: {reason: 'failed'}. Jika opsi timeout ditetapkan dan waktu permintaan habis, promise akan ditolak dengan: {reason: 'timed_out'}

Contoh

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

Sintaksis

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

Parameter

Parameter Jenis Deskripsi
url string URL yang diminta.
options objek Opsi permintaan opsional. (Lihat Opsi di bawah.)
body string Isi permintaan opsional.

Opsi

Opsi Jenis Deskripsi
headers string Header permintaan tambahan.
method objek Metode permintaan. Default-nya adalah GET.
timeout angka Waktu tunggu, dalam milidetik, sebelum permintaan dibatalkan. Default-nya adalah 15000.
authorization objek Objek otorisasi Opsional dari panggilan ke getGoogleAuth untuk menyertakan header otorisasi saat membuat permintaan ke googleapis.com.

Izin terkait

send_http


sendPixelFromBrowser

Mengirim perintah ke browser untuk memuat URL yang disediakan sebagai tag <img>. Protokol perintah ini didukung dalam tag web Tag Google untuk GA4 dan Google Analytics: Peristiwa GA. Anda harus mengonfigurasi URL penampung server. Lihat petunjuk untuk mengetahui detail selengkapnya.

API ini menampilkan false jika permintaan yang masuk tidak mendukung protokol perintah, atau jika respons sudah dihapus. Jika tidak, API ini akan menampilkan true.

Contoh:

const sendPixelFromBrowser = require('sendPixelFromBrowser');

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

Sintaksis

sendPixelFromBrowser(url)

Parameter

Parameter Jenis Deskripsi
url string URL yang akan dikirim ke browser.

Izin terkait

send_pixel_from_browser


setCookie

Menetapkan atau menghapus cookie dengan opsi yang ditentukan.

Untuk menghapus cookie, Anda harus menetapkan cookie dengan jalur dan domain yang sama dengan cookie yang dibuat, dan menetapkan nilai masa berlakunya yang telah berlalu, misalnya "Thu, 01 Jan 1970 00:00:00 GMT".

Perhatikan bahwa returnResponse harus dipanggil agar respons dikirim kembali ke klien.

Contoh

const setCookie = require('setCookie');

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

Sintaksis

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

Parameter

Parameter Jenis Deskripsi
name string Nama cookie. Nama tidak peka huruf besar/kecil.
value string Nilai cookie.
options objek Atribut cookie opsional: domain, expires, fallbackDomain,httpOnly, max - age, path, secure, dan sameSite. (Lihat Opsi, di bawah.)
noEncode boolean Jika true (benar), nilai cookie tidak akan dienkode. Nilai defaultnya adalah false.

Opsi

  • domain: Host yang menjadi tujuan pengiriman cookie. Jika ditetapkan ke nilai khusus 'auto', host akan secara otomatis dihitung menggunakan strategi berikut:

    • eTLD+1 dari header Forwarded, jika ada.
    • eTLD+1 dari header X-Forwarded-Host, jika ada.
    • eTLD+1 dari header Host.
  • expires: Masa berlaku maksimum cookie. Nilainya harus berupa string tanggal berformat UTC, misalnya "Sat, 26 Oct 1985 08:21:00 GMT". Jika expires dan max-age ditetapkan, max-age diprioritaskan.

  • httpOnly: Melarang JavaScript mengakses cookie jika true.

  • max-age: Jumlah detik hingga cookie berakhir masa berlakunya. Angka nol atau negatif akan langsung membuat masa berlaku cookie habis. Jika expires dan max-age ditetapkan, max-age diprioritaskan.

  • path: Jalur yang harus ada di URL yang diminta, atau browser tidak akan mengirim header Cookie.

  • secure: Jika ditetapkan ke true, cookie hanya dikirim ke server saat permintaan dibuat dari endpoint https:.

  • sameSite: Menyatakan bahwa cookie tidak boleh dikirim bersama permintaan lintas origin. Harus berupa 'strict', 'lax', atau 'none'.

Izin terkait

set_cookie


setPixelResponse

Menetapkan isi respons ke GIF 1x1, menetapkan header Jenis Konten ke 'gambar/gif', menetapkan header penyimpanan dalam cache sehingga agen pengguna tidak akan menyimpan respons ke dalam cache, dan menetapkan status respons ke 200.

Perhatikan bahwa returnResponse harus dipanggil agar respons dikirim kembali ke klien.

Sintaksis

setPixelResponse();

Izin terkait

Memerlukan izin access_response. Izin harus dikonfigurasi untuk mengizinkan akses setidaknya ke:

  • headers - Harus mengizinkan kunci berikut
    • content-type
    • cache-control
    • expires
    • pragma
  • body
  • status

setResponseBody

Menetapkan isi respons ke argumen.

Perhatikan bahwa returnResponse harus dipanggil agar respons dikirim kembali ke klien.

Sintaksis

setResponseBody(body[, encoding]);

Parameter

Parameter Jenis Deskripsi
body string Nilai yang ditetapkan sebagai isi respons.
encoding string Encoding karakter isi respons (Nilai defaultnya adalah 'utf8'). Nilai yang didukung meliputi 'ascii', 'utf8', 'utf16le', 'ucs2', 'base64', 'latin1', 'binary', dan 'hex'.

Izin terkait

Memerlukan izin access_response. Izin harus dikonfigurasi untuk mengizinkan akses setidaknya ke:

  • body

setResponseHeader

Menetapkan header dalam respons yang akan ditampilkan. Jika header dengan nama ini (tidak peka huruf besar-kecil) sebelumnya telah ditetapkan oleh API ini, panggilan yang terakhir akan menimpa atau menghapus nilai yang ditetapkan oleh pemanggil sebelumnya.

Perhatikan bahwa returnResponse harus dipanggil agar respons dikirim kembali ke klien.

Sintaksis

setResponseHeader(name, value);

Parameter

Parameter Jenis Deskripsi
name string Nama header. Nama header HTTP tidak peka huruf besar/kecil, sehingga nama header akan menjadi huruf kecil.
value string belum ditentukan Nilai header. Jika null atau belum ditentukan, header ini akan dihapus dari respons yang akan ditampilkan.

Izin terkait

Memerlukan izin access_response. Izin harus dikonfigurasi untuk mengizinkan akses setidaknya ke:

  • headers

setResponseStatus

Menetapkan kode status HTTP respons yang akan ditampilkan.

Perhatikan bahwa returnResponse harus dipanggil agar respons dikirim kembali ke klien.

Sintaksis

setResponseStatus(statusCode);

Parameter

Parameter Jenis Deskripsi
statusCode angka Kode status HTTP yang akan ditampilkan.

Izin terkait

Memerlukan izin access_response. Izin harus dikonfigurasi untuk mengizinkan akses setidaknya ke:

  • status

sha256

Menghitung digest SHA-256 input dan memanggil callback dengan digest yang dienkode dalam base64, kecuali jika objek options menentukan encoding output yang berbeda.

Signature dan perilaku API ini cocok dengan sha256 API untuk penampung web; tetapi, Template Kustom dalam penampung server harus menggunakan sha256Sync API untuk kode yang lebih sederhana.

Contoh

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

Sintaksis

sha256(input, onSuccess, options = undefined);

Parameter

Parameter Jenis Deskripsi
input string String yang akan di-hash.
onSuccess fungsi Dipanggil dengan digest yang dihasilkan, dienkode dalam base64, kecuali jika objek options mensyaratkan encoding output yang berbeda.
options objek Objek opsi Opsional untuk menentukan encoding output. Jika ditentukan, objek ini harus berisi kunci outputEncoding dengan nilai sebagai salah satu dari base64 atau hex.

Izin terkait

Tidak ada.


sha256Sync

Menghitung dan menampilkan digest SHA-256 input, yang dienkode dalam base64, kecuali jika objek options menentukan encoding output yang berbeda.

Contoh

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

Sintaksis

sha256Sync(input, options = undefined);

Parameter

Parameter Jenis Deskripsi
input string String yang akan di-hash.
options objek Objek opsi Opsional untuk menentukan encoding output. Jika ditentukan, objek ini harus berisi kunci outputEncoding dengan nilai sebagai salah satu dari base64 atau hex.

Izin terkait

Tidak ada.


templateDataStorage

Menampilkan objek dengan metode untuk mengakses penyimpanan data template. Dengan penyimpanan data template, data dapat dibagikan di seluruh eksekusi dalam satu template. Data yang disimpan dalam penyimpanan data template akan tetap ada di server yang menjalankan penampung. Umumnya ada beberapa server yang menjalankan penampung, sehingga menyimpan data dalam penyimpanan data template tidak menjamin bahwa setiap permintaan berikutnya akan memiliki akses ke data tersebut.

"Data" dalam nama "templateDataStorage" mengacu pada fakta bahwa hanya jenis data biasa non-fungsional yang dapat disimpan menggunakan API ini. Setiap fungsi atau referensi ke fungsi yang diteruskan ke API akan disimpan sebagai null.

Sintaksis

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

Contoh

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

Izin terkait

access_template_storage


testRegex

Menguji string berdasarkan ekspresi reguler yang dibuat via createRegex API. Menampilkan true jika ekspresi reguler cocok. Menampilkan false jika tidak cocok.

Ekspresi reguler yang dibuat dengan flag global bersifat stateful. Lihat dokumentasi Ekspresi Reguler untuk mengetahui detailnya.

Contoh

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

Sintaksis

testRegex(regex, string);

Parameter

Parameter Jenis Deskripsi
regex Objek Ekspresi reguler yang akan diuji, ditampilkan dari createRegex API.
string string String pengujian yang akan diuji.

Izin terkait

Tidak ada.


toBase64

Mengenkode string sebagai base64 atau base64url. Default-nya adalah encoding base64.

Sintaksis

toBase64(input, options);

Parameter

Parameter Jenis Deskripsi
input string String yang akan dienkode.
options objek Konfigurasi API opsional. (Lihat Opsi di bawah.)

Opsi

Opsi Jenis Deskripsi Versi minimum
urlEncoding boolean Jika benar, hasilnya akan dienkode menggunakan format base64url. 1.0.0

Contoh

const toBase64 = require('toBase64');

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

Izin terkait

Tidak ada.


BigQuery

Menampilkan objek yang menyediakan fungsi BigQuery.

Fungsi BigQuery.insert memungkinkan penulisan data ke tabel BigQuery. Metode ini menampilkan promise yang di-resolve setelah penyisipan berhasil atau ditolak karena terjadi error.

Saat penyisipan berhasil, promise akan di-resolve tanpa argumen.

Jika penyisipan gagal, promise akan ditolak dengan daftar objek yang berisi alasan error dan mungkin objek baris jika terjadi error. Ada kemungkinan bahwa sebagian permintaan berhasil diselesaikan, sementara bagian lainnya tidak berhasil. Dalam kasus ini, promise ditolak dengan mencantumkan daftar error untuk setiap baris yang memiliki objek baris untuk membantu membedakan baris mana yang disisipkan (Lihat Contoh Error di bawah). Lihat dokumentasi BigQuery tentang pesan error untuk mengetahui informasi selengkapnya.

Sintaksis

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

Parameter

Parameter Jenis Deskripsi
connectionInfo objek Menentukan informasi yang diperlukan untuk terhubung ke tabel BigQuery. Ada satu parameter opsional dan dua parameter wajib:
  • projectId - Opsional ID Project Google Cloud Platform. Jika dihilangkan, projectId akan diambil dari variabel lingkungan GOOGLE_CLOUD_PROJECT selama setelan izin access_bigquery untuk project ID ditetapkan ke * atau GOOGLE_CLOUD_PROJECT. Jika penampung server dijalankan di Google Cloud, GOOGLE_CLOUD_PROJECT sudah ditetapkan ke ID project Google Cloud.
  • datasetId - ID Set Data BigQuery.
  • tableId - ID Tabel BigQuery.
rows Array Baris yang akan disisipkan ke dalam tabel.
options objek Opsi permintaan opsional. Opsi yang didukung adalah: ignoreUnknownValues dan skipInvalidRows. Kunci opsi yang tidak dikenal akan diabaikan. (Lihat Opsi, di bawah.)

Opsi

Parameter Jenis Deskripsi
ignoreUnknownValues boolean Jika ditetapkan ke true, terima baris yang berisi nilai yang tidak cocok dengan skema. Nilai yang tidak diketahui akan diabaikan. Nilai defaultnya adalah false.
skipInvalidRows boolean Jika ditetapkan ke true, sisipkan semua baris permintaan yang valid, meskipun ada baris yang tidak valid. Nilai defaultnya adalah false.

Contoh Error

Error modul tidak ditemukan berarti bahwa penampung server Anda kemungkinan menjalankan versi lama image kami yang belum menyertakan modul BigQuery. Deploy ulang penampung server Anda dengan setelan yang sama menggunakan skrip deployment kami. Modul akan otomatis disertakan setelah operasi selesai.

Error bukan penyisipan biasanya memiliki satu objek error dengan kunci reason:

[{reason: 'invalid'}]

Error penyisipan dapat berisi beberapa objek error dengan array errors dan objek row. Berikut contoh respons error dari penyisipan dua baris yang hanya memiliki satu baris yang mengalami error:

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

Contoh

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

Izin terkait

access_bigquery


Firestore

Menampilkan objek yang menyediakan fungsi Firestore.

API ini hanya mendukung Firestore dalam mode Native, bukan Firestore dalam mode Datastore. Selain itu, API ini hanya mendukung penggunaan database default.

Firestore.read

Fungsi Firestore.read membaca data dari dokumen Firestore dan menampilkan promise yang di-resolve ke objek yang berisi dua kunci: id dan data. Jika dokumen tidak ada, promise akan ditolak dengan objek yang berisi kunci reason yang sama dengan not_found.

Sintaksis

Firestore.read(path[, options]);

Parameter

Parameter Jenis Deskripsi
path string Jalur ke dokumen atau pengumpulan. Tidak boleh diawali atau diakhiri dengan '/'.
options objek Opsi permintaan opsional. Opsi yang didukung adalah: projectId, disableCache, dan transaction. Kunci opsi yang tidak dikenal akan diabaikan. (Lihat Opsi, di bawah.)

Opsi

Parameter Jenis Deskripsi
projectId string Opsional. ID Project Google Cloud Platform. Jika dihilangkan, projectId akan diambil dari variabel lingkungan GOOGLE_CLOUD_PROJECT selama setelan izin access_firestore untuk project ID ditetapkan ke * atau GOOGLE_CLOUD_PROJECT. Jika penampung server dijalankan di Google Cloud, GOOGLE_CLOUD_PROJECT sudah ditetapkan ke ID project Google Cloud.
disableCache boolean Opsional. Menentukan apakah cache dinonaktifkan atau tidak. Penyimpanan ke cache diaktifkan secara default, sehingga hasilnya akan disimpan di cache selama permintaan.
transaction string Opsional. Nilai yang diambil dari Firestore.runTransaction(). Menandai operasi yang akan digunakan dalam transaksi.

Contoh

const Firestore = require('Firestore');

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

Firestore.write

Fungsi Firestore.write menulis data ke dokumen atau koleksi Firestore. Jika jalur mengarah ke pengumpulan, dokumen akan dibuat dengan ID yang dibuat secara acak. Jika jalur mengarah ke dokumen dan jalur tidak ada, jalur tersebut akan dibuat. API ini menampilkan promise yang di-resolve ke ID dokumen yang ditambahkan atau diubah. Jika opsi transaksi digunakan, API akan tetap menampilkan promise, tetapi tidak akan berisi ID karena penulisan dikelompokkan.

Sintaksis

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

Parameter

Parameter Jenis Deskripsi
path string Jalur ke dokumen atau pengumpulan. Tidak boleh diawali atau diakhiri dengan '/'.
input objek Nilai yang akan ditulis ke dokumen. Jika opsi penggabungan ditetapkan, API akan menggabungkan kunci dari input ke dalam dokumen.
options objek Opsi permintaan opsional. Opsi yang didukung adalah: projectId, merge, dan transaction. Kunci opsi yang tidak dikenal akan diabaikan. (Lihat Opsi, di bawah.)

Opsi

Parameter Jenis Deskripsi
projectId string Opsional. ID Project Google Cloud Platform. Jika dihilangkan, projectId akan diambil dari variabel lingkungan GOOGLE_CLOUD_PROJECT selama setelan izin access_firestore untuk project ID ditetapkan ke * atau GOOGLE_CLOUD_PROJECT. Jika penampung server dijalankan di Google Cloud, GOOGLE_CLOUD_PROJECT sudah ditetapkan ke ID project Google Cloud.
merge boolean Opsional. Jika ditetapkan ke true, gabungkan kunci dari input ke dokumen, jika tidak, metode akan menggantikan seluruh dokumen. Nilai defaultnya adalah false.
transaction string Opsional. Nilai yang diambil dari Firestore.runTransaction(). Menandai operasi yang akan digunakan dalam transaksi.

Contoh

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

Fungsi Firestore.query mengkueri pengumpulan yang diberikan dan menampilkan promise yang di-resolve ke array dokumen Firestore yang cocok dengan kondisi kueri. Objek dokumen Firestore sama seperti yang tercantum di atas dalam Firestore.read. Jika tidak ada dokumen yang cocok dengan kondisi kueri, promise yang ditampilkan akan di-resolve menjadi array kosong.

Sintaksis

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

Parameter

Parameter Jenis Deskripsi
collection string Jalur ke pengumpulan. Tidak boleh diawali atau diakhiri dengan '/'.
queryConditions Array Array kondisi kueri. Setiap kueri berbentuk array dengan tiga nilai: key, operator, dan expectedValue. Misalnya, [[‘id’, ‘<’, ‘5’], [‘state’, ‘==’, ‘CA’]].

Kondisi digabungkan bersama untuk membuat hasil kueri. Lihat operator kueri Firestore untuk mengetahui daftar operator kueri yang kompatibel.
options objek Opsi permintaan opsional. Opsi yang didukung adalah: projectId, disableCache, limit, dan transaction. Kunci opsi yang tidak dikenal akan diabaikan. (Lihat Opsi, di bawah.)

Opsi

Parameter Jenis Deskripsi
projectId string Opsional. ID Project Google Cloud Platform. Jika dihilangkan, projectId akan diambil dari variabel lingkungan GOOGLE_CLOUD_PROJECT selama setelan izin access_firestore untuk project ID ditetapkan ke * atau GOOGLE_CLOUD_PROJECT. Jika penampung server dijalankan di Google Cloud, GOOGLE_CLOUD_PROJECT sudah ditetapkan ke ID project Google Cloud.
disableCache boolean Opsional. Menentukan apakah cache dinonaktifkan atau tidak. Penyimpanan ke cache diaktifkan secara default, sehingga hasilnya akan disimpan di cache selama permintaan.
limit angka Opsional. Mengubah jumlah maksimum hasil yang ditampilkan oleh kueri, jumlah defaultnya adalah 5.
transaction string Opsional. Nilai yang diambil dari Firestore.runTransaction(). Menandai operasi yang akan digunakan dalam transaksi.

Contoh

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

Fungsi Firestore.runTransaction memungkinkan pengguna membaca dan menulis secara otomatis dari Firestore. Jika terjadi operasi tulis serentak atau konflik transaksi lainnya, transaksi tersebut akan dicoba lagi hingga dua kali. Jika gagal setelah total tiga kali percobaan, API akan menolak dengan error. API ini menampilkan promise yang di-resolve ke array ID dokumen, untuk setiap operasi tulis, jika transaksi berhasil, dan akan menolak dengan error jika transaksi gagal.

Sintaksis

Firestore.runTransaction(callback[, options]);

Parameter

Parameter Jenis Deskripsi
callback fungsi Callback yang dipanggil dengan ID transaksi string. ID transaksi dapat diteruskan ke panggilan API baca/tulis/kueri. Fungsi callback ini harus menampilkan promise. Callback dapat berjalan hingga tiga kali sebelum gagal.
options objek Opsi permintaan opsional. Satu-satunya opsi yang didukung adalah projectId. Kunci opsi yang tidak dikenal akan diabaikan. (Lihat Opsi, di bawah.)

Opsi

Parameter Jenis Deskripsi
projectId string Opsional. ID Project Google Cloud Platform. Jika dihilangkan, projectId akan diambil dari variabel lingkungan GOOGLE_CLOUD_PROJECT selama setelan izin access_firestore untuk project ID ditetapkan ke * atau GOOGLE_CLOUD_PROJECT. Jika penampung server dijalankan di Google Cloud, GOOGLE_CLOUD_PROJECT sudah ditetapkan ke ID project Google Cloud.

Contoh

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

Contoh Error

Error yang tersedia di setiap fungsi Firestore akan ditolak dengan objek yang berisi kunci reason:

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

Alasan error dapat mencakup, tetapi tidak terbatas pada Kode Error REST API Firestore.

Izin terkait

access_firestore


JSON

Menampilkan objek yang menyediakan fungsi JSON.

Fungsi parse() akan mengurai string JSON untuk membuat nilai atau objek yang dijelaskan oleh string. Jika nilainya tidak dapat diuraikan (misalnya, format JSON salah), fungsi ini akan menampilkan undefined. Jika nilai input bukan berupa string, input tersebut akan dikonversi menjadi string.

Fungsi stringify() mengonversi input menjadi string JSON. Jika nilai tidak dapat diuraikan (misalnya, objek memiliki siklus), metode akan menampilkan undefined.

Contoh

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

Sintaksis

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

Izin terkait

Tidak ada.


Math

Objek yang menyediakan fungsi Math.

Sintaksis

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

Parameter

Parameter fungsi matematika dikonversi menjadi angka.

Izin terkait

Tidak ada.


Messages

Berbagai API berikut bersinergi agar pesan dapat diteruskan di antara bagian penampung yang berbeda.


addMessageListener

Menambahkan fungsi yang akan memproses pesan jenis tertentu. Saat pesan dari jenis tersebut dikirim menggunakan API sendMessage (biasanya oleh tag), callback akan dijalankan secara sinkron. Callback dijalankan dengan dua parameter:

  1. messageType:string
  2. message:Object

Jika callback ditambahkan di klien, callback akan menerima pesan di semua peristiwa yang dibuat klien. Jika callback hanya boleh menerima pesan dari peristiwa tertentu, maka kaitkan API ini ke peristiwa menggunakan bindToEvent dalam fungsi onStart API runContainer. Lihat contohnya.

Sintaksis

const addMessageListener = require('addMessageListener');

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

Parameter

Parameter Jenis Deskripsi
messageType string Jenis pesan yang akan diproses. Jika bukan string, nilai ini akan dikonversi menjadi string.
callback fungsi Callback yang akan dijalankan saat pesan dari jenis pesan yang berlaku dikirim. Jika callback bukan merupakan fungsi, API tidak akan melakukan apa pun.

Contoh

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

Izin terkait

Memerlukan izin use_message. Izin harus dikonfigurasi untuk mengizinkan setidaknya:

  • Jenis pesan dengan Usage dari listen atau listen_and_send.

hasMessageListener

Menampilkan true jika pemroses pesan telah ditambahkan untuk jenis pesan yang diberikan. Jika tidak, false akan ditampilkan.

Sintaksis

const hasMessageListener = require('hasMessageListener');

hasMessageListener('send_pixel');

Izin terkait

Tidak ada.


sendMessage

Mengirim pesan dari jenis yang ditentukan ke pemroses terdaftar. API ini dapat digunakan untuk mengirim pesan dari tag kembali ke klien yang menjalankan penampung.

Sintaksis

const sendMessage = require('sendMessage');

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

Parameter

Parameter Jenis Deskripsi
messageType string Jenis pesan yang akan dikirim. Jika bukan string, nilai ini akan dikonversi menjadi string.
message objek Pesan yang akan dikirim. Jika pesan bukan objek, API tidak akan melakukan apa pun.

Izin terkait

Memerlukan izin use_message. Izin harus dikonfigurasi untuk mengizinkan setidaknya:

  • Jenis pesan dengan Usage dari listen_and_send atau send.

Object

Menampilkan objek yang menyediakan metode Object.

Metode keys() menyediakan perilaku Object.keys() Library Standar. Metode ini menampilkan array nama properti yang dapat dihitung milik objek tertentu dalam urutan yang sama seperti pada loop for...in.... Jika nilai input bukan objek, nilai tersebut akan dikonversi menjadi objek.

Metode values() menyediakan perilaku Object.values() Library Standar. Metode ini menampilkan array nilai properti yang dapat dihitung milik objek tertentu dalam urutan yang sama seperti pada loop for...in.... Jika nilai input bukan objek, nilai tersebut akan dikonversi menjadi objek.

Metode entries() menyediakan perilaku Object.entries() Library Standar. Metode ini menampilkan array pasangan [key, value] properti yang dapat dihitung milik objek tertentu dalam urutan yang sama seperti pada loop for...in.... Jika nilai input bukan objek, nilai tersebut akan dikonversi menjadi objek.

Metode freeze() menyediakan perilaku Object.freeze() Library Standar. Objek beku tidak dapat diubah lagi; pembekuan objek akan mencegah penambahan properti baru ke dalamnya, penghapusan properti yang ada, dan pengubahan nilai properti yang ada. freeze() menampilkan objek yang sama yang diteruskan. Argumen primitif atau null akan diperlakukan seolah-olah merupakan objek yang dibekukan, dan akan ditampilkan.

Metode delete() menyediakan perilaku operator 'delete' Library Standar. Metode ini akan menghapus kunci yang diberikan dari objek kecuali jika objek dibekukan. Seperti operator 'delete' Library Standar, metode ini akan menampilkan true jika nilai input pertama (objectInput) adalah objek yang tidak dibekukan meskipun jika nilai input kedua (keyToDelete) menentukan kunci yang tidak ada. Metode ini akan menampilkan false dalam semua kasus lainnya. Namun ada perbedaan dengan operator 'delete' Library Standar dalam hal berikut:

  • keyToDelete tidak boleh berupa string yang dipisahkan titik yang menentukan kunci bertingkat.
  • delete() tidak boleh digunakan untuk menghapus elemen dari array.
  • delete() tidak boleh digunakan untuk menghapus properti dari cakupan global.

Sintaksis

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

Parameter

Object.keys

Parameter Jenis Deskripsi
objectInput apa pun Objek yang kuncinya akan dihitung. Jika bukan objek, input akan dikonversi menjadi sebuah objek.

Object.values

Parameter Jenis Deskripsi
objectInput apa pun Objek yang nilainya akan dihitung. Jika bukan objek, input akan dikonversi menjadi sebuah objek.

Object.entries

Parameter Jenis Deskripsi
objectInput apa pun Objek yang pasangan nilai kuncinya akan dihitung. Jika bukan objek, input akan dikonversi menjadi sebuah objek.

Object.freeze

Parameter Jenis Deskripsi
objectInput apa pun Objek yang akan dibekukan. Jika bukan objek, input akan diperlakukan sebagai objek yang dibekukan.

Object.delete

Parameter Jenis Deskripsi
objectInput apa pun Objek yang kuncinya akan dihapus.
keyToDelete string Kunci level atas yang akan dihapus.

Contoh

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

Menampilkan objek yang menyediakan metode untuk berinteraksi dengan promise.

Promise secara fungsional setara dengan promise JavaScript. Setiap instance memiliki tiga metode yang menampilkan Promise, yang memungkinkan tindakan lebih lanjut saat promise selesai:

  • .then() - Menangani kasus yang di-resolve dan ditolak. Di sini diperlukan dua callback: satu untuk kasus berhasil dan satu untuk kasus gagal.
  • .catch() - Menangani kasus yang ditolak saja. Dibutuhkan satu callback sebagai parameter.
  • .finally() - Memberikan cara agar kode dijalankan baik promise di-resolve atau ditolak. Dibutuhkan satu callback sebagai parameter yang dipanggil tanpa argumen.

Variabel yang menampilkan promise sama dengan nilai promise yang di-resolve, atau false jika promise ditolak.

Contoh

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

Menampilkan promise yang:

  • me-resolve saat semua input telah me-resolve, atau
  • menolak saat salah satu input menolak

Sintaksis

Promise.all(inputs);

Parameter

Parameter Jenis Deskripsi
inputs Array Array nilai atau promise. Jika input bukan promise, input akan diteruskan seolah-olah merupakan nilai promise yang di-resolve. Menampilkan error jika inputnya bukan array.

Contoh

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

Izin terkait

Tidak ada.

Promise.create

Membuat promise yang secara fungsional setara dengan promise JavaScript.

Sintaksis

Promise.create(resolver);

Parameter

Parameter Jenis Deskripsi
resolver fungsi Fungsi yang dipanggil dengan dua fungsi -- me-resolve dan menolak. Promise yang ditampilkan akan di-resolve atau ditolak saat parameter yang terkait dipanggil. Menampilkan error jika resolver bukan fungsi.

Contoh

const Promise = require('Promise');

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

Izin terkait

Tidak ada.

API Pengujian

API ini berfungsi bersama pengujian JavaScript dengan sandbox untuk membuat pengujian bagi template kustom di Google Tag Manager. API pengujian ini tidak memerlukan pernyataan require(). [Pelajari pengujian template kustom lebih lanjut].


assertApi

Menampilkan objek matcher yang dapat digunakan untuk membuat pernyataan secara lancar tentang API tertentu.

Sintaksis

assertApi(apiName)

Parameter

Parameter Jenis Deskripsi
apiName string Nama API yang akan diperiksa; string yang sama seperti yang diteruskan ke require().

Matcher

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

Contoh

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

assertThat

API assertThat dibuat sesuai model library [Truth] Google. API ini menampilkan objek yang dapat digunakan untuk membuat pernyataan secara lancar tentang nilai subjek. Kegagalan pernyataan akan segera menghentikan pengujian dan menandainya sebagai gagal. Namun, kegagalan dalam satu pengujian tidak akan memengaruhi kasus pengujian lainnya.

Sintaksis

assertThat(actual, opt_message)

Parameter

Parameter Jenis Deskripsi
actual apa pun Nilai yang akan digunakan dalam pemeriksaan yang lancar.
opt_message string Pesan opsional yang akan dicetak jika pernyataan gagal.

Matcher

Matcher Deskripsi
isUndefined() Menyatakan bahwa subjek adalah undefined.
isDefined() Menyatakan bahwa subjek bukan undefined.
isNull() Menyatakan bahwa subjek adalah null.
isNotNull() Menyatakan bahwa subjek bukan null.
isFalse() Menyatakan bahwa subjek adalah false.
isTrue() Menyatakan bahwa subjek adalah true.
isFalsy() Menyatakan bahwa subjek falsy (bersifat salah). Nilai falsy adalah undefined, null, false, NaN, 0, dan '' (string kosong).
isTruthy() Menyatakan bahwa subjek truthy (bersifat benar). Nilai falsy adalah undefined, null, false, NaN, 0, dan '' (string kosong).
isNaN() Menyatakan bahwa subjek adalah nilai NaN.
isNotNaN() Menyatakan bahwa subjek adalah nilai apa pun selain NaN.
isInfinity() Menyatakan bahwa subjek adalah nilai tak terbatas positif atau negatif.
isNotInfinity() Menyatakan bahwa subjek adalah nilai apa pun selain nilai tak terbatas positif atau negatif.
isEqualTo(expected) Menyatakan bahwa subjek sama dengan nilai yang diberikan. Ini adalah perbandingan nilai, bukan perbandingan referensi. Konten objek dan array dibandingkan secara rekursif.
isNotEqualTo(expected) Menyatakan bahwa subjek tidak sama dengan nilai yang diberikan. Ini adalah perbandingan nilai, bukan perbandingan referensi. Konten objek dan array dibandingkan secara rekursif.
isAnyOf(...expected) Menyatakan bahwa subjek sama dengan salah satu nilai yang diberikan. Ini adalah perbandingan nilai, bukan perbandingan referensi. Konten objek dan array dibandingkan secara rekursif.
isNoneOf(...expected) Menyatakan bahwa subjek tidak sama dengan salah satu nilai yang diberikan. Ini adalah perbandingan nilai, bukan perbandingan referensi. Konten objek dan array dibandingkan secara rekursif.
isStrictlyEqualTo(expected) Menyatakan bahwa subjek sama persis (===) dengan nilai yang diberikan.
isNotStrictlyEqualTo(expected) Menyatakan bahwa subjek tidak sama persis (!==) dengan nilai yang diberikan.
isGreaterThan(expected) Menyatakan bahwa subjek lebih besar dari (>) nilai yang diberikan dalam perbandingan yang diurutkan.
isGreaterThanOrEqualTo(expected) Menyatakan bahwa subjek lebih besar dari atau sama dengan (>=) nilai yang diberikan dalam perbandingan yang diurutkan.
isLessThan(expected) Menyatakan bahwa subjek lebih kecil dari (<) nilai yang diberikan dalam perbandingan yang diurutkan.
isLessThanOrEqualTo(expected) Menyatakan bahwa subjek lebih kecil dari atau sama dengan (<=) nilai yang diberikan dalam perbandingan yang diurutkan.
contains(...expected) Menyatakan bahwa subjek adalah array atau string yang berisi semua nilai yang diberikan dalam urutan apa pun. Ini adalah perbandingan nilai, bukan perbandingan referensi. Konten objek dan array dibandingkan secara rekursif.
doesNotContain(...expected) Menyatakan bahwa subjek adalah array atau string yang tidak berisi nilai yang diberikan. Ini adalah perbandingan nilai, bukan perbandingan referensi. Konten objek dan array dibandingkan secara rekursif.
containsExactly(...expected) Menyatakan bahwa subjek adalah array yang berisi semua nilai yang diberikan dalam urutan apa pun dan tidak ada nilai lain. Ini adalah perbandingan nilai, bukan perbandingan referensi. Konten objek dan array dibandingkan secara rekursif.
doesNotContainExactly(...expected) Menyatakan bahwa subjek adalah array yang berisi kumpulan nilai yang berbeda dari nilai yang diberikan dalam urutan apa pun. Ini adalah perbandingan nilai, bukan perbandingan referensi. Konten objek dan array dibandingkan secara rekursif.
hasLength(expected) Menyatakan bahwa subjek adalah array atau string dengan panjang yang diberikan. Pernyataan selalu gagal jika nilainya bukan array atau string.
isEmpty() Menyatakan bahwa subjek adalah array atau string yang kosong (panjang = 0). Pernyataan selalu gagal jika nilainya bukan array atau string.
isNotEmpty() Menyatakan bahwa subjek adalah array atau string yang tidak kosong (panjang > 0). Pernyataan selalu gagal jika nilainya bukan array atau string.
isArray() Menyatakan bahwa jenis subjek adalah array.
isBoolean() Menyatakan bahwa jenis subjek adalah boolean.
isFunction() Menyatakan bahwa jenis subjek adalah fungsi.
isNumber() Menyatakan bahwa jenis subjek adalah angka.
isObject() Menyatakan bahwa jenis subjek adalah objek.
isString() Menyatakan bahwa jenis subjek adalah string.

Contoh

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

Segera menggagalkan pengujian yang aktif dan mencetak pesan yang diberikan, jika disediakan.

Sintaksis

fail(opt_message);

Parameter

Parameter Jenis Deskripsi
opt_message string Teks pesan error opsional.

Contoh

fail('This test has failed.');

mock

API mock memungkinkan Anda mengganti perilaku API dengan sandbox. API tiruan ini aman digunakan dalam kode template, tetapi hanya beroperasi dalam mode pengujian. Model direset sebelum setiap pengujian dijalankan.

Sintaksis

mock(apiName, returnValue);

Parameter

Parameter Jenis Deskripsi
apiName string Nama API yang akan ditiru; string yang sama seperti yang diteruskan ke require()
returnValue apa pun Nilai yang akan ditampilkan untuk API atau fungsi yang dipanggil sebagai pengganti API. Jika returnValue adalah fungsi, fungsi tersebut dipanggil sebagai pengganti API dengan sandbox; jika returnValue adalah sesuatu selain fungsi, nilai tersebut akan ditampilkan sebagai pengganti API dengan sandbox.

Contoh

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

mockObject

API mockObject memungkinkan Anda mengganti perilaku API dengan sandbox yang menampilkan objek. API ini aman digunakan dalam kode template, tetapi hanya beroperasi dalam mode pengujian. Model direset sebelum setiap pengujian dijalankan.

Sintaksis

mockObject(apiName, objectMock);

Parameter

Parameter Jenis Deskripsi
apiName string Nama API yang akan ditiru; string yang sama seperti yang diteruskan ke require()
objectMock objek Nilai yang akan ditampilkan untuk API atau fungsi yang dipanggil sebagai pengganti API. Harus berupa objek.

Contoh

const storage = {};
let firestoreId = 1;

function asTestPromise(result) {
  return {
    then: (callback) => callback(result)
  };
}

mockObject('Firestore', {
  write: (collection, input) => {
    storage[collection + '/' + (++firestoreId)] = input;
    return asTestPromise(firestoreId);
  },
  read: (document) => asTestPromise({data: storage[document]})
});

runCode

Menjalankan kode untuk template, yaitu konten tab Kode, di lingkungan pengujian saat ini dengan objek data input tertentu.

Sintaksis

runCode(data)

Parameter

Parameter Jenis Deskripsi
data objek Objek data yang akan digunakan dalam pengujian.

Nilai Hasil

Menampilkan nilai variabel untuk template variabel; menampilkan undefined untuk semua jenis template lainnya.

Contoh

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