이 문서에서는 서버 측 태그 지정을 위한 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.
});
관련 권한
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` (대소문자 무시)가 지원됩니다. 다른 모든 문자는 자동으로 무시됩니다. |
관련 권한
없음
최소 이미지 버전
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();
관련 권한
getClientName
현재 클라이언트의 이름이 포함된 문자열을 반환합니다.
문법
getClientName();
관련 권한
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();
관련 권한
getCookieValues
지정된 이름의 모든 쿠키 값이 포함된 배열을 반환합니다.
예
const getCookieValues = require('getCookieValues');
const lastVisit = getCookieValues('lastVisit')[0];
if (lastVisit) {
// ...
}
문법
getCookieValues(name[, noDecode]);
매개변수
매개변수 | 유형 | 설명 |
---|---|---|
name |
문자열 | 쿠키의 이름입니다. |
noDecode |
불리언 |
true 인 경우 쿠키 값이 반환되기 전에 디코딩되지 않습니다. 기본값은 false 입니다.
|
관련 권한
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);
관련 권한
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 스크립트 집합에서 리소스를 가져오고 스크립트 및 연결된 캐싱 메타데이터와 함께 프로미스를 반환합니다.
프로미스는 script
및 metadata
두 키가 포함된 객체로 결정됩니다. 요청이 실패하면 프로미스가 거부되고 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
권한이 필요합니다. 최소한 다음과 같은 액세스 권한을 허용하도록 권한을 구성해야 합니다.
- 헤더
Forwarded
및X-Forwarded-For
- 원격 IP 주소
getRequestBody
요청 본문을 문자열로 반환합니다(있는 경우). 그렇지 않은 경우 undefined
를 반환합니다.
문법
getRequestBody();
관련 권한
getRequestHeader
이름이 지정된 요청 헤더의 값을 문자열로 반환합니다(있는 경우). 그렇지 않은 경우 undefined
를 반환합니다. 헤더가 반복되면 반환된 값이 ', '
와 결합됩니다.
예
const getRequestHeader = require('getRequestHeader');
const host = getRequestHeader('host');
문법
getRequestHeader(headerName);
매개변수
매개변수 | 유형 | 설명 |
---|---|---|
headerName |
문자열 | 헤더 이름입니다. 이 값은 대소문자를 구분하지 않습니다. |
관련 권한
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();
관련 권한
getRequestQueryParameter
이름이 지정된 쿼리 문자열 매개변수의 디코딩된 값을 문자열로 반환하거나 매개변수가 없는 경우 undefined
를 반환합니다. 쿼리 문자열에서 매개변수가 반복되면 쿼리 문자열에 표시되는 첫 번째 값이 반환됩니다.
예
const getRequestQueryParameter = require('getRequestQueryParameter');
const query = getRequestQueryParameter('query');
if (query) {
// Process query here.
}
문법
getRequestQueryParameter(name);
매개변수
매개변수 | 유형 | 설명 |
---|---|---|
name |
문자열 | 쿼리 매개변수 이름입니다. |
관련 권한
getRequestQueryParameters
수신되는 HTTP 요청의 쿼리 매개변수를 쿼리 매개변수 이름을 해당하는 값에 매핑하는 객체로 반환합니다. 매개변수 이름과 값은 디코딩됩니다.
예
const getRequestQueryParameters = require('getRequestQueryParameters');
const queryParameters = getRequestQueryParameters();
if (queryParameters['search']) {
// Handle the search query here.
const maxResults = queryParameters['max_results'];
}
문법
getRequestQueryParameters();
관련 권한
getRequestQueryString
요청 쿼리를 선행 물음표 없이 문자열로 반환하거나, 요청 URL에 쿼리 문자열이 포함되지 않은 경우 빈 문자열로 반환합니다.
예
const getRequestQueryString = require('getRequestQueryString');
const queryString = getRequestQueryString();
if (queryString !== '') {
// Handle the query string.
}
문법
getRequestQueryString();
관련 권한
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 입니다. |
관련 권한
최소 이미지 버전
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는 하나 이상의 인수를 취하며 각 인수는 필요한 경우 문자열로 변환되고 콘솔에 로깅됩니다.
관련 권한
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
예를 참고하세요.
관련 권한
runContainer
이벤트의 범위에서 컨테이너 로직(변수, 트리거, 태그)을 실행합니다. 컨테이너가 실행되는 동안 이 API가 호출되면 컨테이너가 다시 실행됩니다.
onComplete
및 onStart
콜백은 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 |
함수 | 태그가 실행되기 직전에 호출되는 콜백입니다. |
관련 권한
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 호출의 인증 객체(선택사항). |
관련 권한
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 호출의 인증 객체(선택사항). |
관련 권한
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입니다. |
관련 권한
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').
expires
와max-age
가 모두 설정된 경우max-age
가 우선 적용됩니다.httpOnly:
true
인 경우 자바스크립트가 쿠키에 액세스하지 못하도록 금지합니다.max-age: 쿠키가 만료될 때까지의 시간(초)입니다. 0 또는 음수이면 쿠키가 즉시 만료됩니다.
expires
와max-age
가 모두 설정된 경우max-age
가 우선 적용됩니다.path: 요청된 URL에 있어야 하는 경로입니다. 그렇지 않으면 브라우저에서 쿠키 헤더를 전송하지 않습니다.
secure:
true
로 설정된 경우https:
엔드포인트에서 요청한 경우에만 쿠키가 서버로 전송됩니다.sameSite: 쿠키를 교차 출처 요청으로 전송해서는 안 된다고 주장합니다.
'strict'
,'lax'
또는'none'
이어야 합니다.
관련 권한
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 또는 hex 인 outputEncoding 키를 포함해야 합니다.
|
관련 권한
없음.
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 또는 hex 인 outputEncoding 키를 포함해야 합니다.
|
관련 권한
없음.
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);
});
관련 권한
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개가 있습니다.
|
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);
관련 권한
Firestore
Firestore 함수를 제공하는 객체를 반환합니다.
이 API는 Datastore 모드의 Firestore가 아니라 기본 모드의 Firestore만 지원합니다. 또한 이 API는 기본 데이터베이스 사용만 지원합니다.
Firestore.read
Firestore.read
함수는 Firestore 문서에서 데이터를 읽고 id
와 data
두 키가 포함된 객체로 결정되는 프로미스를 반환합니다. 문서가 존재하지 않으면 프로미스가 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 오류 코드가 포함될 수 있으며 이에 국한되지 않습니다.
관련 권한
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(일반적으로 태그)를 사용하여 전송되면 콜백이 동기식으로 실행됩니다. 콜백은 다음 두 매개변수로 실행됩니다.
messageType:string
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
권한이 필요합니다. 최소한 다음과 같은 액세스 권한을 허용하도록 권한을 구성해야 합니다.
Usage
가listen
또는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
권한이 필요합니다. 최소한 다음과 같은 액세스 권한을 허용하도록 권한을 구성해야 합니다.
Usage
가listen_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'});