APIهای برچسب گذاری سمت سرور

این سند، APIهای مربوط به برچسب‌گذاری سمت سرور را تشریح می‌کند.


addEventCallback

یک تابع فراخوانی (callback) ثبت می‌کند که در پایان یک رویداد فراخوانی می‌شود. این تابع فراخوانی زمانی فراخوانی می‌شود که تمام تگ‌های مربوط به رویداد اجرا شده باشند. به این تابع فراخوانی دو مقدار ارسال می‌شود: شناسه‌ی کانتینری که تابع را فراخوانی می‌کند و یک شیء که حاوی اطلاعاتی در مورد رویداد است.

وقتی این API در یک تگ استفاده می‌شود، به رویداد فعلی مرتبط می‌شود. وقتی این API در یک کلاینت استفاده می‌شود، باید با استفاده از تابع bindToEvent از API مربوط به runContainer به یک رویداد خاص متصل شود. برای جزئیات بیشتر به مثال مراجعه کنید.

نحو

const addEventCallback = require('addEventCallback');

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

پارامترها

پارامتر نوع توضیحات
callback تابع تابعی که قرار است در پایان رویداد فراخوانی شود.

شیء eventData شامل داده‌های زیر است:

نام کلید نوع توضیحات
tags آرایه آرایه‌ای از اشیاء داده تگ. هر تگی که در طول رویداد اجرا شود، یک ورودی در این آرایه خواهد داشت. شیء داده تگ شامل شناسه تگ ( 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 فراخوانی شود) یک استثنا ایجاد می‌کند.

یک کلاینت باید قبل از فراخوانی API runContainer درخواست را با استفاده از این API دریافت کند.

مثال

const claimRequest = require('claimRequest');

claimRequest();

نحو

claimRequest();

مجوزهای مرتبط

هیچ کدام.


computeEffectiveTldPlusOne

دامنه سطح بالای مؤثر + ۱ (eTLD+1) دامنه یا URL داده شده را برمی‌گرداند. eTLD+1 با ارزیابی دامنه در برابر قوانین فهرست پسوند عمومی محاسبه می‌شود. eTLD+1 معمولاً بالاترین سطح دامنه‌ای است که می‌توانید روی آن کوکی تنظیم کنید.

اگر آرگومان تهی یا تعریف نشده باشد، مقدار آرگومان بدون تغییر برگردانده می‌شود. در غیر این صورت، آرگومان به یک رشته تبدیل می‌شود. اگر آرگومان یک دامنه یا 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 رشته دامنه یا نشانی اینترنتی (URL) که eTLD+1 روی آن محاسبه می‌شود.

مجوزهای مرتبط

هیچ کدام.


createRegex

یک نمونه regex جدید ایجاد می‌کند و آن را به صورت پیچیده شده در یک شیء برمی‌گرداند. شما نمی‌توانید مستقیماً به regex دسترسی داشته باشید. با این حال، می‌توانید آن را به API testRegex ، String.replace() ، String.match() و String.search() ارسال کنید.

اگر عبارت منظم نامعتبر باشد یا Re2 روی سرور در دسترس نباشد، null برمی‌گرداند.

این API از پیاده‌سازی Re2 استفاده می‌کند. ایمیج داکر سرور باید نسخه ۲.۰.۰ یا بالاتر باشد.

مثال

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 رشته یک URI که توسط encodeUri() یا به روش‌های دیگر کدگذاری شده است.

مجوزهای مرتبط

هیچ کدام.


decodeUriComponent

هر کاراکتر رمزگذاری شده در مؤلفه URI ارائه شده را رمزگشایی می‌کند. رشته‌ای را برمی‌گرداند که نشان دهنده مؤلفه URI رمزگشایی شده است. در صورت دریافت ورودی نامعتبر undefined را برمی‌گرداند.

مثال

const decodeUriComponent = require('decodeUriComponent');

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

نحو

decodeUriComponent(encoded_uri_component);

پارامترها

پارامتر نوع توضیحات
encoded_uri_component رشته یک کامپوننت URI که توسط encodeUriComponent() یا به روش‌های دیگر کدگذاری شده است.

مجوزهای مرتبط

هیچ کدام.


encodeUri

با حذف کاراکترهای خاص، یک شناسه منبع یکسان (URI) کدگذاری شده را برمی‌گرداند. رشته‌ای را برمی‌گرداند که نشان دهنده رشته ارائه شده کدگذاری شده به عنوان یک URI است.

مثال

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

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

نحو

encodeUri(uri);

پارامترها

پارامتر نوع توضیحات
uri رشته یک URI کامل.

مجوزهای مرتبط

هیچ کدام.


encodeUriComponent

با حذف کاراکترهای خاص، یک شناسه منبع یکسان (URI) کدگذاری شده را برمی‌گرداند. رشته‌ای را برمی‌گرداند که نشان دهنده رشته ارائه شده کدگذاری شده به عنوان یک URI است.

مثال

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

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

نحو

encodeUriComponent(str);

پارامترها

پارامتر نوع توضیحات
str رشته یک جزء از یک URI.

مجوزهای مرتبط

هیچ کدام.


extractEventsFromMpv1

درخواست ورودی Measurement Protocol V1 را به لیستی از رویدادها با فرمت Unified Schema تبدیل می‌کند. لیست رویدادهای استخراج شده را برمی‌گرداند. اگر درخواست در قالب صحیح نباشد، خطا می‌دهد.

مثال

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

درخواست ورودی Measurement Protocol V2 را به لیستی از رویدادها با فرمت Unified Schema تبدیل می‌کند. لیست رویدادهای استخراج شده را برمی‌گرداند. اگر درخواست در قالب صحیح نباشد، خطا می‌دهد.

مثال

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 استفاده شود، شامل یک هدر مجوز برای APIهای Google Cloud خواهد بود. این API از Application Default Credentials برای یافتن خودکار اعتبارنامه‌ها از محیط سرور استفاده می‌کند.

مثال

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 آرایه آرایه‌ای از محدوده‌های API گوگل OAuth 2.0 که درخواست دسترسی به آنها داده می‌شود.

مجوزهای مرتبط

به مجوز use_google_credentials نیاز دارد. این مجوز باید با یک یا چند محدوده مجاز پیکربندی شود.


getGoogleScript

منبعی را از مجموعه‌ای از اسکریپت‌های گوگل که از پیش تعیین شده‌اند بازیابی می‌کند و یک promise را به همراه اسکریپت و فراداده‌های ذخیره‌سازی مرتبط برمی‌گرداند.

این promise به یک شیء حاوی دو کلید تبدیل می‌شود: script و metadata . اگر درخواست با شکست مواجه شود، promise با یک کلید 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 دریافت می‌کند.

گزینه 'GTAG' اسکریپت تگ سایت سراسری (gtag.js) را از https://www.googletagmanager.com/gtag/js دریافت می‌کند.

گزینه 'GTM' اسکریپت گوگل تگ منیجر را از https://www.googletagmanager.com/gtm.js دریافت می‌کند.
options شیء گزینه‌های درخواست اختیاری. برای گزینه‌های پشتیبانی‌شده به زیر مراجعه کنید.

گزینه‌ها

گزینه نوع توضیحات
id رشته قابل اجرا برای 'GTAG' با شناسه اندازه‌گیری gtag و 'GTM' با شناسه کانتینر وب (مثلاً GTM-XXXX).
debug هر اگر truey باشد، نسخه اشکال‌زدایی اسکریپت اندازه‌گیری را درخواست و برمی‌گرداند.
timeout شماره زمان پایان درخواست بر حسب میلی‌ثانیه؛ مقادیر غیرمثبت نادیده گرفته می‌شوند. اگر زمان درخواست به پایان برسد، تابع فراخوانی با undefined برای مقدار اسکریپت و {} برای شیء فراداده فراخوانی می‌شود.

کلیدهای گزینه ناشناخته نادیده گرفته می‌شوند.

مجوزهای مرتبط

به مجوز send_http نیاز دارد. این مجوز باید طوری پیکربندی شود که حداقل به موارد زیر دسترسی داشته باشد:

  • دامنه‌های گوگل را مجاز کنید

getRemoteAddress

با خواندن هدرهای درخواست مانند Forwarded و X-Forwarded-For، یک نمایش رشته‌ای از آدرس IP مبدا، مثلاً 12.345.67.890 برای IPv4 یا 2001:0db8:85a3:0:0:8a2e:0370:7334 برای IPv6، را برمی‌گرداند. توجه: این API تمام تلاش خود را برای کشف IP مبدا انجام می‌دهد، اما نمی‌تواند تضمین کند که نتیجه دقیق باشد.

نحو

getRemoteAddress();

مجوزهای مرتبط

به مجوز read_request نیاز دارد. این مجوز باید طوری پیکربندی شود که حداقل به موارد زیر دسترسی داشته باشد:

  • هدرهای Forwarded و X-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

مسیر درخواست را بدون رشته پرس‌وجو برمی‌گرداند. برای مثال، اگر آدرس اینترنتی '/foo?id=123' باشد، این تابع '/foo' را برمی‌گرداند. پیشوند آدرس اینترنتی کانتینر سرور را به طور خودکار از مسیر حذف می‌کند. برای مثال، اگر آدرس اینترنتی کانتینر سرور 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 را ترجیح دهید.

عددی را برمی‌گرداند که زمان فعلی را بر حسب میلی‌ثانیه از زمان آغاز یونیکس نشان می‌دهد، همانطور که توسط Date.now() برگردانده می‌شود.

نحو

getTimestamp();

مجوزهای مرتبط

هیچ کدام.


getTimestampMillis

عددی را برمی‌گرداند که زمان فعلی را بر حسب میلی‌ثانیه از زمان آغاز یونیکس نشان می‌دهد، همانطور که توسط Date.now() برگردانده می‌شود.

نحو

getTimestampMillis();

مجوزهای مرتبط

هیچ کدام.


getType

رشته‌ای را برمی‌گرداند که نوع مقدار داده شده را توصیف می‌کند.

نوع ورودی مقدار برگشتی
رشته 'string'
شماره 'number'
بولی 'boolean'
تهی 'null'
تعریف نشده '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

یک امضای رمزگذاری شده را با استفاده از کد تأیید هویت پیام مبتنی بر هش (HMAC) با SHA-256 محاسبه می‌کند. پیش‌فرض‌ها روی رمزگذاری base64url است.

برای استفاده از این API، متغیر محیطی SGTM_CREDENTIALS را در سرور روی مسیر یک فایل کلید JSON کدگذاری شده با UTF-8 با فرمت زیر تنظیم کنید:

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

مقادیر، کلیدهای HMAC با کدگذاری base64 هستند. متن 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 که به کلید مورد استفاده اشاره دارد.
options شیء پیکربندی اختیاری API. (به گزینه‌های زیر مراجعه کنید.)

گزینه‌ها

گزینه نوع توضیحات
outputEncoding رشته قالب کدگذاری برای مقدار بازگشتی را مشخص می‌کند. قالب‌های پشتیبانی‌شده عبارتند از hex ، base64 یا base64url . در صورت عدم تعیین، پیش‌فرض base64url است.

مجوزهای مرتبط

use_custom_private_keys

حداقل نسخه تصویر

۱.۰.۰


isRequestMpv1

اگر درخواست ورودی یک درخواست پروتکل اندازه‌گیری نسخه ۱ باشد، مقدار true و در غیر این صورت false را برمی‌گرداند.

مثال

const isRequestMpv1 = require('isRequestMpv1');

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

نحو

isRequestMpv1();

مجوزهای مرتبط

هیچ کدام.


isRequestMpv2

اگر درخواست ورودی یک درخواست Measurement Protocol V2 باشد، true و در غیر این صورت false را برمی‌گرداند.

مثال

const isRequestMpv2 = require('isRequestMpv2');

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

نحو

isRequestMpv2();

مجوزهای مرتبط

هیچ کدام.


logToConsole

آرگومان(های) خود را در کنسول ثبت می‌کند.

این گزارش‌ها در Logs Explorer در کنسول Google Cloud قابل مشاهده هستند. از Logs Explorer، logName =~ "stdout" را اجرا کنید تا ورودی‌های گزارش ایجاد شده توسط این API را مشاهده کنید.

مثال

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 رشته آدرس اینترنتی کاملی که تجزیه و تحلیل خواهد شد.

مجوزهای مرتبط

هیچ کدام.


returnResponse

پاسخی را که قبلاً توسط قالب‌های دیگر با استفاده از APIهایی که پاسخ را تغییر می‌دهند، از جمله setCookie ، setPixelResponse ، setResponseBody ، setResponseHeader و setResponseStatus، تنظیم شده بود، پاک می‌کند. پیش‌فرض‌ها روی کد وضعیت HTTP 200، بدنه خالی و بدون هدر هستند.

توصیه می‌شود که این API از یک الگوی کلاینت استفاده شود.

نحو

returnResponse();

مثال

به مثال runContainer مراجعه کنید.

مجوزهای مرتبط

return_response


runContainer

منطق کانتینر (متغیرها، تریگرها، تگ‌ها) را در محدوده یک رویداد اجرا می‌کند. اگر این API در حین اجرای کانتینر فراخوانی شود، کانتینر دوباره اجرا می‌شود.

توابع فراخوانی onComplete و onStart تابعی به نام bindToEvent دریافت می‌کنند. bindToEvent برای اجرای یک API در متن رویداد استفاده کنید. برای جزئیات بیشتر به مثال 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

یک رویداد واحد را با استفاده از داده‌های رویداد مشترک به گوگل آنالیتیکس ارسال می‌کند و یک promise را برمی‌گرداند که به یک شیء با کلید location ختم می‌شود یا به یک شیء با کلید reason رد می‌شود. مقصد، گوگل آنالیتیکس ۴، بر اساس شناسه اندازه‌گیری در داده‌های رویداد است.

فیلد 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 شیء این رویداد در قالب طرحواره یکپارچه (Unified Schema) است.

مجوزهای مرتبط

به مجوز send_http نیاز دارد. این مجوز باید طوری پیکربندی شود که حداقل به موارد زیر دسترسی داشته باشد:

  • دامنه‌های گوگل را مجاز کنید

sendHttpGet

یک درخواست HTTP GET به URL مشخص شده ارسال می‌کند و promise ای را برمی‌گرداند که پس از تکمیل یا اتمام زمان درخواست، با نتیجه مطابقت دارد.

نتیجه‌ی حل‌شده، یک شیء شامل سه کلید است: statusCode ، headers و body . اگر درخواست ناموفق باشد (مثلاً URL نامعتبر، عدم وجود مسیر به میزبان، شکست مذاکره SSL و غیره)، promise با دستور زیر رد می‌شود: {reason: 'failed'} . اگر گزینه‌ی timeout تنظیم شده باشد و درخواست به پایان رسیده باشد، promise با دستور زیر رد می‌شود: {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 شیء شیء مجوز اختیاری از فراخوانی getGoogleAuth برای گنجاندن هدرهای مجوز هنگام ارسال درخواست به googleapis.com .

مجوزهای مرتبط

send_http


sendHttpRequest

یک درخواست HTTP به URL مشخص شده ارسال می‌کند و promise ای را برمی‌گرداند که پس از تکمیل درخواست یا اتمام مهلت زمانی، با پاسخ برطرف می‌شود.

نتیجه‌ی حل‌شده، یک شیء شامل سه کلید است: statusCode ، headers و body . اگر درخواست ناموفق باشد (مثلاً URL نامعتبر، عدم وجود مسیر به میزبان، شکست مذاکره SSL و غیره)، promise با دستور زیر رد می‌شود: {reason: 'failed'} . اگر گزینه‌ی timeout تنظیم شده باشد و درخواست به پایان رسیده باشد، promise با دستور زیر رد می‌شود: {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 شیء شیء مجوز اختیاری از فراخوانی getGoogleAuth برای گنجاندن هدرهای مجوز هنگام ارسال درخواست به googleapis.com .

مجوزهای مرتبط

send_http


sendPixelFromBrowser

دستوری را به مرورگر ارسال می‌کند تا URL ارائه شده را به عنوان یک تگ <img> بارگذاری کند. این پروتکل دستوری در تگ‌های وب Google Tag for GA4 و Google Analytics: GA Event پشتیبانی می‌شود. شما باید 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 . (به Options در زیر مراجعه کنید.)
noEncode بولی اگر مقدار آن درست باشد، مقدار کوکی کدگذاری نخواهد شد. مقدار پیش‌فرض آن false است.

گزینه‌ها

  • دامنه: میزبان (host) که کوکی به آن ارسال خواهد شد. اگر روی مقدار ویژه 'auto' تنظیم شود، میزبان به طور خودکار با استفاده از استراتژی زیر محاسبه می‌شود:

    • eTLD+1 مربوط به سربرگ Forwarded ، در صورت وجود.
    • eTLD+1 مربوط به هدر X-Forwarded-Host ، در صورت وجود.
    • eTLD+1 مربوط به هدر Host .
  • expires : حداکثر طول عمر کوکی. این باید یک رشته تاریخ با فرمت UTC باشد، مثلاً "Sat, 26 Oct 1985 08:21:00 GMT". اگر هر دو expires و max-age تنظیم شده باشند، max-age اولویت دارد.

  • httpOnly : اگر true جاوا اسکریپت را از دسترسی به کوکی منع می‌کند.

  • max-age : تعداد ثانیه‌ها تا زمان انقضای کوکی. عدد صفر یا منفی، کوکی را فوراً منقضی می‌کند. اگر هم expires و هم max-age تنظیم شده باشند، max-age اولویت دارد.

  • مسیر : مسیری که باید در URL درخواستی وجود داشته باشد، در غیر این صورت مرورگر هدر کوکی را ارسال نخواهد کرد.

  • امن : اگر روی true تنظیم شود، کوکی فقط زمانی به سرور ارسال می‌شود که درخواستی از یک نقطه پایانی https: ارسال شود.

  • sameSite : تأیید می‌کند که کوکی نباید با درخواست‌های بین مبدا ارسال شود. باید 'strict' ، 'lax' یا 'none' باشد.

مجوزهای مرتبط

set_cookie


setPixelResponse

متن پاسخ را روی یک GIF 1x1 تنظیم می‌کند، هدر 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

خلاصه SHA-256 ورودی را محاسبه می‌کند و یک فراخوانی برگشتی با خلاصه کدگذاری شده در base64 فراخوانی می‌کند، مگر اینکه شیء options کدگذاری خروجی متفاوتی را مشخص کند.

این امضا و رفتار API با API sha256 برای کانتینرهای وب مطابقت دارد؛ با این حال، قالب‌های سفارشی در کانتینرهای سرور باید برای کد ساده‌تر از API sha256Sync استفاده کنند.

مثال

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 تابع با خلاصه‌ی حاصل که با base64 کدگذاری شده است، فراخوانی می‌شود، مگر اینکه شیء options کدگذاری خروجی متفاوتی را مشخص کند.
options شیء گزینه‌های اختیاری شیء برای مشخص کردن کدگذاری خروجی. در صورت مشخص شدن، شیء باید حاوی کلید outputEncoding با مقدار یکی از base64 یا hex باشد.

مجوزهای مرتبط

هیچ کدام.


sha256Sync

خلاصه SHA-256 ورودی را که با base64 کدگذاری شده است، محاسبه و برمی‌گرداند، مگر اینکه شیء options کدگذاری خروجی متفاوتی را مشخص کند.

مثال

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 شیء گزینه‌های اختیاری شیء برای مشخص کردن کدگذاری خروجی. در صورت مشخص شدن، شیء باید حاوی کلید outputEncoding با مقدار یکی از base64 یا hex باشد.

مجوزهای مرتبط

هیچ کدام.


templateDataStorage

یک شیء با متدهایی برای دسترسی به محل ذخیره‌سازی داده‌های الگو برمی‌گرداند. محل ذخیره‌سازی داده‌های الگو امکان اشتراک‌گذاری داده‌ها را در طول اجرای یک الگوی واحد فراهم می‌کند. داده‌های ذخیره‌شده در محل ذخیره‌سازی داده‌های الگو در سروری که کانتینر را اجرا می‌کند، باقی می‌مانند. در بیشتر موارد، چندین سرور وجود دارند که کانتینر را اجرا می‌کنند، بنابراین ذخیره داده‌ها در محل ذخیره‌سازی داده‌های الگو تضمین نمی‌کند که هر درخواست بعدی به داده‌ها دسترسی داشته باشد.

عبارت «data» در نام «templateDataStorage» به این واقعیت اشاره دارد که فقط انواع داده‌های ساده و غیرتابعی می‌توانند با استفاده از این 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

یک رشته را در برابر یک عبارت منظم ایجاد شده از طریق API createRegex آزمایش می‌کند. در صورت مطابقت عبارت منظم، مقدار true و در غیر این صورت false را برمی‌گرداند.

یک عبارت منظم (regex) که با پرچم سراسری (global flag) ایجاد شده باشد، دارای وضعیت (stateful) است. برای جزئیات بیشتر به مستندات 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 شیء عبارت منظمی که باید با آن تست انجام شود، از API مربوط به createRegex برگردانده شده است.
string رشته رشته آزمایشی برای آزمایش.

مجوزهای مرتبط

هیچ کدام.


toBase64

یک رشته را به صورت base64 یا base64url کدگذاری می‌کند. پیش‌فرض روی کدگذاری base64 است.

نحو

toBase64(input, options);

پارامترها

پارامتر نوع توضیحات
input رشته رشته برای رمزگذاری.
options شیء پیکربندی اختیاری API. (به گزینه‌های زیر مراجعه کنید.)

گزینه‌ها

گزینه نوع توضیحات حداقل نسخه
urlEncoding بولی اگر مقدار آن درست باشد، نتیجه با استفاده از فرمت base64url کدگذاری خواهد شد. ۱.۰.۰

مثال

const toBase64 = require('toBase64');

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

مجوزهای مرتبط

هیچ کدام.


BigQuery

یک شیء را برمی‌گرداند که توابع BigQuery را ارائه می‌دهد.

تابع BigQuery.insert امکان نوشتن داده‌ها در جدول BigQuery را فراهم می‌کند. این تابع یک promise را برمی‌گرداند که در صورت درج موفقیت‌آمیز، اجرا می‌شود یا در صورت بروز خطا، اجرا را رد می‌کند.

وقتی درج با موفقیت انجام شود، promise بدون هیچ آرگومانی اجرا می‌شود.

وقتی درج با شکست مواجه می‌شود، promise با فهرستی از اشیاء حاوی دلیل خطا و احتمالاً یک شیء ردیف در صورت بروز خطا، رد می‌شود. این امکان وجود دارد که بخشی از درخواست با موفقیت انجام شود، در حالی که بخش‌های دیگر با موفقیت انجام نشوند. در این حالت، promise با فهرستی از خطاها برای هر ردیف به همراه یک شیء ردیف رد می‌شود تا به تشخیص ردیف‌های درج شده کمک کند ( به مثال‌های خطا در زیر مراجعه کنید). برای اطلاعات بیشتر به مستندات BigQuery در مورد پیام‌های خطا مراجعه کنید.

نحو

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

پارامترها

پارامتر نوع توضیحات
connectionInfo شیء اطلاعات مورد نیاز برای اتصال به جدول BigQuery را تعریف می‌کند. یک پارامتر اختیاری و دو پارامتر اجباری وجود دارد:
  • projectId - شناسه پروژه اختیاری پلتفرم ابری گوگل. در صورت حذف، projectId از متغیر محیطی GOOGLE_CLOUD_PROJECT بازیابی می‌شود، مادامی که تنظیم مجوز access_bigquery برای شناسه پروژه روی * یا GOOGLE_CLOUD_PROJECT تنظیم شده باشد. اگر کانتینر سرور روی Google Cloud در حال اجرا باشد، GOOGLE_CLOUD_PROJECT از قبل روی شناسه پروژه Google Cloud تنظیم خواهد شد.
  • datasetId - شناسه مجموعه داده BigQuery.
  • tableId - شناسه جدول BigQuery.
rows آرایه ردیف‌هایی که باید در جدول درج شوند.
options شیء گزینه‌های درخواست اختیاری. گزینه‌های پشتیبانی‌شده عبارتند از: ignoreUnknownValues ​​و skipInvalidRows . کلیدهای گزینه ناشناخته نادیده گرفته می‌شوند. (به Options در زیر مراجعه کنید.)

گزینه‌ها

پارامتر نوع توضیحات
ignoreUnknownValues بولی اگر روی true تنظیم شود، ردیف‌هایی را می‌پذیرد که حاوی مقادیری هستند که با طرحواره مطابقت ندارند. مقادیر ناشناخته نادیده گرفته می‌شوند. پیش‌فرض روی false است.
skipInvalidRows بولی اگر روی true تنظیم شود، تمام ردیف‌های معتبر یک درخواست را وارد می‌کند، حتی اگر ردیف‌های نامعتبر وجود داشته باشند. پیش‌فرض روی false است.

مثال‌های خطا

خطای «ماژول پیدا نشد» به این معنی است که احتمالاً کانتینر سرور شما نسخه قدیمی‌تری از ایمیج ما را اجرا می‌کند که هنوز ماژول BigQuery را شامل نشده است. لطفاً کانتینر سرور خود را با همان تنظیمات و با استفاده از اسکریپت استقرار ما، مجدداً مستقر کنید. ماژول پس از اتمام عملیات به طور خودکار گنجانده خواهد شد.

یک خطای غیر درج معمولاً یک شیء خطا با یک کلید reason دارد:

[{reason: 'invalid'}]

یک خطای درج می‌تواند شامل چندین شیء خطا به همراه یک آرایه errors و یک شیء row باشد. در زیر مثالی از پاسخ خطا از درج دو ردیف که فقط یک ردیف دارای خطا است، آمده است:

[
  {
    "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 فقط از Firestore در حالت Native پشتیبانی می‌کند، نه Firestore در حالت Datastore . همچنین، این API فقط از استفاده از پایگاه داده پیش‌فرض پشتیبانی می‌کند.

Firestore.read

تابع Firestore.read داده‌ها را از یک سند Firestore می‌خواند و یک promise را برمی‌گرداند که به یک شیء حاوی دو کلید تبدیل می‌شود: id و data . اگر سند وجود نداشته باشد، promise با یک شیء حاوی کلید reason برابر با not_found رد می‌شود.

نحو

Firestore.read(path[, options]);

پارامترها

پارامتر نوع توضیحات
path رشته مسیر سند یا مجموعه. نباید با '/' شروع یا پایان یابد.
options شیء گزینه‌های درخواست اختیاری . گزینه‌های پشتیبانی‌شده عبارتند از: projectId ، disableCache و transaction . کلیدهای گزینه ناشناخته نادیده گرفته می‌شوند. (به بخش Options در زیر مراجعه کنید.)

گزینه‌ها

پارامتر نوع توضیحات
projectId رشته اختیاری . شناسه پروژه پلتفرم ابری گوگل. در صورت حذف، projectId از متغیر محیطی GOOGLE_CLOUD_PROJECT بازیابی می‌شود، مادامی که تنظیمات مجوز access_firestore برای شناسه پروژه روی * یا GOOGLE_CLOUD_PROJECT تنظیم شده باشد. اگر کانتینر سرور روی Google Cloud در حال اجرا باشد، GOOGLE_CLOUD_PROJECT از قبل روی شناسه پروژه Google Cloud تنظیم خواهد شد.
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 می‌نویسد. اگر مسیر به یک مجموعه باشد، یک سند با یک شناسه تصادفی ایجاد می‌شود. اگر مسیر به یک سند باشد و وجود نداشته باشد، ایجاد می‌شود. این API یک promise را برمی‌گرداند که به شناسه سند اضافه شده یا تغییر یافته تبدیل می‌شود. اگر از گزینه تراکنش استفاده شود، API همچنان یک promise را برمی‌گرداند، اما حاوی شناسه نخواهد بود زیرا نوشتن‌ها دسته‌ای هستند.

نحو

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

پارامترها

پارامتر نوع توضیحات
path رشته مسیر سند یا مجموعه. نباید با '/' شروع یا پایان یابد.
input شیء مقداری که قرار است در سند نوشته شود. اگر گزینه ادغام تنظیم شده باشد، API کلیدهای ورودی را در سند ادغام می‌کند.
options شیء گزینه‌های درخواست اختیاری . گزینه‌های پشتیبانی‌شده عبارتند از: projectId ، merge و transaction . کلیدهای گزینه ناشناخته نادیده گرفته می‌شوند. (به بخش Options در زیر مراجعه کنید.)

گزینه‌ها

پارامتر نوع توضیحات
projectId رشته اختیاری . شناسه پروژه پلتفرم ابری گوگل. در صورت حذف، projectId از متغیر محیطی GOOGLE_CLOUD_PROJECT بازیابی می‌شود، مادامی که تنظیمات مجوز access_firestore برای شناسه پروژه روی * یا GOOGLE_CLOUD_PROJECT تنظیم شده باشد. اگر کانتینر سرور روی Google Cloud در حال اجرا باشد، GOOGLE_CLOUD_PROJECT از قبل روی شناسه پروژه Google Cloud تنظیم خواهد شد.
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 مجموعه داده شده را جستجو می‌کند و یک promise را برمی‌گرداند که به آرایه‌ای از اسناد Firestore که با شرایط جستجو مطابقت دارند، تبدیل می‌شود. شیء سند Firestore همان چیزی است که در بالا در Firestore.read ذکر شده است. اگر هیچ سندی وجود نداشته باشد که با شرایط جستجو مطابقت داشته باشد، promise برگردانده شده به یک آرایه خالی تبدیل می‌شود.

نحو

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

پارامترها

پارامتر نوع توضیحات
collection رشته مسیر مجموعه. نباید با '/' شروع یا پایان یابد.
queryConditions آرایه آرایه‌ای از شرایط پرس‌وجو. هر پرس‌وجو به شکل آرایه‌ای با سه مقدار ارائه می‌شود: key ، operator و expectedValue . مثال: [['id', '<', '5'], ['state', '==', 'CA']].

برای ایجاد نتیجه پرس و جو، شرایط با هم AND می‌شوند. لطفاً برای مشاهده فهرستی از عملگرهای پرس و جوی سازگار، به عملگرهای پرس و جوی Firestore مراجعه کنید.
options شیء گزینه‌های درخواست اختیاری . گزینه‌های پشتیبانی‌شده عبارتند از: projectId ، disableCache ، limit و transaction . کلیدهای گزینه ناشناخته نادیده گرفته می‌شوند. (به بخش Options در زیر مراجعه کنید.)

گزینه‌ها

پارامتر نوع توضیحات
projectId رشته اختیاری . شناسه پروژه پلتفرم ابری گوگل. در صورت حذف، projectId از متغیر محیطی GOOGLE_CLOUD_PROJECT بازیابی می‌شود، مادامی که تنظیمات مجوز access_firestore برای شناسه پروژه روی * یا GOOGLE_CLOUD_PROJECT تنظیم شده باشد. اگر کانتینر سرور روی Google Cloud در حال اجرا باشد، GOOGLE_CLOUD_PROJECT از قبل روی شناسه پروژه Google Cloud تنظیم خواهد شد.
disableCache بولی اختیاری . تعیین می‌کند که آیا کش غیرفعال شود یا خیر. کش کردن به طور پیش‌فرض فعال است که نتایج را برای مدت زمان درخواست کش می‌کند.
limit شماره اختیاری . حداکثر تعداد نتایج برگردانده شده توسط پرس و جو را تغییر می‌دهد، مقدار پیش‌فرض ۵ است.
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 بخواند و بنویسد. اگر یک نوشتن همزمان یا تداخل تراکنش دیگری رخ دهد، تراکنش تا دو بار دوباره امتحان می‌شود. اگر پس از سه تلاش کامل شکست بخورد، API با یک خطا رد می‌شود. این API یک promise را برمی‌گرداند که در صورت موفقیت‌آمیز بودن تراکنش، برای هر عملیات نوشتن، به آرایه‌ای از شناسه‌های سند تبدیل می‌شود و در صورت شکست، با خطا رد می‌شود.

نحو

Firestore.runTransaction(callback[, options]);

پارامترها

پارامتر نوع توضیحات
callback تابع یک تابع فراخوانی که با یک شناسه تراکنش رشته‌ای فراخوانی می‌شود. شناسه تراکنش را می‌توان به فراخوانی‌های API خواندن/نوشتن/پرس‌وجو ارسال کرد. این تابع فراخوانی باید یک promise را برگرداند. فراخوانی ممکن است تا سه بار قبل از شکست اجرا شود.
options شیء Optional request options. The supported only supported option is projectId . Unknown option keys are ignored. (See Options , below.)

گزینه‌ها

پارامتر نوع توضیحات
projectId رشته Optional . Google Cloud Platform project ID. If omitted, the projectId is retrieved from the environment variable GOOGLE_CLOUD_PROJECT as long as the access_firestore permission setting for the project ID is set to * or GOOGLE_CLOUD_PROJECT . If the server container is running on Google Cloud, GOOGLE_CLOUD_PROJECT will already be set to the Google Cloud project's 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);

Error Example

Errors are available in each Firestore function will be rejected with an object containing a reason key:

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

The error reasons can contain but are not limited to Firestore REST API Error Codes .

Associated permissions

access_firestore


JSON

Returns an object that provides JSON functions.

The parse() function parses a JSON string to construct the value or object described by the string. If the value cannot be parsed (eg malformed JSON), the function will return undefined . If the input value is not a string, the input will be coerced to a string.

The stringify() function converts the input into a JSON string. If the value cannot be parsed (eg the object has a cycle), the method will return 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'});

Syntax

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

Associated permissions

هیچ کدام.


Math

An object providing Math functions.

Syntax

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

پارامترها

Math function parameters are converted to numbers.

Associated permissions

هیچ کدام.


Messages

The following APIs work together to allow passing messages between different parts of a container.


addMessageListener

Adds a function that listens for a message of a particular type. When a message of that type is sent using the sendMessage API (typically by a tag), the callback will be run synchronously. The callback is run with two parameters:

  1. messageType:string
  2. message:Object

If the callback is added in a client, the callback will receive messages across all of the events that client creates. If the callback should receive messages from only a certain event, then bind this API to the event using bindToEvent in the runContainer API's onStart function. See the example.

Syntax

const addMessageListener = require('addMessageListener');

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

پارامترها

پارامتر نوع توضیحات
messageType رشته The message type to listen for. If the value is not a string, it will be coerced to a string.
callback تابع The callback to run when a message of the applicable message type is sent. If the callback is not a function, the API will do nothing.

مثال

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

Associated permissions

Requires use_message permission. The permission must be configured to permit at least:

  • A message type with Usage of listen or listen_and_send .

hasMessageListener

Returns true if a message listener has been added for the given message type. Returns false otherwise.

Syntax

const hasMessageListener = require('hasMessageListener');

hasMessageListener('send_pixel');

Associated permissions

هیچ کدام.


sendMessage

Sends a message of the specified type to a registered listener. This can be used to send messages from a tag back to the client that ran the container.

Syntax

const sendMessage = require('sendMessage');

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

پارامترها

پارامتر نوع توضیحات
messageType رشته The message type to send. If the value is not a string, it will be coerced to a string.
message شیء The message to send. If the message is not an object, the API will do nothing.

Associated permissions

Requires use_message permission. The permission must be configured to permit at least:

  • A message type with Usage of listen_and_send or send .

Object

Returns an object that provides Object methods.

The keys() method provides the Standard Library Object.keys() behavior. It returns an array of a given object's own enumerable property names in the same order that a for...in... loop would. If the input value is not an object, it will be coerced to an object.

The values() method provides the Standard Library Object.values() behavior. It returns an array of a given object's own enumerable property values in the same order that a for...in... loop would. If the input value is not an object, it will be coerced to an object.

The entries() method provides the Standard Library Object.entries() behavior. It returns an array of a given object's own enumerable property [key, value] pairs in the same order that a for...in... loop would. If the input value is an not an object, it will be coerced to an object.

The freeze() method provides the Standard Library Object.freeze() behavior. A frozen object can no longer be changed; freezing an object prevents new properties from being added to it, existing properties from being removed, and the values of existing properties from being changed. freeze() returns the same object that was passed in. A primitive or null argument will be treated as if it were a frozen object, and will be returned.

The delete() method provides the Standard Library delete operator behavior. It removes the given key from the object unless the object is frozen. Like the Standard Library delete operator, it returns true if the first input value ( objectInput ) is an object that is not frozen even if the second input value ( keyToDelete ) specifies a key that does not exist. It returns false in all other cases. However, it differs from the Standard Library delete operator in the following ways:

  • keyToDelete cannot be a dot-delimited string that specifies a nested key.
  • delete() cannot be used to remove elements from an array.
  • delete() cannot be used to remove any properties from the global scope.

Syntax

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

پارامترها

Object.keys

پارامتر نوع توضیحات
objectInput هر The object whose keys to enumerate. If the input is not an object, it will be coerced to an object.

Object.values

پارامتر نوع توضیحات
objectInput هر The object whose values to enumerate. If the input is not an object, it will be coerced to an object.

Object.entries

پارامتر نوع توضیحات
objectInput هر The object whose key/value pairs to enumerate. If the input is not an object, it will be coerced to an object.

Object.freeze

پارامتر نوع توضیحات
objectInput هر The object to freeze. If the input is not an object, it will be treated as a frozen object.

Object.delete

پارامتر نوع توضیحات
objectInput هر The object whose key to delete.
keyToDelete رشته The top-level key to delete.

مثال

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

Returns an object that provides methods for interacting with promises.

Promises are functionally equivalent to JavaScript promises. Each instance has three methods that return a Promise which allows further action when a promise settles:

  • .then() - Handles both the resolved and rejected cases. It takes two callbacks as parameters: one for the success case and one for the failure case.
  • .catch() - Handles the rejected cases only. Takes one callback as a parameter.
  • .finally() - Provides a way for code to be run whether the promise was resolved or rejected. Takes one callback as a parameter that is invoked with no argument.

A variable that returns a promise equals the resolved value of the promise, or false if the promise rejects.

مثال

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

Returns a promise that either:

  • resolves when all the inputs have resolved, or
  • rejects when any of the inputs reject

Syntax

Promise.all(inputs);

پارامترها

پارامتر نوع توضیحات
inputs آرایه An array of values or promises. If an input is not a promise, the input is passed through as if it's the resolved value of a promise. Throws an error if the input is not an array.

مثال

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

Associated permissions

هیچ کدام.

Promise.create

Creates a promise that is functionally equivalent to a JavaScript promise.

Syntax

Promise.create(resolver);

پارامترها

پارامتر نوع توضیحات
resolver تابع A function that is invoked with two functions -- resolve and reject. The returned promise will resolve or reject when the corresponding parameter is invoked. Throws an error if resolver is not a function.

مثال

const Promise = require('Promise');

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

Associated permissions

هیچ کدام.

API های تست

These APIs work with sandboxed JavaScript tests to build tests for custom templates in Google Tag Manager. These test APIs do not need a require() statement. [Learn more about custom template tests].


assertApi

Returns a matcher object that can be used to fluently make assertions about the given API.

Syntax

assertApi(apiName)

پارامترها

پارامتر نوع توضیحات
apiName رشته The name of the api to check; same string as passed to require() .

Matchers

  • 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

The assertThat API is modeled after Google's [Truth] library. It returns an object that can be used to fluently make assertions about a subject's value. An assertion failure will immediately stop the test and mark it as failed. However, a failure in one test will not affect other test cases.

Syntax

assertThat(actual, opt_message)

پارامترها

پارامتر نوع توضیحات
actual هر The value to use in the fluent checks.
opt_message رشته Optional message to print if the assertion fails.

Matchers

تطبیق دهنده توضیحات
isUndefined() Asserts that the subject is undefined .
isDefined() Asserts that the subject is not undefined .
isNull() Asserts that the subject is null .
isNotNull() Asserts that the subject is not null .
isFalse() Asserts that the subject is false .
isTrue() Asserts that the subject is true .
isFalsy() Asserts that the subject is falsy. Falsy values are undefined , null , false , NaN , 0, and '' (empty string).
isTruthy() Asserts that the subject is truthy. Falsy values are undefined , null , false , NaN , 0, and '' (empty string).
isNaN() Asserts that the subject is the value NaN.
isNotNaN() Asserts that the subject is any value besides NaN.
isInfinity() Asserts that the subject is positive or negative Infinity.
isNotInfinity() Asserts that the subject is any value besides positive or negative Infinity.
isEqualTo(expected) Asserts that the subject is equal to the given value. This is a value comparison, not a reference comparison. The contents of objects and arrays are compared recursively.
isNotEqualTo(expected) Asserts that the subject is not equal to the given value. This is a value comparison, not a reference comparison. The contents of objects and arrays are compared recursively.
isAnyOf(...expected) Asserts that the subject is equal to one of the given value. This is a value comparison, not a reference comparison. The contents of objects and arrays are compared recursively.
isNoneOf(...expected) Asserts that the subject is not equal to any of the given values. This is a value comparison, not a reference comparison. The contents of objects and arrays are compared recursively.
isStrictlyEqualTo(expected) Asserts that the subject is strictly equal ( === ) to the given value.
isNotStrictlyEqualTo(expected) Asserts that the subject is not strictly equal ( !== ) to the given value.
isGreaterThan(expected) Asserts that the subject is greater than ( > ) the given value in an ordered comparison.
isGreaterThanOrEqualTo(expected) Asserts that the subject is greater than or equal to ( >= ) the given value in an ordered comparison.
isLessThan(expected) Asserts that the subject is less than ( < ) the given value in an ordered comparison.
isLessThanOrEqualTo(expected) Asserts that the subject is less than or equal to ( <= ) the given value in an ordered comparison.
contains(...expected) Asserts that the subject is an array or string that contains all of the given values in any order. This is a value comparison, not a reference comparison. The contents of objects and arrays are compared recursively.
doesNotContain(...expected) Asserts that the subject is an array or string that contains none of the given values. This is a value comparison, not a reference comparison. The contents of objects and arrays are compared recursively.
containsExactly(...expected) Asserts that the subject is an array that contains all of the given values in any order and no other values. This is a value comparison, not a reference comparison. The contents of objects and arrays are compared recursively.
doesNotContainExactly(...expected) Asserts that the subject is an array that has contains a different set of values from the given values in any order. This is a value comparison, not a reference comparison. The contents of objects and arrays are compared recursively.
hasLength(expected) Asserts that the subject is an array or string with the given length. The assertion always fails if the value is not an array or string.
isEmpty() Asserts that the subject is an array or string that is empty (length = 0). The assertion always fails if the value is not an array or string.
isNotEmpty() Asserts that the subject is an array or string that is not empty (length > 0). The assertion always fails if the value is not an array or string.
isArray() Asserts that the type of the subject is an array.
isBoolean() Asserts that the type of the subject is a boolean.
isFunction() Asserts that the type of the subject is a function.
isNumber() Asserts that the type of the subject is a number.
isObject() Asserts that the type of the subject is an object.
isString() Asserts that the type of the subject is a string.

مثال‌ها

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

Immediately fails the current test and prints the given message, if supplied.

Syntax

fail(opt_message);

پارامترها

پارامتر نوع توضیحات
opt_message رشته Optional error message text.

مثال

fail('This test has failed.');

mock

The mock API allows you to override the behavior of Sandboxed APIs. The mock API is safe to use in template code, but it is operational only in test mode. Mocks are reset before each test is run.

Syntax

mock(apiName, returnValue);

پارامترها

پارامتر نوع توضیحات
apiName رشته The name of the API to mock; same string as passed to require()
returnValue هر The value to return for the API or a function called in place of the API. If returnValue is a function, that function is called in place of the Sandboxed API; if returnValue is anything other than a function, that value is returned in place of the Sandboxed API.

مثال‌ها

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

mockObject

The mockObject API lets you override the behavior of Sandboxed APIs that return an object. The API is safe to use in template code, but it is operational only in test mode. Mocks are reset before each test is run.

Syntax

mockObject(apiName, objectMock);

پارامترها

پارامتر نوع توضیحات
apiName رشته The name of the API to mock; same string as passed to require()
objectMock شیء The value to return for the API or a function called in place of the API. Must be an object.

مثال‌ها

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

Runs the code for the template, ie the content of the Code tab, in the current test environment with a given input data object.

Syntax

runCode(data)

پارامترها

پارامتر نوع توضیحات
data شیء Data object to be used in the test.

مقدار بازگشتی

Returns the value of a variable for variable templates; returns undefined for all other template types.

مثال

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