서버 측 태그 지정 API

이 문서에서는 서버 측 태그 지정을 위한 API에 대해 설명합니다.


addEventCallback

이벤트 종료 시 호출되는 콜백 함수를 등록합니다. 콜백은 이벤트의 모든 태그가 실행된 경우 호출됩니다. 콜백에는 두 개의 값(함수를 호출하는 컨테이너의 ID, 이벤트에 대한 정보가 포함된 객체)이 전달됩니다.

이 API가 태그에 사용되면 현재 이벤트와 연결됩니다. 이 API는 클라이언트에서 사용되는 경우 runContainer API의 bindToEvent 함수를 사용하여 특정 이벤트에 결합해야 합니다. 자세한 내용은 를 참고하세요.

문법

const addEventCallback = require('addEventCallback');

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

매개변수

매개변수 유형 설명
callback 함수 이벤트 종료 시 호출할 함수입니다.

eventData 객체에는 다음 데이터가 포함됩니다.

키 이름 유형 설명
tags 배열 태그 데이터 객체의 배열입니다. 이벤트 중에 실행된 모든 태그는 이 배열에 항목이 있습니다. 태그 데이터 객체에는 태그의 ID(id), 실행 상태(status), 실행 시간(executionTime)이 포함됩니다. 또한 태그 데이터에는 태그에 구성된 추가 태그 메타데이터도 포함됩니다.

클라이언트:

const addEventCallback = require('addEventCallback');
const claimRequest = require('claimRequest');
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const logToConsole = require('logToConsole');
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');

claimRequest();

const events = extractEventsFromMpv1();
let eventsCompleted = 0;
events.forEach((evt, i) => {
  runContainer(evt, /* onComplete= */ (bindToEvent) => {
    bindToEvent(addEventCallback)((containerId, eventData) => {
      logToConsole('Event Number: ' + i);
      eventData.tags.forEach((tag) => {
        logToConsole('Tag ID: ' + tag.id);
        logToConsole('Tag Status: ' + tag.status);
        logToConsole('Tag Execution Time: ' + tag.executionTime);
      });
    });
    if (events.length === ++eventsCompleted) {
      returnResponse();
    }
  });
});

태그:

const addEventCallback = require('addEventCallback');

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

관련 권한

read_event_metadata


callLater

함수 호출이 비동기식으로 발생하도록 예약합니다. 이 함수는 현재 코드가 반환된 후에 호출됩니다. setTimeout(<function>, 0)과 동일합니다.

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

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

문법

callLater(function)

매개변수

매개변수 유형 설명
function 함수 호출할 함수입니다.

관련 권한

없음.


claimRequest

요청의 소유권을 주장하려면 클라이언트에서 이 API를 사용합니다. 요청의 소유권이 주장되면 컨테이너에서 추가 클라이언트를 실행하지 않습니다.

태그 또는 변수에서 이 API를 호출하면 예외가 발생합니다. 클라이언트에서 반환한 후 이 API를 호출하면(예: callLater 또는 runContainer onComplete 함수와 같은 비동기 콜백에서 호출되는 경우) 예외가 발생합니다.

클라이언트는 runContainer API를 호출하기 전에 이 API를 사용하여 요청의 소유권을 주장해야 합니다.

const claimRequest = require('claimRequest');

claimRequest();

문법

claimRequest();

관련 권한

없음.


computeEffectiveTldPlusOne

지정된 도메인 또는 URL의 유효한 최상위 도메인 + 1(eTLD+1)을 반환합니다. eTLD+1은 공개 접미어 목록 규칙에 따라 도메인을 평가하여 계산됩니다. 일반적으로 eTLD+1은 쿠키를 설정할 수 있는 최상위 도메인입니다.

인수가 null이거나 정의되지 않은 경우 인수 값이 변경되지 않은 상태로 반환됩니다. 그렇지 않으면 인수가 문자열로 변환됩니다. 인수가 유효한 도메인이나 URL이 아니면 빈 문자열이 반환됩니다. 서버가 공개 접미어 목록을 가져올 수 없는 경우 인수 값이 변경되지 않은 상태로 반환됩니다.

const computeEffectiveTldPlusOne = require('computeEffectiveTldPlusOne');

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

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

문법

computeEffectiveTldPlusOne(domainOrUrl);

매개변수

매개변수 유형 설명
domainOrUrl 문자열 eTLD+1을 계산할 도메인 또는 URL입니다.

관련 권한

없음.


createRegex

새 정규식 인스턴스를 만들어 객체에 래핑된 인스턴스를 반환합니다. 정규식에 직접 액세스할 수 없습니다. 그러나 testRegex API, String.replace(), String.match(), 및 String.search()에 전달할 수 있습니다.

정규식이 잘못되었거나 서버에서 Re2를 사용할 수 없는 경우 null을 반환합니다.

이 API는 Re2 구현을 사용합니다. 서버 Docker 이미지는 버전 2.0.0 이상이어야 합니다.

const createRegex = require('createRegex');

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

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

문법

createRegex(pattern, flags);

매개변수

매개변수 유형 설명
pattern 문자열 정규 표현식의 텍스트입니다.
flags 문자열 만들어지는 정규식에 대한 플래그를 포함하는 선택사항 문자열입니다. `g` (전역) 및 `i` (대소문자 무시)가 지원됩니다. 다른 모든 문자는 자동으로 무시됩니다.

관련 권한

없음

최소 이미지 버전

2.0.0


decodeUri

제공된 URI에서 인코딩된 문자를 디코딩합니다. 디코딩된 URI를 나타내는 문자열을 반환합니다. 잘못된 입력이 제공되면 undefined를 반환합니다.

const decodeUri = require('decodeUri');

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

문법

decodeUri(encoded_uri);

매개변수

매개변수 유형 설명
encoded_uri 문자열 encodeUri() 또는 다른 방법으로 인코딩된 URI입니다.

관련 권한

없음.


decodeUriComponent

제공된 URI 구성요소에서 인코딩된 문자를 디코딩합니다. 디코딩된 URI 구성요소를 나타내는 문자열을 반환합니다. 잘못된 입력이 지정되면 undefined를 반환합니다.

const decodeUriComponent = require('decodeUriComponent');

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

문법

decodeUriComponent(encoded_uri_component);

매개변수

매개변수 유형 설명
encoded_uri_component 문자열 encodeUriComponent() 또는 다른 방법으로 인코딩된 URI 구성요소입니다.

관련 권한

없음.


encodeUri

특수문자를 이스케이프 처리하여 인코딩된 URI(Uniform Resource Identifier)를 반환합니다. URI로 인코딩되어 제공된 문자열을 나타내는 문자열을 반환합니다.

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

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

문법

encodeUri(uri);

매개변수

매개변수 유형 설명
uri 문자열 전체 URI입니다.

관련 권한

없음.


encodeUriComponent

특수문자를 이스케이프 처리하여 인코딩된 URI(Uniform Resource Identifier)를 반환합니다. URI로 인코딩되어 제공된 문자열을 나타내는 문자열을 반환합니다.

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

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

문법

encodeUriComponent(str);

매개변수

매개변수 유형 설명
str 문자열 URI의 구성요소입니다.

관련 권한

없음.


extractEventsFromMpv1

수신되는 측정 프로토콜 V1 요청을 통합 스키마 형식의 이벤트 목록으로 변환합니다. 추출된 이벤트 목록을 반환합니다. 요청이 올바른 형식이 아닌 경우 오류가 발생합니다.

const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const isRequestMpv1 = require('isRequestMpv1');

if (isRequestMpv1()) {
  const events = extractEventsFromMpv1();
  for (let i = 0; i < events.length; ++i) {
    const event = events[i];
    // Process event.
  }
}

문법

extractEventsFromMpv1();

관련 권한

read_request 권한이 필요합니다. 최소한 다음과 같은 액세스 권한을 허용하도록 권한을 구성해야 합니다.

  • body
  • query parameters

extractEventsFromMpv2

수신되는 측정 프로토콜 V2 요청을 통합 스키마 형식의 이벤트 목록으로 변환합니다. 추출된 이벤트 목록을 반환합니다. 요청이 올바른 형식이 아닌 경우 오류가 발생합니다.

const extractEventsFromMpv2 = require('extractEventsFromMpv2');
const isRequestMpv2 = require('isRequestMpv2');

if (isRequestMpv2()) {
  const events = extractEventsFromMpv2();
  for (let i = 0; i < events.length; ++i) {
    const event = events[i];
    // Process event.
  }
}

문법

extractEventsFromMpv2();

관련 권한

read_request 권한이 필요합니다. 최소한 다음과 같은 액세스 권한을 허용하도록 권한을 구성해야 합니다.

  • body
  • query parameters

fromBase64

base64로 인코딩된 문자열을 디코딩합니다. 입력이 잘못된 경우 undefined를 반환합니다.

문법

fromBase64(base64EncodedString);

매개변수

매개변수 유형 설명
base64EncodedString 문자열 base64로 인코딩된 문자열입니다.

const fromBase64 = require('fromBase64');

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

관련 권한

없음.


generateRandom

지정된 범위 내 임의 숫자(정수)를 반환합니다.

const generateRandom = require('generateRandom');

const randomValue = generateRandom(0, 10000000);

문법

generateRandom(min, max);

매개변수

매개변수 유형 설명
min 숫자 반환된 정수의 최소 잠재 값입니다(반환된 정수 포함).
max 숫자 반환된 정수의 최대 잠재 값입니다(반환된 정수 포함).

관련 권한

없음.


getAllEventData

이벤트 데이터의 사본을 반환합니다.

문법

getAllEventData();

관련 권한

read_event_data


getClientName

현재 클라이언트의 이름이 포함된 문자열을 반환합니다.

문법

getClientName();

관련 권한

read_container_data


getContainerVersion

현재 컨테이너에 대한 데이터가 포함된 객체를 반환합니다. 반환된 객체에는 다음 필드가 포함됩니다.

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

const getContainerVersion = require('getContainerVersion');

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

문법

getContainerVersion();

관련 권한

read_container_data


getCookieValues

지정된 이름의 모든 쿠키 값이 포함된 배열을 반환합니다.

const getCookieValues = require('getCookieValues');

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

문법

getCookieValues(name[, noDecode]);

매개변수

매개변수 유형 설명
name 문자열 쿠키의 이름입니다.
noDecode 불리언 true인 경우 쿠키 값이 반환되기 전에 디코딩되지 않습니다. 기본값은 false입니다.

관련 권한

get_cookies


getEventData

이벤트 데이터의 지정된 경로에 있는 값의 사본을 반환합니다. 이벤트 데이터가 없거나 지정된 경로에 값이 없으면 undefined를 반환합니다.

const getEventData = require('getEventData');

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

매개변수

매개변수 유형 설명
keyPath 모두 경로 구성요소가 점으로 구분된 키 경로입니다. 경로 구성요소는 객체의 키 또는 배열의 색인입니다. keyPath가 문자열이 아니면 문자열로 변환됩니다.

문법

getEventData(keyPath);

관련 권한

read_event_data


getGoogleAuth

sendHttpGet 또는 sendHttpRequest와 함께 사용하면 Google Cloud API의 승인 헤더가 포함되는 승인 객체를 반환합니다. 이 API는 애플리케이션 기본 사용자 인증 정보를 사용하여 서버 환경에서 사용자 인증 정보를 자동으로 찾습니다.

const getGoogleAuth = require('getGoogleAuth');
const logToConsole = require('logToConsole');
const sendHttpGet = require('sendHttpGet');

const auth = getGoogleAuth({
  scopes: ['https://www.googleapis.com/auth/datastore']
});

sendHttpGet(
  'https://firestore.googleapis.com/v1/projects/my-project/databases/(default)/documents/collection/document',
  {authorization: auth}
).then((result) => {
  if (result.statusCode >= 200 && result.statusCode < 300) {
    logToConsole('Result: ' + result.body);
    data.gtmOnSuccess();
  } else {
    data.gtmOnFailure();
  }
});

문법

getGoogleAuth(scopes);

매개변수

매개변수 유형 설명
scopes 배열 액세스를 요청할 OAuth 2.0 Google API 범위 배열입니다.

관련 권한

use_google_credentials 권한이 필요합니다. 권한은 허용된 범위로 하나 이상 구성되어야 합니다.


getGoogleScript

사전에 지정된 Google 스크립트 집합에서 리소스를 가져오고 스크립트 및 연결된 캐싱 메타데이터와 함께 프로미스를 반환합니다.

프로미스는 scriptmetadata 두 키가 포함된 객체로 결정됩니다. 요청이 실패하면 프로미스가 거부되고 reason 키가 반환됩니다.

metadata 객체에는 리소스 응답 헤더에 따라 다음과 같은 캐싱 메타데이터가 포함됩니다. 각 필드는 리소스 응답에 해당하는 헤더가 있는 경우에만 존재합니다.

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

const getGoogleScript = require('getGoogleScript');

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

문법

getGoogleScript(script[, options]);

매개변수

매개변수 유형 설명
script 문자열 스크립트의 이름입니다. 지원되는 스크립트는 'ANALYTICS', 'GTAG', 'GTM'입니다.

'ANALYTICS' 옵션은 https://www.google-analytics.com/analytics.js에서 Google 애널리틱스 스크립트를 가져옵니다.

'GTAG' 옵션은 https://www.googletagmanager.com/gtag/js에서 전체 사이트 태그(gtag.js) 스크립트를 가져옵니다.

'GTM' 옵션은 https://www.googletagmanager.com/gtm.js에서 Google 태그 관리자 스크립트를 가져옵니다.
options 객체 요청 옵션입니다(선택사항). 지원되는 옵션은 아래를 참고하세요.

옵션

옵션 유형 설명
id 문자열 gtag 측정 ID가 있는 'GTAG' 및 웹 컨테이너 ID가 있는 'GTM'(예: GTM-XXXX)에 적용됩니다.
debug 모두 참인 경우 측정 스크립트의 디버그 버전을 요청하고 반환합니다.
timeout 숫자 요청 제한 시간(밀리초)입니다. 양수가 아닌 값은 무시됩니다. 요청이 시간을 초과하면 스크립트 값의 경우 undefined, 메타데이터 객체의 경우 {}와 함께 콜백이 호출됩니다.

알 수 없는 옵션 키는 무시됩니다.

관련 권한

send_http 권한이 필요합니다. 최소한 다음과 같은 액세스 권한을 허용하도록 권한을 구성해야 합니다.

  • Google Domains 허용

getRemoteAddress

Forwarded 및 X-Forwarded-For와 같은 요청 헤더를 읽어 IPv4의 경우 12.345.67.890, IPv6의 경우 2001:0db8:85a3:0:0:8a2e:0370:7334와 같이 요청이 시작된 IP 주소의 문자열 표현을 반환합니다. 참고: 이 API는 시작 IP를 찾기 위해 최선을 다하지만, 결과가 정확하다고 보장할 수는 없습니다.

문법

getRemoteAddress();

관련 권한

read_request 권한이 필요합니다. 최소한 다음과 같은 액세스 권한을 허용하도록 권한을 구성해야 합니다.

  • 헤더 ForwardedX-Forwarded-For
  • 원격 IP 주소

getRequestBody

요청 본문을 문자열로 반환합니다(있는 경우). 그렇지 않은 경우 undefined를 반환합니다.

문법

getRequestBody();

관련 권한

read_request


getRequestHeader

이름이 지정된 요청 헤더의 값을 문자열로 반환합니다(있는 경우). 그렇지 않은 경우 undefined를 반환합니다. 헤더가 반복되면 반환된 값이 ', '와 결합됩니다.

const getRequestHeader = require('getRequestHeader');

const host = getRequestHeader('host');

문법

getRequestHeader(headerName);

매개변수

매개변수 유형 설명
headerName 문자열 헤더 이름입니다. 이 값은 대소문자를 구분하지 않습니다.

관련 권한

read_request


getRequestMethod

요청 메서드(예: 'GET' 또는 'POST')를 문자열로 반환합니다.

const getRequestMethod = require('getRequestMethod');

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

문법

getRequestMethod();

관련 권한

없음.


getRequestPath

쿼리 문자열 없이 요청 경로를 반환합니다. 예를 들어 URL이 '/foo?id=123'인 경우 '/foo'를 반환합니다. 경로에서 서버 컨테이너 URL 접미어를 자동으로 제거합니다. 예를 들어 서버 컨테이너 URL이 https://example.com/analytics이고 요청 경로가 '/analytics/foo'이면 '/foo'를 반환합니다.

const getRequestPath = require('getRequestPath');

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

문법

getRequestPath();

관련 권한

read_request


getRequestQueryParameter

이름이 지정된 쿼리 문자열 매개변수의 디코딩된 값을 문자열로 반환하거나 매개변수가 없는 경우 undefined를 반환합니다. 쿼리 문자열에서 매개변수가 반복되면 쿼리 문자열에 표시되는 첫 번째 값이 반환됩니다.

const getRequestQueryParameter = require('getRequestQueryParameter');

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

문법

getRequestQueryParameter(name);

매개변수

매개변수 유형 설명
name 문자열 쿼리 매개변수 이름입니다.

관련 권한

read_request


getRequestQueryParameters

수신되는 HTTP 요청의 쿼리 매개변수를 쿼리 매개변수 이름을 해당하는 값에 매핑하는 객체로 반환합니다. 매개변수 이름과 값은 디코딩됩니다.

const getRequestQueryParameters = require('getRequestQueryParameters');

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

문법

getRequestQueryParameters();

관련 권한

read_request


getRequestQueryString

요청 쿼리를 선행 물음표 없이 문자열로 반환하거나, 요청 URL에 쿼리 문자열이 포함되지 않은 경우 빈 문자열로 반환합니다.

const getRequestQueryString = require('getRequestQueryString');

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

문법

getRequestQueryString();

관련 권한

read_request


getTimestamp

지원 중단되었습니다. getTimestampMillis를 사용하는 것이 좋습니다.

Unix 에포크 이후 Date.now()에서 반환된 현재 시간(밀리초)을 나타내는 숫자를 반환합니다.

문법

getTimestamp();

관련 권한

없음.


getTimestampMillis

Unix 에포크 이후 Date.now()에서 반환된 현재 시간(밀리초)을 나타내는 숫자를 반환합니다.

문법

getTimestampMillis();

관련 권한

없음.


getType

지정된 값의 유형을 설명하는 문자열을 반환합니다.

입력 유형 반환되는 값
문자열 'string'
숫자 'number'
불리언 'boolean'
null 'null'
undefined 'undefined'
배열 'array'
객체 'object'
함수 'function'

const getType = require('getType');

const type = getType(value);
if (type === 'string') {
  // Handle string input.
} else if (type === 'number') {
  // Handle numeric input.
} else {
  logToConsole('Unsupported input type: ', type);
}

문법

getType(value);

매개변수

매개변수 유형 설명
value 모두 입력 값입니다.

관련 권한

없음


hmacSha256

SHA-256을 사용하여 해시 기반 메시지 인증 코드 (HMAC)를 사용하여 인코딩된 서명을 계산합니다. 기본값은 base64url 인코딩입니다.

이 API를 사용하려면 서버의 SGTM_CREDENTIALS 환경 변수를 다음 형식의 UTF-8 인코딩 JSON 키 파일의 경로로 설정합니다.

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

값은 base64로 인코딩된 HMAC 키입니다. JSON 텍스트는 바이트 순서 마커로 시작하면 안 됩니다.

const hmacSha256 = require('hmacSha256');
const toBase64 = require('toBase64');

const header = toBase64('{"alg":"HS256","typ":"JWT"}', {urlEncoding: true});
const claim = toBase64('{"sub":"1234567890","iat":1698164946}', {urlEncoding: true});
const signature = hmacSha256(header + '.' + claim, 'key1');

const jwt = header + "." + claim + '.' + signature;

문법

hmacSha256(data, keyId, options)

매개변수

매개변수 유형 설명
data 문자열 HMAC 값을 계산할 데이터입니다.
keyId 문자열 사용할 키를 참조하는 JSON 키 파일의 키 ID입니다.
options 객체 선택사항 API 구성입니다. 아래 옵션을 참고하세요.

옵션

옵션 유형 설명
outputEncoding 문자열 반환 값의 인코딩 형식을 지정합니다. 지원되는 형식은 hex, base64 또는 base64url입니다. 지정하지 않을 경우 기본값은 base64url입니다.

관련 권한

use_custom_private_keys

최소 이미지 버전

1.0.0


isRequestMpv1

수신 요청이 측정 프로토콜 V1 요청인 경우 true, 그렇지 않은 경우 false를 반환합니다.

const isRequestMpv1 = require('isRequestMpv1');

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

문법

isRequestMpv1();

관련 권한

없음.


isRequestMpv2

수신 요청이 측정 프로토콜 V2 요청인 경우 true, 그렇지 않은 경우 false를 반환합니다.

const isRequestMpv2 = require('isRequestMpv2');

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

문법

isRequestMpv2();

관련 권한

없음.


logToConsole

인수를 콘솔에 로깅합니다.

이 로그는 Google Cloud Console의 로그 탐색기에 표시됩니다. 이 API로 만든 로그 항목을 보려면 로그 탐색기에서 logName =~ "stdout" 쿼리를 실행하세요.

const logToConsole = require('logToConsole');

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

문법

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

매개변수

API는 하나 이상의 인수를 취하며 각 인수는 필요한 경우 문자열로 변환되고 콘솔에 로깅됩니다.

관련 권한

logging


makeInteger

지정된 값을 숫자(정수)로 변환합니다.

문법

makeInteger(value);

매개변수

매개변수 유형 설명
value 모든 유형 변환할 값입니다.

관련 권한

없음.


makeNumber

지정된 값을 숫자로 변환합니다.

문법

makeNumber(value);

매개변수

매개변수 유형 설명
value 모든 유형 변환할 값입니다.

관련 권한

없음.


makeString

지정된 값을 문자열로 반환합니다.

문법

makeString(value);

매개변수

매개변수 유형 설명
value 모든 유형 변환할 값입니다.

관련 권한

없음.


makeTableMap

열이 두 개인 간단한 표 객체를 Map으로 변환합니다. 열이 두 개인 SIMPLE_TABLE 템플릿 필드를 더 관리하기 쉬운 형식으로 변경하는 데 사용됩니다.

예를 들어 이 함수는 다음 표 객체를

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

지도로 변환할 수 있습니다.

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

객체를 반환합니다. 키-값 쌍이 객체에 추가된 경우 변환된 Map, 그러지 않은 경우 null을 반환합니다.

문법

makeTableMap(tableObj, keyColumnName, valueColumnName);

매개변수

매개변수 유형 설명
tableObj 목록 변환할 표 객체입니다. 각 Map이 테이블의 행을 나타내는 지도 목록입니다. 행 객체의 각 속성 이름은 열 이름이고 속성 값은 행의 열 값입니다.
keyColumnName 문자열 변환된 Map의 키가 값이 되는 열의 이름입니다.
valueColumnName 문자열 값이 변환된 Map의 값으로 되는 열의 이름입니다.

관련 권한

없음.


parseUrl

URL 객체와 마찬가지로 지정된 URL의 모든 구성요소 부분이 포함된 객체를 반환합니다.

이 API는 잘못된 형식의 URL에 대해 undefined를 반환합니다. 올바른 형식을 갖춘 URL의 경우 URL 문자열에 없는 필드의 값은 빈 문자열, searchParams의 경우 빈 객체가 됩니다.

반환된 객체에는 다음 필드가 포함됩니다.

{
  href: string,
  origin: string,
  protocol: string,
  username: string,
  password: string,
  host: string,
  hostname: string,
  port: string,
  pathname: string,
  search: string,
  searchParams: Object<string, (string|Array)>,
  hash: string,
}

const parseUrl = require('parseUrl');

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

문법

parseUrl(url);

매개변수

매개변수 유형 설명
url 문자열 파싱할 전체 URL입니다.

관련 권한

없음.


returnResponse

SetCookie, setPixelResponse, setResponseBody, setResponseHeader, setResponseStatus 등 이전에 다른 템플릿에서 응답을 수정하는 API를 사용하여 설정된 응답을 플러시합니다. HTTP 상태 코드 200, 빈 본문, 헤더 없음으로 기본 설정됩니다.

이 API는 클라이언트 템플릿에서 사용하는 것이 좋습니다.

문법

returnResponse();

runContainer를 참고하세요.

관련 권한

return_response


runContainer

이벤트의 범위에서 컨테이너 로직(변수, 트리거, 태그)을 실행합니다. 컨테이너가 실행되는 동안 이 API가 호출되면 컨테이너가 다시 실행됩니다.

onCompleteonStart 콜백은 bindToEvent라는 함수를 수신합니다. 이벤트의 컨텍스트에서 API를 실행하려면 bindToEvent를 사용하세요. 자세한 내용은 addEventCallback 예를 참고하세요.

이 API는 클라이언트 템플릿에서 사용하는 것이 좋습니다.

const returnResponse = require('returnResponse');
const runContainer = require('runContainer');

// Runs the container with a simple pageview event and then returns a response.
runContainer({'event_name': 'pageview'}, () => returnResponse());

문법

runContainer(event, onComplete, onStart);

매개변수

매개변수 유형 설명
event 객체 이벤트 매개변수입니다.
onComplete 함수 모든 태그의 실행이 완료된 후 호출되는 콜백입니다.
onStart 함수 태그가 실행되기 직전에 호출되는 콜백입니다.

관련 권한

run_container


sendEventToGoogleAnalytics

일반 이벤트 데이터를 사용하여 단일 이벤트를 Google 애널리틱스로 전송하고, 한 객체로 결정되는 프로미스location 키와 함께 반환하거나 한 객체로 결정되지 않는 프로미스를 reason 키와 함께 반환합니다. 도착 페이지인 Google 애널리틱스 4는 이벤트 데이터의 측정 ID를 기반으로 합니다.

location 필드는 location 헤더로 설정됩니다(있는 경우).

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

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

문법

sendEventToGoogleAnalytics(event);

매개변수

매개변수 유형 설명
event 객체 통합 스키마 형식의 이벤트입니다.

관련 권한

send_http 권한이 필요합니다. 최소한 다음과 같은 액세스 권한을 허용하도록 권한을 구성해야 합니다.

  • Google Domains 허용

sendHttpGet

지정된 URL에 HTTP 요청을 하고 요청이 완료되거나 시간을 초과하면 결정된 프로미스를 결과와 함께 반환합니다.

결정된 결과는 세 개의 키(statusCode, headers, body)가 포함된 객체입니다. 요청이 실패하면(예: 잘못된 URL, 호스트 경로 없음, SSL 협상 실패 등) 프로미스가 거부되고 {reason: 'failed'}가 반환됩니다. timeout 옵션이 설정되고 요청이 시간을 초과하면 프로미스가 거부되고 {reason: 'timed_out'}이 반환됩니다.

const sendHttpGet = require('sendHttpGet');

// Returns the response body as the value for a variable.
return sendHttpGet('https://example.com/item/' + data.itemId, {
  headers: {key: 'value'},
  timeout: 500,
}).then((result) => result.body, () => undefined);

문법

sendHttpGet(url[, options]);

매개변수

매개변수 유형 설명
url 문자열 요청된 URL입니다.
options 객체 요청 옵션입니다(선택사항). 아래 옵션을 참고하세요.

옵션

옵션 유형 설명
headers 문자열 추가 요청 헤더입니다.
timeout 숫자 요청이 취소되기 전 제한 시간(밀리초)입니다. 기본값은 15000입니다.
authorization 객체 googleapis.com에 요청할 때 인증 헤더를 포함하기 위한 getGoogleAuth 호출의 인증 객체(선택사항).

관련 권한

send_http


sendHttpRequest

지정된 URL에 HTTP 요청을 하고 요청이 완료되거나 시간을 초과하면 결정된 프로미스를 응답과 함께 반환합니다.

결정된 결과는 세 개의 키(statusCode, headers, body)가 포함된 객체입니다. 요청이 실패하면(예: 잘못된 URL, 호스트 경로 없음, SSL 협상 실패 등) 프로미스가 거부되고 {reason: 'failed'}가 반환됩니다. timeout 옵션이 설정되고 요청이 시간을 초과하면 프로미스가 거부되고 {reason: 'timed_out'}이 반환됩니다.

const sendHttpRequest = require('sendHttpRequest');
const setResponseBody = require('setResponseBody');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');

const postBody = 'interaction=click&campaign=promotion&medium=email';
// Sends a POST request and nominates response based on the response to the POST
// request.
sendHttpRequest('https://example.com/collect', {
  headers: {key: 'value'},
  method: 'POST',
  timeout: 500,
}, postBody).then((result) => {
  setResponseStatus(result.statusCode);
  setResponseBody(result.body);
  setResponseHeader('cache-control', result.headers['cache-control']);
});

문법

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

매개변수

매개변수 유형 설명
url 문자열 요청된 URL입니다.
options 객체 요청 옵션입니다(선택사항). 아래 옵션을 참고하세요.
body 문자열 요청 본문입니다(선택사항).

옵션

옵션 유형 설명
headers 문자열 추가 요청 헤더입니다.
method 객체 요청 메서드입니다. 기본값은 GET입니다.
timeout 숫자 요청이 취소되기 전 제한 시간(밀리초)입니다. 기본값은 15000입니다.
authorization 객체 googleapis.com에 요청할 때 인증 헤더를 포함하기 위한 getGoogleAuth 호출의 인증 객체(선택사항).

관련 권한

send_http


sendPixelFromBrowser

브라우저에 명령어를 전송하여 제공된 URL을 <img> 태그로 로드합니다. 이 명령어 프로토콜은 GA4용 Google 태그Google 애널리틱스: GA 이벤트 웹 태그에서 지원됩니다. 서버 컨테이너 URL을 구성해야 합니다. 자세한 내용은 안내를 참고하세요.

이 API는 수신 요청이 명령어 프로토콜을 지원하지 않거나 응답이 이미 삭제된 경우 false를 반환합니다. 그렇지 않은 경우 이 API는 true를 반환합니다.

예:

const sendPixelFromBrowser = require('sendPixelFromBrowser');

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

문법

sendPixelFromBrowser(url)

매개변수

매개변수 유형 설명
url 문자열 브라우저로 전송할 URL입니다.

관련 권한

send_pixel_from_browser


setCookie

지정된 옵션으로 쿠키를 설정하거나 삭제합니다.

쿠키를 삭제하려면 쿠키가 생성된 것과 동일한 경로 및 도메인으로 쿠키를 설정하고 과거의 만료 값(예: "Thu, 01 Jan 1970 00:00:00 GMT")을 할당해야 합니다.

응답을 클라이언트로 다시 전송하려면 returnResponse를 호출해야 합니다.

const setCookie = require('setCookie');

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

문법

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

매개변수

매개변수 유형 설명
name 문자열 쿠키 이름입니다. 이름은 대소문자를 구분하지 않습니다.
value 문자열 쿠키 값입니다.
options 객체 다음은 쿠키 속성(선택사항)입니다: domain, expires, fallbackDomain,httpOnly, max - age, path, secure, sameSite. 아래 옵션을 참고하세요.
noEncode 불리언 true인 경우 쿠키 값이 인코딩되지 않습니다. 기본값은 false입니다.

옵션

  • domain: 쿠키가 전송될 호스트입니다. 특수 값 'auto'로 설정된 경우 호스트가 다음 전략을 사용하여 자동 계산됩니다.

    • Forwarded 헤더의 eTLD+1(있는 경우)
    • X-Forwarded-Host 헤더의 eTLD+1(있는 경우)
    • Host 헤더의 eTLD+1
  • expires: 쿠키의 최대 전체 기간입니다. UTC 형식의 날짜 문자열이어야 합니다(예: 'Sat, 26 Oct 1985 08:21:00 GMT'). expiresmax-age가 모두 설정된 경우 max-age가 우선 적용됩니다.

  • httpOnly: true인 경우 자바스크립트가 쿠키에 액세스하지 못하도록 금지합니다.

  • max-age: 쿠키가 만료될 때까지의 시간(초)입니다. 0 또는 음수이면 쿠키가 즉시 만료됩니다. expiresmax-age가 모두 설정된 경우 max-age가 우선 적용됩니다.

  • path: 요청된 URL에 있어야 하는 경로입니다. 그렇지 않으면 브라우저에서 쿠키 헤더를 전송하지 않습니다.

  • secure: true로 설정된 경우 https: 엔드포인트에서 요청한 경우에만 쿠키가 서버로 전송됩니다.

  • sameSite: 쿠키를 교차 출처 요청으로 전송해서는 안 된다고 주장합니다. 'strict', 'lax' 또는 'none'이어야 합니다.

관련 권한

set_cookie


setPixelResponse

응답 본문을 1x1 GIF로 설정하고, Content-Type 헤더를 'image/gif'로 설정하고, 사용자 에이전트가 응답을 캐시하지 않도록 캐싱 헤더를 설정하고, 응답 상태를 200으로 설정합니다.

응답을 클라이언트로 다시 전송하려면 returnResponse를 호출해야 합니다.

문법

setPixelResponse();

관련 권한

access_response 권한이 필요합니다. 최소한 다음과 같은 액세스 권한을 허용하도록 권한을 구성해야 합니다.

  • headers - 다음 키를 허용해야 합니다.
    • content-type
    • cache-control
    • expires
    • pragma
  • body
  • status

setResponseBody

응답 본문을 인수로 설정합니다.

응답을 클라이언트로 다시 전송하려면 returnResponse를 호출해야 합니다.

문법

setResponseBody(body[, encoding]);

매개변수

매개변수 유형 설명
body 문자열 응답 본문으로 설정할 값입니다.
encoding 문자열 응답 본문의 문자 인코딩(기본값: 'utf8')입니다. 지원 값에는 'ascii', 'utf8', 'utf16le', 'ucs2' ,'base64', 'latin1', 'binary','hex'가 포함됩니다.

관련 권한

access_response 권한이 필요합니다. 최소한 다음과 같은 액세스 권한을 허용하도록 권한을 구성해야 합니다.

  • body

setResponseHeader

반환될 응답의 헤더를 설정합니다. 이전에 이 API에서 이 이름의 헤더를 설정한 경우(대소문자를 구분하지 않음) 후자의 호출이 이전 호출자가 설정한 값을 덮어쓰거나 지웁니다.

응답을 클라이언트로 다시 전송하려면 returnResponse를 호출해야 합니다.

문법

setResponseHeader(name, value);

매개변수

매개변수 유형 설명
name 문자열 헤더 이름입니다. HTTP 헤더 이름은 대소문자를 구분하지 않으므로 헤더 이름은 소문자로 표시됩니다.
value 문자열 정의되지 않음 헤더 값입니다. null이거나 undefined인 경우 반환될 응답에서 이름이 지정된 헤더가 지워집니다.

관련 권한

access_response 권한이 필요합니다. 최소한 다음과 같은 액세스 권한을 허용하도록 권한을 구성해야 합니다.

  • headers

setResponseStatus

반환될 응답의 HTTP 상태 코드를 설정합니다.

응답을 클라이언트로 다시 전송하려면 returnResponse를 호출해야 합니다.

문법

setResponseStatus(statusCode);

매개변수

매개변수 유형 설명
statusCode 숫자 반환될 HTTP 상태 코드입니다.

관련 권한

access_response 권한이 필요합니다. 최소한 다음과 같은 액세스 권한을 허용하도록 권한을 구성해야 합니다.

  • status

sha256

options 객체가 다른 출력 인코딩을 지정하지 않은 경우 입력의 SHA-256 다이제스트를 계산하고 base64로 인코딩된 다이제스트와 함께 콜백을 호출합니다.

이 API 서명과 동작은 웹 컨테이너의 sha256 API와 일치합니다. 하지만 서버 컨테이너의 맞춤 템플릿에서는 코드를 더 간단하게 하기 위해 sha256Sync API를 사용해야 합니다.

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

sha256('inputString', (digest) => {
  sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digest));
});

sha256('inputString', (digest) => {
  sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digest));
}, {outputEncoding: 'hex'});

문법

sha256(input, onSuccess, options = undefined);

매개변수

매개변수 유형 설명
input 문자열 해시할 문자열입니다.
onSuccess 함수 options 객체가 다른 출력 인코딩을 지정하지 않는 경우 base64로 인코딩된 결과 다이제스트와 함께 호출됩니다.
options 객체 출력 인코딩을 지정하기 위한 옵션 객체입니다(선택사항). 지정된 경우 객체에 값이 base64 또는 hexoutputEncoding 키를 포함해야 합니다.

관련 권한

없음.


sha256Sync

options 객체가 다른 출력 인코딩을 지정하지 않는 한 base64로 인코딩된 입력의 SHA-256 다이제스트를 계산하고 반환합니다.

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

const digestBase64 = sha256Sync('inputString');
const digestHex = sha256Sync('inputString', {outputEncoding: 'hex'});
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digestBase64));
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digestHex));

문법

sha256Sync(input, options = undefined);

매개변수

매개변수 유형 설명
input 문자열 해시할 문자열입니다.
options 객체 출력 인코딩을 지정하기 위한 옵션 객체입니다(선택사항). 지정된 경우 객체에 값이 base64 또는 hexoutputEncoding 키를 포함해야 합니다.

관련 권한

없음.


templateDataStorage

템플릿 데이터 저장소에 액세스하기 위한 메서드가 있는 객체를 반환합니다. 템플릿 데이터 저장소를 사용하면 단일 템플릿의 실행 간에 데이터를 공유할 수 있습니다. 템플릿 데이터 저장소에 저장된 데이터는 컨테이너를 실행하는 서버에서 유지됩니다. 대부분의 경우 컨테이너를 실행하는 서버가 여러 개 있으므로 템플릿 데이터 저장소에 데이터를 저장한다고 해서 모든 후속 요청에서 데이터에 액세스할 수 있는 것은 아닙니다.

'templateDataStorage' 이름의 'data'는 이 API를 사용하여 비함수의 일반 데이터 유형만 저장할 수 있다는 것을 가리킵니다. API에 전달된 함수 또는 함수에 대한 참조는 대신 null로 저장됩니다.

문법

const templateDataStorage = require('templateDataStorage');

// Returns a copy of the value stored for the given key, or null if nothing
// is stored with that key.
templateDataStorage.getItemCopy(key);

// Stores a copy of the value for the given key (or removes the data stored
// for the given key if the input value is null).
templateDataStorage.setItemCopy(key, value);

// Removes the value stored for the given key, if present.
templateDataStorage.removeItem(key);

// Deletes all values stored for the current template.
templateDataStorage.clear();

const sendHttpGet = require('sendHttpGet');
const setResponseBody = require('setResponseBody');
const setResponseStatus = require('setResponseStatus');
const templateDataStorage = require('templateDataStorage');

// Check to see if the item is in the cache.
const cachedBody = templateDataStorage.getItemCopy(data.key);
if (cachedBody) {
  setResponseBody(cachedBody);
  data.gtmOnSuccess();
  return;
}

sendHttpGet(data.url).then((result) => {
  if (result.statusCode >= 200 && result.statusCode < 300) {
    setResponseBody(result.body);
    templateDataStorage.setItemCopy(data.key, result.body);
    data.gtmOnSuccess();
  } else {
    data.gtmOnFailure();
  }
  setResponseStatus(result.statusCode);
});

관련 권한

access_template_storage


testRegex

createRegex API를 통해 만든 정규식에 대해 문자열을 테스트합니다. 정규식이 일치하면 true를 반환합니다. 그 밖의 경우에는 false를 반환합니다.

전역 플래그로 만든 정규식은 스테이트풀입니다. 자세한 내용은 RegExp 문서를 참조하세요.

const createRegex = require('createRegex');
const testRegex = require('testRegex');

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

// createRegex returns null if the regex is invalid or Re2 is not available.
if (domainRegex === null) return;

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

문법

testRegex(regex, string);

매개변수

매개변수 유형 설명
regex 객체 테스트할 정규식으로, createRegex API에서 반환됩니다.
string 문자열 테스트할 테스트 문자열입니다.

관련 권한

없음


toBase64

문자열을 base64 또는 base64url로 인코딩합니다. 기본값은 base64 인코딩입니다.

문법

toBase64(input, options);

매개변수

매개변수 유형 설명
input 문자열 인코딩할 문자열입니다.
options 객체 선택사항 API 구성입니다. 아래 옵션을 참고하세요.

옵션

옵션 유형 설명 최소 버전
urlEncoding 불리언 true인 경우 결과는 base64url 형식을 사용하여 인코딩됩니다. 1.0.0

const toBase64 = require('toBase64');

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

관련 권한

없음.


BigQuery

BigQuery 함수를 제공하는 객체를 반환합니다.

BigQuery.insert 함수를 사용하면 BigQuery 테이블에 데이터를 쓸 수 있습니다. 이 함수는 삽입에 성공하는 경우 결정되는 프로미스를, 오류가 발생하는 경우 거부되는 프로미스를 반환합니다.

삽입에 성공하면 프로미스가 인수 없이 결정됩니다.

삽입에 실패하면 프로미스가 거부되고 오류가 발생한 경우 오류 이유가 포함된 객체의 목록 및 행 객체(가능한 경우)가 표시됩니다. 요청의 일부는 완료될 수 있지만 다른 부분은 완료되지 않을 수 있습니다. 이 경우 프로미스가 거부되고 삽입된 행을 구분할 수 있도록 각 행의 오류 목록 및 행 객체가 표시됩니다(아래의 오류 예 참고). 자세한 내용은 오류 메시지에 관한 BigQuery 문서를 참고하세요.

문법

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

매개변수

매개변수 유형 설명
connectionInfo 객체 BigQuery 테이블에 연결하는 데 필요한 정보를 정의합니다. 선택적 매개변수 1개와 필수 매개변수 2개가 있습니다.
  • projectId - 선택사항 Google Cloud Platform 프로젝트 ID입니다. 생략되면 projectId는 프로젝트 ID에 대한 access_bigquery 권한 설정이 * 또는 GOOGLE_CLOUD_PROJECT로 설정된 경우 환경 변수 GOOGLE_CLOUD_PROJECT에서 가져옵니다. 서버 컨테이너가 Google Cloud에서 실행 중이면 GOOGLE_CLOUD_PROJECT는 이미 Google Cloud 프로젝트의 ID로 설정됩니다.
  • datasetId - BigQuery 데이터 세트 ID입니다.
  • tableId - BigQuery 테이블 ID입니다.
rows 배열 테이블에 삽입할 행입니다.
options 객체 요청 옵션입니다(선택사항). 지원되는 옵션은 ignoreUnknownValues, skipInvalidRows입니다. 알 수 없는 옵션 키는 무시됩니다. 아래 옵션을 참고하세요.

옵션

매개변수 유형 설명
ignoreUnknownValues 불리언 true로 설정된 경우 스키마와 일치하지 않는 값이 포함된 행이 허용됩니다. 알 수 없는 값이 무시됩니다. 기본값은 false입니다.
skipInvalidRows 불리언 true로 설정된 경우 유효하지 않은 행이 있어도 요청의 모든 유효한 행이 삽입됩니다. 기본값은 false입니다.

오류 예

'모듈을 찾을 수 없음' 오류는 서버 컨테이너가 BigQuery 모듈이 아직 포함되지 않은 이전 버전의 이미지를 실행 중일 가능성이 있음을 의미합니다. 배포 스크립트를 사용하여 동일한 설정으로 서버 컨테이너를 다시 배포하세요. 작업이 완료되면 모듈이 자동으로 포함됩니다.

비삽입 오류에는 일반적으로 reason 키가 있는 오류 객체가 하나 있습니다.

[{reason: 'invalid'}]

삽입 오류에는 errors 배열과 row 객체가 있는 여러 오류 객체가 포함될 수 있습니다. 다음은 행 2개를 삽입했는데 한 행에만 오류가 발생한 경우의 오류 응답 예입니다.

[
  {
    "errors": [
      {
        "reason":"invalid"
      }
    ],
    "row": {
      "string_col":"otherString",
      "number_col":-3,
      "bool_col":3
    }
  },
  {
    "errors": [
      {
        "reason":"stopped"
      }
    ],
    "row": {
      "string_col":"stringValue",
      "number_col":5,
      "bool_col:false
    }
  }
]

const BigQuery = require('BigQuery');

const connectionInfo = {
  'projectId': 'gcp-cloud-project-id',
  'datasetId': 'destination-dataset',
  'tableId': 'destination-table',
};

const rows = [{
  'column1': 'String1',
  'column2': 1234,
}];

const options = {
  'ignoreUnknownValues': true,
  'skipInvalidRows': false,
};

BigQuery.insert(connectionInfo, rows, options)
  .then(data.gtmOnSuccess, data.gtmOnFailure);

관련 권한

access_bigquery


Firestore

Firestore 함수를 제공하는 객체를 반환합니다.

이 API는 Datastore 모드의 Firestore가 아니라 기본 모드의 Firestore만 지원합니다. 또한 이 API는 기본 데이터베이스 사용만 지원합니다.

Firestore.read

Firestore.read 함수는 Firestore 문서에서 데이터를 읽고 iddata 두 키가 포함된 객체로 결정되는 프로미스를 반환합니다. 문서가 존재하지 않으면 프로미스가 not_found와 같은 reason 키가 포함된 객체와 함께 거부됩니다.

문법

Firestore.read(path[, options]);

매개변수

매개변수 유형 설명
path 문자열 문서 또는 컬렉션의 경로입니다. '/'로 시작하거나 끝나지 않아야 합니다.
options 객체 요청 옵션입니다(선택사항). 지원되는 옵션은 projectId, disableCache, transaction입니다. 알 수 없는 옵션 키는 무시됩니다. 아래 옵션을 참고하세요.

옵션

매개변수 유형 설명
projectId 문자열 선택사항입니다. Google Cloud Platform 프로젝트 ID입니다. 생략되면 projectId는 프로젝트 ID에 대한 access_firestore 권한 설정이 * 또는 GOOGLE_CLOUD_PROJECT로 설정된 경우 환경 변수 GOOGLE_CLOUD_PROJECT에서 가져옵니다. 서버 컨테이너가 Google Cloud에서 실행 중이면 GOOGLE_CLOUD_PROJECT는 이미 Google Cloud 프로젝트의 ID로 설정됩니다.
disableCache 불리언 선택사항입니다. 캐시 사용 중지 여부를 결정합니다. 캐싱은 기본적으로 사용 설정되며 요청 기간 동안 결과를 캐시합니다.
transaction 문자열 선택사항입니다. Firestore.runTransaction()에서 가져온 값입니다. 트랜잭션 내에서 사용할 작업을 표시합니다.

const Firestore = require('Firestore');

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

Firestore.write

Firestore.write 함수는 Firestore 문서 또는 컬렉션에 데이터를 씁니다. 컬렉션 경로인 경우 임의로 생성된 ID를 사용하여 문서가 생성됩니다. 존재하지 않는 문서로 연결되는 경로인 경우 문서가 생성됩니다. 이 API는 추가되거나 수정된 문서의 ID로 결정되는 프로미스를 반환합니다. 트랜잭션 옵션이 사용된 경우 API는 여전히 프로미스를 반환하지만 쓰기가 일괄 처리되므로 ID를 포함하지 않습니다.

문법

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

매개변수

매개변수 유형 설명
path 문자열 문서 또는 컬렉션의 경로입니다. '/'로 시작하거나 끝나지 않아야 합니다.
input 객체 문서에 쓸 값입니다. 병합 옵션이 설정되어 있는 경우 API가 입력의 키를 문서에 병합합니다.
options 객체 요청 옵션입니다(선택사항). 지원되는 옵션은 projectId, merge, transaction입니다. 알 수 없는 옵션 키는 무시됩니다. 아래 옵션을 참고하세요.

옵션

매개변수 유형 설명
projectId 문자열 선택사항입니다. Google Cloud Platform 프로젝트 ID입니다. 생략되면 projectId는 프로젝트 ID에 대한 access_firestore 권한 설정이 * 또는 GOOGLE_CLOUD_PROJECT로 설정된 경우 환경 변수 GOOGLE_CLOUD_PROJECT에서 가져옵니다. 서버 컨테이너가 Google Cloud에서 실행 중이면 GOOGLE_CLOUD_PROJECT는 이미 Google Cloud 프로젝트의 ID로 설정됩니다.
merge 불리언 선택사항입니다. true로 설정된 경우 입력의 키를 문서에 병합합니다. 그러지 않은 경우 메서드가 전체 문서를 재정의합니다. 기본값은 false입니다.
transaction 문자열 선택사항입니다. Firestore.runTransaction()에서 가져온 값입니다. 트랜잭션 내에서 사용할 작업을 표시합니다.

const Firestore = require('Firestore');

const input = {key1: 'value1', key2: 12345};

Firestore.write('collection/document', input, {
  projectId: 'gcp-cloud-project-id',
  merge: true,
}).then((id) => {
  data.gtmOnSuccess();
}, data.gtmOnFailure);

Firestore.query

Firestore.query 함수는 지정된 컬렉션을 쿼리하고 쿼리 조건과 일치하는 Firestore 문서 배열로 결정되는 프로미스를 반환합니다. Firestore 문서 객체는 위 Firestore.read에 표시된 것과 동일합니다. 쿼리 조건과 일치하는 문서가 없는 경우 반환되는 프로미스는 빈 배열로 결정됩니다.

문법

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

매개변수

매개변수 유형 설명
collection 문자열 컬렉션의 경로입니다. '/'로 시작하거나 끝나지 않아야 합니다.
queryConditions 배열 쿼리 조건의 배열입니다. 각 쿼리는 세 개의 값(key, operator, expectedValue)을 갖는 배열 형태로 제공됩니다. 예: [[‘id’, ‘<’, ‘5’], [‘state’, ‘==’, ‘CA’]].

조건이 AND로 연결되어 쿼리 결과를 만듭니다. 호환되는 쿼리 연산자 목록은 Firestore의 쿼리 연산자를 참고하세요.
options 객체 요청 옵션입니다(선택사항). 지원되는 옵션은 projectId, disableCache, limit, transaction입니다. 알 수 없는 옵션 키는 무시됩니다. 아래 옵션을 참고하세요.

옵션

매개변수 유형 설명
projectId 문자열 선택사항입니다. Google Cloud Platform 프로젝트 ID입니다. 생략되면 projectId는 프로젝트 ID에 대한 access_firestore 권한 설정이 * 또는 GOOGLE_CLOUD_PROJECT로 설정된 경우 환경 변수 GOOGLE_CLOUD_PROJECT에서 가져옵니다. 서버 컨테이너가 Google Cloud에서 실행 중이면 GOOGLE_CLOUD_PROJECT는 이미 Google Cloud 프로젝트의 ID로 설정됩니다.
disableCache 불리언 선택사항입니다. 캐시 사용 중지 여부를 결정합니다. 캐싱은 기본적으로 사용 설정되며 요청 기간 동안 결과를 캐시합니다.
limit 숫자 선택사항입니다. 쿼리에서 반환하는 최대 결과 수를 변경합니다. 기본값은 5입니다.
transaction 문자열 선택사항입니다. Firestore.runTransaction()에서 가져온 값입니다. 트랜잭션 내에서 사용할 작업을 표시합니다.

const Firestore = require('Firestore');

const queries = const queries = [['id', '==', '5']];

return Firestore.query('collection', queries, {
  projectId: 'gcp-cloud-project-id',
  limit: 1,
}).then((documents) => documents[0].data.key, () => undefined);

Firestore.runTransaction

Firestore.runTransaction 함수를 사용하면 사용자가 Firestore에서 원자적으로 읽고 쓸 수 있습니다. 동시 쓰기 또는 다른 트랜잭션 충돌이 발생하면 트랜잭션을 최대 2회 다시 시도합니다. 총 3회 시도 후에도 실패하면 API가 거부되고 오류가 발생합니다. 이 API는 트랜잭션이 성공하는 경우 각 쓰기 작업에 대해 문서 ID의 배열로 결정되는 프로미스를 반환하고, 실패하는 경우 거부되고 오류가 발생합니다.

문법

Firestore.runTransaction(callback[, options]);

매개변수

매개변수 유형 설명
callback 함수 문자열 트랜잭션 ID와 함께 호출되는 콜백입니다. 트랜잭션 ID는 읽기/쓰기/쿼리 API 호출에 전달할 수 있습니다. 이 콜백 함수는 프로미스를 반환해야 합니다. 콜백은 실패하기 전에 최대 3회 실행할 수 있습니다.
options 객체 요청 옵션입니다(선택사항). 유일하게 지원되는 옵션은 projectId입니다. 알 수 없는 옵션 키는 무시됩니다. 아래 옵션을 참고하세요.

옵션

매개변수 유형 설명
projectId 문자열 선택사항입니다. Google Cloud Platform 프로젝트 ID입니다. 생략되면 projectId는 프로젝트 ID에 대한 access_firestore 권한 설정이 * 또는 GOOGLE_CLOUD_PROJECT로 설정된 경우 환경 변수 GOOGLE_CLOUD_PROJECT에서 가져옵니다. 서버 컨테이너가 Google Cloud에서 실행 중이면 GOOGLE_CLOUD_PROJECT는 이미 Google Cloud 프로젝트의 ID로 설정됩니다.

const Firestore = require('Firestore');

const path = 'collection/document';
const projectId = 'gcp-cloud-project-id';

Firestore.runTransaction((transaction) => {
  const transactionOptions = {
    projectId: projectId,
    transaction: transaction,
  };
  // Must return a promise.
  return Firestore.read(path, transactionOptions).then((result) => {
    const newInputCount = result.data.inputCount + 1;
    const input = {key1: 'value1', inputCount: newInputCount};
    return Firestore.write(path, input, transactionOptions);
  });
}, {
  projectId: projectId
}).then((ids) => {
  data.gtmOnSuccess();
}, data.gtmOnFailure);

오류 예

각 Firestore 함수에서 사용 가능한 오류는 reason 키가 포함된 객체와 함께 거부됩니다.

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

오류 이유에는 Firestore REST API 오류 코드가 포함될 수 있으며 이에 국한되지 않습니다.

관련 권한

access_firestore


JSON

JSON 함수를 제공하는 객체를 반환합니다.

parse() 함수는 JSON 문자열을 파싱하여 문자열로 설명되는 값 또는 객체를 구성합니다. 값을 파싱할 수 없는 경우(예: 잘못된 형식의 JSON) 이 함수는 undefined를 반환합니다. 입력 값이 문자열이 아니면 입력이 문자열로 변환됩니다.

stringify() 함수는 입력을 JSON 문자열로 변환합니다. 값을 파싱할 수 없는 경우(예: 객체에 주기가 있는 경우) 이 메서드는 undefined를 반환합니다.

const JSON = require('JSON');

// The JSON input string is converted to an object.
const object = JSON.parse('{"foo":"bar"}');

// The input object is converted to a JSON string.
const str = JSON.stringify({foo: 'bar'});

문법

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

관련 권한

없음.


Math

Math 함수를 제공하는 객체입니다.

문법

const Math = require('Math');

// Retrieve the absolute value.
const absolute = Math.abs(-3);

// Round the input down to the nearest integer.
const roundedDown = Math.floor(3.6);

// Round the input up to the nearest integer.
const roundedUp = Math.ceil(2.2);

// Round the input to the nearest integer.
const rounded = Math.round(3.1);

// Return the largest argument.
const biggest = Math.max(1, 3);

// Return the smallest argument.
const smallest = Math.min(3, 5);

// Return the first argument raised to the power of the second argument.
const powerful = Math.pow(3, 1);

// Return the square root of the argument.
const unsquared = Math.sqrt(9);

매개변수

수학 함수 매개변수는 숫자로 변환됩니다.

관련 권한

없음.


Messages

다음 API는 함께 작동하여 컨테이너의 서로 다른 부분 간에 메시지를 전달할 수 있습니다.


addMessageListener

특정 유형의 메시지를 수신 대기하는 함수를 추가합니다. 해당 유형의 메시지가 sendMessage API(일반적으로 태그)를 사용하여 전송되면 콜백이 동기식으로 실행됩니다. 콜백은 다음 두 매개변수로 실행됩니다.

  1. messageType:string
  2. message:Object

콜백이 클라이언트에 추가되면 콜백은 클라이언트가 만드는 모든 이벤트에서 메시지를 수신합니다. 콜백이 특정 이벤트에서만 메시지를 수신해야 하는 경우 runContainer API의 onStart 함수의 bindToEvent를 사용하여 이 API를 이벤트에 결합합니다. 예를 참고하세요.

문법

const addMessageListener = require('addMessageListener');

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

매개변수

매개변수 유형 설명
messageType 문자열 수신 대기할 메시지 유형입니다. 값이 문자열이 아니면 문자열로 변환됩니다.
callback 함수 관련 메시지 유형의 메시지가 전송될 때 실행할 콜백입니다. 콜백이 함수가 아니면 API는 아무 작업도 하지 않습니다.

const addMessageListener = require('addMessageListener');
const claimRequest = require('claimRequest');
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');

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

const events = extractEventsFromMpv1();
let eventsCompleted = 0;
events.forEach((event, i) => {
  runContainer(events[i], /* onComplete= */ () => {
    if (events.length === ++eventsCompleted) {
      returnResponse();
    }
  }, /* onStart= */ (bindToEvent) => {
    if (i === 0) {
      bindToEvent(addMessageListener)('send_pixel', (messageType, message) => {
        // This will be called whenever a tag for the first event sends a
        // 'send_pixel' message.
      });
    }
  });
});

관련 권한

use_message 권한이 필요합니다. 최소한 다음과 같은 액세스 권한을 허용하도록 권한을 구성해야 합니다.

  • Usagelisten 또는 listen_and_send인 메시지 유형입니다.

hasMessageListener

지정된 메시지 유형에 메시지 리스너가 추가된 경우 true를 반환합니다. 그렇지 않은 경우 false를 반환합니다.

문법

const hasMessageListener = require('hasMessageListener');

hasMessageListener('send_pixel');

관련 권한

없음.


sendMessage

지정된 유형의 메시지를 등록된 리스너에 전송합니다. 컨테이너를 실행한 클라이언트에 태그의 메시지를 다시 전송하는 데 사용할 수 있습니다.

문법

const sendMessage = require('sendMessage');

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

매개변수

매개변수 유형 설명
messageType 문자열 전송할 메시지 유형입니다. 값이 문자열이 아니면 문자열로 변환됩니다.
message 객체 전송할 메시지입니다. 메시지가 객체가 아닌 경우 API가 아무 작업도 하지 않습니다.

관련 권한

use_message 권한이 필요합니다. 최소한 다음과 같은 액세스 권한을 허용하도록 권한을 구성해야 합니다.

  • Usagelisten_and_send 또는 send인 메시지 유형입니다.

Object

Object 메서드를 제공하는 객체를 반환합니다.

keys() 메서드는 표준 라이브러리 Object.keys() 동작을 제공합니다. 이 메서드는 지정된 객체의 자체 enumerable 속성 이름의 배열을 for...in... 루프와 동일한 순서로 반환합니다. 입력 값이 객체가 아니면 입력이 객체로 변환됩니다.

values() 메서드는 표준 라이브러리 Object.values() 동작을 제공합니다. 이 함수는 지정된 객체의 자체 enumerable 속성 값의 배열을 for...in... 루프와 동일한 순서로 반환합니다. 입력 값이 객체가 아니면 입력이 객체로 변환됩니다.

entries() 메서드는 표준 라이브러리 Object.entries() 동작을 제공합니다. 이 메서드는 지정된 객체의 자체 enumerable 속성 [key, value] 쌍의 배열을 for...in... 루프와 동일한 순서로 반환합니다. 입력 값이 객체가 아니면 입력이 객체로 변환됩니다.

freeze() 메서드는 표준 라이브러리 Object.freeze() 동작을 제공합니다. 고정된 객체는 더 이상 변경할 수 없습니다. 객체를 고정하면 객체에 새 속성이 추가되지 않고 기존 속성이 삭제되지 않으며 기존 속성 값이 변경되지 않습니다. freeze()는 전달된 것과 동일한 객체를 반환합니다. 원시 또는 null 인수는 고정된 객체인 것처럼 처리되며 반환됩니다.

delete() 메서드는 표준 라이브러리 삭제 연산자 동작을 제공합니다. 객체가 고정되지 않은 경우 객체에서 지정된 키를 삭제합니다. 표준 라이브러리 delete 연산자와 마찬가지로, 두 번째 입력 값(keyToDelete)이 존재하지 않는 키를 지정하더라도 첫 번째 입력 값(objectInput)이 고정되지 않은 객체인 경우 true를 반환합니다. 그 외 모든 경우에는 false를 반환합니다. 하지만 표준 라이브러리 delete 연산자와는 다음과 같은 점에서 다릅니다.

  • keyToDelete는 중첩된 키를 지정하는 점으로 구분된 문자열일 수 없습니다.
  • delete()는 배열에서 요소를 삭제하는 데 사용할 수 없습니다.
  • delete()는 전역 범위에서 속성을 삭제하는 데 사용할 수 없습니다.

문법

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

매개변수

Object.keys

매개변수 유형 설명
objectInput 모두 키를 열거할 객체입니다. 입력이 객체가 아니면 입력이 객체로 변환됩니다.

Object.values

매개변수 유형 설명
objectInput 모두 값을 열거할 객체입니다. 입력이 객체가 아니면 입력이 객체로 변환됩니다.

Object.entries

매개변수 유형 설명
objectInput 모두 키/값 쌍을 열거할 객체입니다. 입력이 객체가 아니면 입력이 객체로 변환됩니다.

Object.freeze

매개변수 유형 설명
objectInput 모두 고정할 객체입니다. 입력이 객체가 아니면 고정된 객체로 취급됩니다.

Object.delete

매개변수 유형 설명
objectInput 모두 키를 삭제할 객체입니다.
keyToDelete 문자열 삭제할 최상위 키입니다.

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

프로미스와 상호작용하기 위한 메서드를 제공하는 객체를 반환합니다.

프로미스는 자바스크립트 프로미스와 기능적으로 동등합니다. 각 인스턴스에는 프로미스가 해결되는 경우 추가 작업을 허용하는 프로미스를 반환하는 세 가지 메서드가 있습니다.

  • .then() - 결정된 경우와 거부된 경우를 모두 처리합니다. 두 개의 콜백(성공한 경우를 위한 콜백과 실패한 경우를 위한 콜백)을 매개변수로 사용합니다.
  • .catch() - 거부된 경우만 처리합니다. 하나의 콜백을 매개변수로 사용합니다.
  • .finally() - 프로미스가 결정되었는지 또는 거부되었는지에 관계없이 코드를 실행하는 방법을 제공합니다. 하나의 콜백을 인수 없이 호출되는 매개변수로 사용합니다.

프로미스를 반환하는 변수는 프로미스의 결정된 값과 같거나 프로미스가 거부된 경우 false입니다.

promise.then((resolvedValue) => {
    // Handles when promise resolves.
  }, (rejectedValue) => {
    // Handles when promise rejects.
  });
promise.catch((rejectedValue) => {
    // Handles when promise rejects.
  });
promise.finally(() => {
    // Runs regardless of whether or not the previous promise resolves or
    // rejects.
  });

Promise.all

다음 중 하나의 프로미스를 반환합니다.

  • 모든 입력이 결정된 경우 결정되는 프로미스
  • 어떤 입력이든 거부되는 경우 거부되는 프로미스

문법

Promise.all(inputs);

매개변수

매개변수 유형 설명
inputs 배열 값 또는 프로미스 배열입니다. 입력이 프로미스가 아닌 경우 입력이 프로미스의 결정된 값인 것처럼 전달됩니다. 입력이 배열이 아니면 오류가 발생합니다.

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

return Promise.all(['a', sendHttpGet('https://example.com')])
  .then((results) => {
    // results will equal: ['a', {statusCode: 200, headers: {}, body: ''}]
  });

관련 권한

없음.

Promise.create

자바스크립트 프로미스와 기능적으로 동등한 프로미스를 만듭니다.

문법

Promise.create(resolver);

매개변수

매개변수 유형 설명
resolver 함수 두 함수(resolve 및 reject)와 함께 호출되는 함수입니다. 해당하는 매개변수가 호출되면 반환된 프로미스가 결정되거나 거부됩니다. 리졸버가 함수가 아닌 경우 오류가 발생합니다.

const Promise = require('Promise');

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

관련 권한

없음.

테스트 API

이 API는 샌드박스 처리된 자바스크립트 테스트와 함께 사용되어 Google 태그 관리자에서 맞춤 템플릿을 위한 테스트를 빌드합니다. 이러한 테스트 API에는 require() 문이 필요하지 않습니다. [맞춤 템플릿 테스트에 대해 자세히 알아보기]


assertApi

지정된 API에 대해 유연하게 어설션하는 데 사용할 수 있는 일치자 객체를 반환합니다.

문법

assertApi(apiName)

매개변수

매개변수 유형 설명
apiName 문자열 확인할 API의 이름으로, require()에 전달되는 것과 동일한 문자열입니다.

일치자

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

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

assertThat

assertThat API는 Google의 [Truth] 라이브러리를 모델로 하며, 대상의 값에 대해 유연하게 어설션하는 데 사용할 수 있는 객체를 반환합니다. 어설션이 실패하면 즉시 테스트가 중지되고 실패로 표시됩니다. 하지만 한 테스트에 실패해도 다른 테스트 사례는 영향을 받지 않습니다.

문법

assertThat(actual, opt_message)

매개변수

매개변수 유형 설명
actual 모두 유연한 검토에 사용할 값입니다.
opt_message 문자열 어설션이 실패할 경우 출력할 메시지입니다(선택사항).

일치자

일치자 설명
isUndefined() 대상이 undefined라고 어설션합니다.
isDefined() 대상이 undefined이 아니라고 어설션합니다.
isNull() 대상이 null이라고 어설션합니다.
isNotNull() 대상이 null이 아니라고 어설션합니다.
isFalse() 대상이 false라고 어설션합니다.
isTrue() 대상이 true라고 어설션합니다.
isFalsy() 대상이 거짓이라고 어설션합니다. 거짓 값은 undefined, null, false, NaN, 0, ''(빈 문자열)입니다.
isTruthy() 대상이 참이라고 어설션합니다. 거짓 값은 undefined, null, false, NaN, 0, ''(빈 문자열)입니다.
isNaN() 대상이 NaN 값이라고 어설션합니다.
isNotNaN() 대상이 NaN 외의 값이라고 어설션합니다.
isInfinity() 대상이 양의 무한대 또는 음의 무한대라고 어설션합니다.
isNotInfinity() 대상이 양의 무한대 또는 음의 무한대 외의 값이라고 어설션합니다.
isEqualTo(expected) 대상이 지정된 값과 같다고 어설션합니다. 참조 비교가 아니라 값 비교입니다. 객체와 배열의 콘텐츠는 재귀적으로 비교됩니다.
isNotEqualTo(expected) 대상이 지정된 값과 같지 않다고 어설션합니다. 참조 비교가 아니라 값 비교입니다. 객체와 배열의 콘텐츠는 재귀적으로 비교됩니다.
isAnyOf(...expected) 대상이 지정된 값 중 하나와 같다고 어설션합니다. 참조 비교가 아니라 값 비교입니다. 객체와 배열의 콘텐츠는 재귀적으로 비교됩니다.
isNoneOf(...expected) 대상이 어느 지정된 값과도 같지 않다고 어설션합니다. 참조 비교가 아니라 값 비교입니다. 객체와 배열의 콘텐츠는 재귀적으로 비교됩니다.
isStrictlyEqualTo(expected) 대상이 지정된 값과 엄격하게 같다고(===) 어설션합니다.
isNotStrictlyEqualTo(expected) 대상이 지정된 값과 엄격하게 같지 않다고(!==) 어설션합니다.
isGreaterThan(expected) 순서가 지정된 비교에서 대상이 지정된 값보다 크다고(>) 어설션합니다.
isGreaterThanOrEqualTo(expected) 순서가 지정된 비교에서 대상이 지정된 값보다 크거나 같다고(>=) 어설션합니다.
isLessThan(expected) 순서가 지정된 비교에서 대상이 지정된 값보다 작다고(<) 어설션합니다.
isLessThanOrEqualTo(expected) 순서가 지정된 비교에서 대상이 지정된 값보다 작거나 같다고(<=) 어설션합니다.
contains(...expected) 대상이 지정된 모든 값이 임의의 순서로 포함된 배열 또는 문자열이라고 어설션합니다. 참조 비교가 아니라 값 비교입니다. 객체와 배열의 콘텐츠는 재귀적으로 비교됩니다.
doesNotContain(...expected) 대상이 지정된 값이 포함되지 않은 배열 또는 문자열이라고 어설션합니다. 참조 비교가 아니라 값 비교입니다. 객체와 배열의 콘텐츠는 재귀적으로 비교됩니다.
containsExactly(...expected) 대상이 지정된 모든 값이 임의의 순서로 포함되고 다른 값은 포함되지 않은 배열이라고 어설션합니다. 참조 비교가 아니라 값 비교입니다. 객체와 배열의 콘텐츠는 재귀적으로 비교됩니다.
doesNotContainExactly(...expected) 대상이 지정된 값과 다른 값이 임의의 순서로 포함된 배열이라고 어설션합니다. 참조 비교가 아니라 값 비교입니다. 객체와 배열의 콘텐츠는 재귀적으로 비교됩니다.
hasLength(expected) 대상이 지정된 길이의 배열 또는 문자열이라고 어설션합니다. 값이 배열이나 문자열이 아니면 어설션이 항상 실패합니다.
isEmpty() 대상이 비어 있는(길이 = 0) 배열 또는 문자열이라고 어설션합니다. 값이 배열이나 문자열이 아니면 어설션이 항상 실패합니다.
isNotEmpty() 대상이 비어 있지 않은(길이 > 0) 배열 또는 문자열이라고 어설션합니다. 값이 배열이나 문자열이 아니면 어설션이 항상 실패합니다.
isArray() 대상의 유형이 배열이라고 어설션합니다.
isBoolean() 대상의 유형이 불리언이라고 어설션합니다.
isFunction() 대상의 유형이 함수라고 어설션합니다.
isNumber() 대상의 유형이 숫자라고 어설션합니다.
isObject() 대상의 유형이 객체라고 어설션합니다.
isString() 대상의 유형이 문자열이라고 어설션합니다.

assertThat(undefined).isUndefined();
assertThat(id, 'ID must be defined').isDefined();
assertThat(null).isNull();
assertThat(undefined).isNotNull();
assertThat(true).isTrue();
assertThat(false).isFalse();
assertThat(1).isTruthy();
assertThat('').isFalsy();
assertThat(1/0).isInfinity();
assertThat(0).isNotInfinity();
assertThat(-'foo').isNaN();
assertThat(100).isNotNaN();
assertThat(sentUrl).isEqualTo('https://endpoint.example.com/?account=12345');
assertThat(category).isNotEqualTo('premium');
assertThat(5).isAnyOf(1, 2, 3, 4, 5);
assertThat(42).isNoneOf('the question', undefined, 41.9);
assertThat('value').isStrictlyEqualTo('value');
assertThat('4').isNotStrictlyEqualTo(4);
assertThat(['a', 'b', 'c']).contains('a', 'c');
assertThat(['x', 'y', 'z']).doesNotContain('f');
assertThat(['1', '2', '3']).containsExactly('3', '2', '1');
assertThat(['4', '5']).doesNotContainExactly('4');
assertThat('a string').hasLength(8);
assertThat([]).isEmpty();
assertThat('another string').isNotEmpty();

fail

현재 테스트가 즉시 실패하고 지정된 메시지가 출력됩니다(제공되는 경우).

문법

fail(opt_message);

매개변수

매개변수 유형 설명
opt_message 문자열 오류 메시지 텍스트입니다(선택사항).

fail('This test has failed.');

mock

mock API를 사용하면 샌드박스 처리된 API의 동작을 재정의할 수 있습니다. 모의 API는 템플릿 코드에서 안전하게 사용할 수 있지만 테스트 모드에서만 작동합니다. 모의 API는 각 테스트가 실행되기 전에 재설정됩니다.

문법

mock(apiName, returnValue);

매개변수

매개변수 유형 설명
apiName 문자열 모방할 API의 이름으로, require()에 전달되는 것과 동일한 문자열입니다.
returnValue 모두 API 또는 API 대신 호출되는 함수에 대해 반환할 값입니다. returnValue가 함수이면 해당 함수가 샌드박스 처리된 API 대신 호출됩니다. returnValue가 함수가 아닌 경우 샌드박스 처리된 API 대신 값이 반환됩니다.

예시

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

mockObject

mockObject API를 사용하면 객체를 반환하는 샌드박스 처리된 API의 동작을 재정의할 수 있습니다. 이 API는 템플릿 코드에서 안전하게 사용할 수 있지만 테스트 모드에서만 작동합니다. 모의 API는 각 테스트가 실행되기 전에 재설정됩니다.

문법

mockObject(apiName, objectMock);

매개변수

매개변수 유형 설명
apiName 문자열 모방할 API의 이름으로, require()에 전달되는 것과 동일한 문자열입니다.
objectMock 객체 API 또는 API 대신 호출되는 함수에 대해 반환할 값입니다. 객체여야 합니다.

예시

const storage = {};
let firestoreId = 1;

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

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

runCode

지정된 입력 데이터 객체를 사용하여 현재 테스트 환경에서 템플릿의 코드, 즉 코드 탭의 콘텐츠를 실행합니다.

문법

runCode(data)

매개변수

매개변수 유형 설명
data 객체 테스트에 사용할 데이터 객체입니다.

반환 값

변수 템플릿의 경우 변수 값을 반환합니다. 다른 모든 템플릿 유형의 경우 undefined를 반환합니다.

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