این سند، 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.
});
مجوزهای مرتبط
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();
مجوزهای مرتبط
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 استفاده شود، شامل یک هدر مجوز برای 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();
مجوزهای مرتبط
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
مسیر درخواست را بدون رشته پرسوجو برمیگرداند. برای مثال، اگر آدرس اینترنتی '/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();
مجوزهای مرتبط
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 را ترجیح دهید.
عددی را برمیگرداند که زمان فعلی را بر حسب میلیثانیه از زمان آغاز یونیکس نشان میدهد، همانطور که توسط 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 است. |
مجوزهای مرتبط
حداقل نسخه تصویر
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 یک یا چند آرگومان میگیرد که در صورت لزوم، هر کدام به یک رشته تبدیل شده و در کنسول ثبت میشوند.
مجوزهای مرتبط
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 مراجعه کنید.
مجوزهای مرتبط
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 | تابع | یک تابع فراخوانی که بلافاصله، قبل از شروع به کار تگها، فراخوانی میشود. |
مجوزهای مرتبط
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 . |
مجوزهای مرتبط
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 . |
مجوزهای مرتبط
sendPixelFromBrowser
دستوری را به مرورگر ارسال میکند تا URL ارائه شده را به عنوان یک تگ <img> بارگذاری کند. این پروتکل دستوری در تگهای وب Google Tag for Google Analytics و Google Analytics: GA Event پشتیبانی میشود. شما باید 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 . (به Options در زیر مراجعه کنید.) |
noEncode | بولی | اگر مقدار آن درست باشد، مقدار کوکی کدگذاری نخواهد شد. مقدار پیشفرض آن false است. |
دامنه: میزبان (host) که کوکی به آن ارسال خواهد شد. اگر روی مقدار ویژه 'auto' تنظیم شود، میزبان به طور خودکار با استفاده از استراتژی زیر محاسبه میشود:
- eTLD+1 مربوط به سربرگ
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 : تعداد ثانیهها تا زمان انقضای کوکی. عدد صفر یا منفی، کوکی را فوراً منقضی میکند. اگر هم
expiresو همmax-ageتنظیم شده باشند،max-ageاولویت دارد.مسیر : مسیری که باید در URL درخواستی وجود داشته باشد، در غیر این صورت مرورگر هدر کوکی را ارسال نخواهد کرد.
امن : اگر روی
trueتنظیم شود، کوکی فقط زمانی به سرور ارسال میشود که درخواستی از یک نقطه پایانیhttps:ارسال شود.sameSite : تأیید میکند که کوکی نباید با درخواستهای بین مبدا ارسال شود. باید
'strict'،'lax'یا'none'باشد.
مجوزهای مرتبط
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);
});
مجوزهای مرتبط
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 را تعریف میکند. یک پارامتر اختیاری و دو پارامتر اجباری وجود دارد:
|
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);
مجوزهای مرتبط
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 | شیء | گزینههای درخواست اختیاری . تنها گزینه پشتیبانیشده projectId است. کلیدهای گزینه ناشناخته نادیده گرفته میشوند. (به بخش گزینهها در زیر مراجعه کنید.) |
| پارامتر | نوع | توضیحات |
|---|---|---|
projectId | رشته | اختیاری . شناسه پروژه پلتفرم ابری گوگل. در صورت حذف، projectId از متغیر محیطی GOOGLE_CLOUD_PROJECT بازیابی میشود، مادامی که تنظیمات مجوز access_firestore برای شناسه پروژه روی * یا GOOGLE_CLOUD_PROJECT تنظیم شده باشد. اگر کانتینر سرور روی Google Cloud در حال اجرا باشد، GOOGLE_CLOUD_PROJECT از قبل روی شناسه پروژه Google Cloud تنظیم خواهد شد. |
مثال
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() 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
تابعی اضافه میکند که به پیامی از نوع خاص گوش میدهد. وقتی پیامی از آن نوع با استفاده از API sendMessage (معمولاً توسط یک تگ) ارسال میشود، تابع فراخوانی (callback) به صورت همزمان اجرا میشود. این تابع فراخوانی با دو پارامتر اجرا میشود:
-
messageType:string -
message:Object
اگر تابع فراخوانی (callback) در یک کلاینت اضافه شود، تابع فراخوانی، پیامها را از تمام رویدادهایی که کلاینت ایجاد میکند دریافت خواهد کرد. اگر تابع فراخوانی باید فقط از یک رویداد خاص پیام دریافت کند، این API را با استفاده bindToEvent در تابع onStart از API مربوط به runContainer به رویداد متصل کنید. به مثال توجه کنید.
نحو
const addMessageListener = require('addMessageListener');
addMessageListener('send_pixel', (messageType, message) => {
// This will be run whenever something sends a 'send_pixel' message.
});
پارامترها
| پارامتر | نوع | توضیحات |
|---|---|---|
messageType | رشته | نوع پیامی که باید به آن گوش داد. اگر مقدار رشته نباشد، به یک رشته تبدیل میشود. |
callback | تابع | تابع فراخوانی که هنگام ارسال پیامی از نوع پیام مربوطه اجرا میشود. اگر تابع فراخوانی یک تابع نباشد، API هیچ کاری انجام نمیدهد. |
مثال
const addMessageListener = require('addMessageListener');
const claimRequest = require('claimRequest');
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
claimRequest();
addMessageListener('send_pixel', (messageType, message) => {
// This will be run whenever a tag sends a 'send_pixel' message.
});
const events = extractEventsFromMpv1();
let eventsCompleted = 0;
events.forEach((event, i) => {
runContainer(events[i], /* onComplete= */ () => {
if (events.length === ++eventsCompleted) {
returnResponse();
}
}, /* onStart= */ (bindToEvent) => {
if (i === 0) {
bindToEvent(addMessageListener)('send_pixel', (messageType, message) => {
// This will be called whenever a tag for the first event sends a
// 'send_pixel' message.
});
}
});
});
مجوزهای مرتبط
به مجوز use_message نیاز دارد. این مجوز باید طوری پیکربندی شود که حداقل موارد زیر را مجاز بداند:
- یک نوع پیام با
Usagelistenیاlisten_and_send.
hasMessageListener
اگر یک شنونده پیام برای نوع پیام داده شده اضافه شده باشد، مقدار true و در غیر این صورت مقدار false را برمیگرداند.
نحو
const hasMessageListener = require('hasMessageListener');
hasMessageListener('send_pixel');
مجوزهای مرتبط
هیچ کدام.
sendMessage
پیامی از نوع مشخص شده را به یک شنونده ثبت شده ارسال میکند. این میتواند برای ارسال پیامها از یک تگ به کلاینتی که کانتینر را اجرا کرده است، استفاده شود.
نحو
const sendMessage = require('sendMessage');
sendMessage('send_pixel', {url: 'https://analytics.example.com/collect'});
پارامترها
| پارامتر | نوع | توضیحات |
|---|---|---|
messageType | رشته | نوع پیامی که قرار است ارسال شود. اگر مقدار رشته نباشد، به صورت رشتهای ارسال خواهد شد. |
message | شیء | پیامی که باید ارسال شود. اگر پیام یک شیء نباشد، API هیچ کاری انجام نخواهد داد. |
مجوزهای مرتبط
به مجوز use_message نیاز دارد. این مجوز باید طوری پیکربندی شود که حداقل موارد زیر را مجاز بداند:
- یک نوع پیام با
Usagelisten_and_sendیاsend.
Object
یک شیء را برمیگرداند که متدهای Object methods) را ارائه میدهد.
متد keys() رفتار کتابخانه استاندارد Object.keys() را ارائه میدهد. این متد آرایهای از نامهای ویژگیهای قابل شمارش یک شیء داده شده را به همان ترتیبی که یک حلقه for...in... برمیگرداند، برمیگرداند. اگر مقدار ورودی یک شیء نباشد، به یک شیء منتقل میشود.
متد values() رفتار کتابخانه استاندارد Object.values() را ارائه میدهد. این متد آرایهای از مقادیر ویژگیهای قابل شمارش یک شیء داده شده را به همان ترتیبی که یک حلقه for...in... برمیگرداند، برمیگرداند. اگر مقدار ورودی یک شیء نباشد، به یک شیء منتقل میشود.
متد entries() رفتار کتابخانه استاندارد Object.entries() را ارائه میدهد. این متد آرایهای از جفتهای ویژگی قابل شمارش [key, value] یک شیء داده شده را به همان ترتیبی که یک حلقه for...in... انجام میدهد، برمیگرداند. اگر مقدار ورودی یک شیء نباشد، به یک شیء منتقل میشود.
متد freeze() رفتار کتابخانه استاندارد Object.freeze() را ارائه میدهد. یک شیء منجمد دیگر قابل تغییر نیست؛ منجمد کردن یک شیء از اضافه شدن ویژگیهای جدید به آن، حذف ویژگیهای موجود و تغییر مقادیر ویژگیهای موجود جلوگیری میکند. freeze() همان شیء ارسال شده را برمیگرداند. یک آرگومان اولیه یا تهی مانند یک شیء منجمد رفتار میشود و بازگردانده میشود.
متد delete() رفتار عملگر حذف کتابخانه استاندارد را ارائه میدهد. این متد کلید داده شده را از شیء حذف میکند، مگر اینکه شیء فریز شده باشد. مانند عملگر حذف کتابخانه استاندارد، اگر مقدار ورودی اول ( objectInput ) شیءای باشد که فریز نشده باشد، حتی اگر مقدار ورودی دوم ( keyToDelete ) کلیدی را مشخص کند که وجود ندارد، true true را برمیگرداند. در سایر موارد false را برمیگرداند. با این حال، این متد از جهات زیر با عملگر حذف کتابخانه استاندارد متفاوت است:
-
keyToDeleteنمیتواند یک رشتهی جدا شده با نقطه باشد که یک کلید تو در تو را مشخص میکند. -
delete()نمیتوان برای حذف عناصر از یک آرایه استفاده کرد. -
delete()نمیتواند هیچ ویژگی را از محدوده سراسری حذف کند.
نحو
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
یک شیء را برمیگرداند که متدهایی برای تعامل با promiseها ارائه میدهد.
Promiseها از نظر عملکردی معادل Promiseهای جاوااسکریپت هستند. هر نمونه سه متد دارد که یک Promise را برمیگرداند که امکان انجام اقدامات بیشتر را هنگام انجام یک Promise فراهم میکند:
-
.then() - هر دو مورد حلشده و رد شده را مدیریت میکند. دو تابع فراخوانی به عنوان پارامتر میگیرد: یکی برای مورد موفقیتآمیز و دیگری برای مورد شکست. -
.catch() - فقط موارد رد شده را مدیریت میکند. یک تابع فراخوانی مجدد را به عنوان پارامتر میگیرد. -
.finally() - روشی برای اجرای کد فراهم میکند، چه promise حل شده باشد و چه رد شده باشد. یک تابع فراخوانی برگشتی را به عنوان پارامتری که بدون هیچ آرگومانی فراخوانی میشود، میگیرد.
متغیری که یک promise را برمیگرداند، برابر با مقدار حلشدهی promise است، یا اگر promise رد شود 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 را برمیگرداند که یا:
- زمانی حل میشود که همه ورودیها حل شده باشند، یا
- وقتی هر یک از ورودیها رد شوند، رد میکند
نحو
Promise.all(inputs);
پارامترها
| پارامتر | نوع | توضیحات |
|---|---|---|
inputs | آرایه | آرایهای از مقادیر یا promiseها. اگر ورودی یک promise نباشد، ورودی طوری ارسال میشود که انگار مقدار حلشدهی یک promise است. اگر ورودی آرایه نباشد، خطا میدهد. |
مثال
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 ایجاد میکند که از نظر عملکردی معادل یک promise جاوا اسکریپت است.
نحو
Promise.create(resolver);
پارامترها
| پارامتر | نوع | توضیحات |
|---|---|---|
resolver | تابع | تابعی که با دو تابع فراخوانی میشود -- resolve و reject. مقدار بازگشتی promise، زمانی که پارامتر مربوطه فراخوانی شود، resolve یا reject خواهد شد. اگر resolver یک تابع نباشد، خطا میدهد. |
مثال
const Promise = require('Promise');
return Promise.create((resolve, reject) => {
// Do asynchronous work that eventually calls resolve() or reject()
});
مجوزهای مرتبط
هیچ کدام.
API های تست
این APIها با تستهای جاوا اسکریپتِ سندباکسشده کار میکنند تا تستهایی برای قالبهای سفارشی در گوگل تگ منیجر بسازند. این APIهای تست نیازی به دستور require() ندارند. [درباره تستهای قالب سفارشی بیشتر بدانید].
assertApi
یک شیء تطبیقدهنده را برمیگرداند که میتواند برای ایجاد عبارات شرطی (assertions) در مورد 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 از کتابخانه [Truth] گوگل الگوبرداری شده است. این رابط، شیءای را برمیگرداند که میتواند برای ایجاد روانِ ادعاها (assertions) در مورد مقدار یک موضوع (subject) مورد استفاده قرار گیرد. شکست در ادعا، بلافاصله آزمون را متوقف کرده و آن را به عنوان شکست خورده علامتگذاری میکند. با این حال، شکست در یک آزمون، سایر موارد آزمون را تحت تأثیر قرار نمیدهد.
نحو
assertThat(actual, opt_message)
پارامترها
| پارامتر | نوع | توضیحات |
|---|---|---|
actual | هر | مقداری که در بررسیهای fluent استفاده میشود. |
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
API mock به شما امکان میدهد رفتار APIهای Sandboxed را نادیده بگیرید. استفاده از API ساختگی در کد قالب بیخطر است، اما فقط در حالت آزمایشی قابل اجرا است. قبل از اجرای هر آزمایش، نمونههای ساختگی بازنشانی میشوند.
نحو
mock(apiName, returnValue);
پارامترها
| پارامتر | نوع | توضیحات |
|---|---|---|
apiName | رشته | نام API که قرار است شبیهسازی شود؛ همان رشتهای که به require() ارسال شده است. |
returnValue | هر | مقداری که قرار است برای API یا تابعی که به جای API فراخوانی میشود، برگردانده شود. اگر returnValue یک تابع باشد، آن تابع به جای API در محیط Sandbox فراخوانی میشود؛ اگر returnValue هر چیزی غیر از تابع باشد، آن مقدار به جای API در محیط Sandbox بازگردانده میشود. |
مثالها
mock('encodeUri', "https://endpoint.example.com/?account=12345");
mock('sendPixel', function(url, onSuccess, onFailure) {
onSuccess();
});
mockObject
API mockObject به شما امکان میدهد رفتار APIهای Sandboxed که یک شیء برمیگردانند را لغو کنید. استفاده از این API در کد قالب بیخطر است، اما فقط در حالت آزمایشی قابل اجرا است. Mockها قبل از اجرای هر آزمایش، بازنشانی میشوند.
نحو
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
کد مربوط به الگو، یعنی محتوای تب Code ، را در محیط تست فعلی با یک شیء داده ورودی مشخص اجرا میکند.
نحو
runCode(data)
پارامترها
| پارامتر | نوع | توضیحات |
|---|---|---|
data | شیء | شیء دادهای که قرار است در آزمون استفاده شود. |
مقدار بازگشتی
برای قالبهای متغیر، مقدار یک متغیر را برمیگرداند؛ برای سایر انواع قالب، undefined را برمیگرداند.
مثال
runCode({field1: 123, field2: 'value'});
،
این سند، 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.
});
مجوزهای مرتبط
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();
مجوزهای مرتبط
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 استفاده شود، شامل یک هدر مجوز برای 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();
مجوزهای مرتبط
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
مسیر درخواست را بدون رشته پرسوجو برمیگرداند. برای مثال، اگر آدرس اینترنتی '/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();
مجوزهای مرتبط
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 را ترجیح دهید.
عددی را برمیگرداند که زمان فعلی را بر حسب میلیثانیه از زمان آغاز یونیکس نشان میدهد، همانطور که توسط 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 است. |
مجوزهای مرتبط
حداقل نسخه تصویر
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 یک یا چند آرگومان میگیرد که در صورت لزوم، هر کدام به یک رشته تبدیل شده و در کنسول ثبت میشوند.
مجوزهای مرتبط
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 مراجعه کنید.
مجوزهای مرتبط
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 | تابع | یک تابع فراخوانی که بلافاصله، قبل از شروع به کار تگها، فراخوانی میشود. |
مجوزهای مرتبط
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 . |
مجوزهای مرتبط
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 . |
مجوزهای مرتبط
sendPixelFromBrowser
دستوری را به مرورگر ارسال میکند تا URL ارائه شده را به عنوان یک تگ <img> بارگذاری کند. این پروتکل دستوری در تگهای وب Google Tag for Google Analytics و Google Analytics: GA Event پشتیبانی میشود. شما باید 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 . (به Options در زیر مراجعه کنید.) |
noEncode | بولی | اگر مقدار آن درست باشد، مقدار کوکی کدگذاری نخواهد شد. مقدار پیشفرض آن false است. |
دامنه: میزبان (host) که کوکی به آن ارسال خواهد شد. اگر روی مقدار ویژه 'auto' تنظیم شود، میزبان به طور خودکار با استفاده از استراتژی زیر محاسبه میشود:
- eTLD+1 مربوط به سربرگ
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 : تعداد ثانیهها تا زمان انقضای کوکی. عدد صفر یا منفی، کوکی را فوراً منقضی میکند. اگر هم
expiresو همmax-ageتنظیم شده باشند،max-ageاولویت دارد.مسیر : مسیری که باید در URL درخواستی وجود داشته باشد، در غیر این صورت مرورگر هدر کوکی را ارسال نخواهد کرد.
امن : اگر روی
trueتنظیم شود، کوکی فقط زمانی به سرور ارسال میشود که درخواستی از یک نقطه پایانیhttps:ارسال شود.sameSite : تأیید میکند که کوکی نباید با درخواستهای بین مبدا ارسال شود. باید
'strict'،'lax'یا'none'باشد.
مجوزهای مرتبط
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);
});
مجوزهای مرتبط
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 را تعریف میکند. یک پارامتر اختیاری و دو پارامتر اجباری وجود دارد:
|
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);
مجوزهای مرتبط
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 | شیء | گزینههای درخواست اختیاری . تنها گزینه پشتیبانیشده projectId است. کلیدهای گزینه ناشناخته نادیده گرفته میشوند. (به بخش گزینهها در زیر مراجعه کنید.) |
| پارامتر | نوع | توضیحات |
|---|---|---|
projectId | رشته | اختیاری . شناسه پروژه پلتفرم ابری گوگل. در صورت حذف، projectId از متغیر محیطی GOOGLE_CLOUD_PROJECT بازیابی میشود، مادامی که تنظیمات مجوز access_firestore برای شناسه پروژه روی * یا GOOGLE_CLOUD_PROJECT تنظیم شده باشد. اگر کانتینر سرور روی Google Cloud در حال اجرا باشد، GOOGLE_CLOUD_PROJECT از قبل روی شناسه پروژه Google Cloud تنظیم خواهد شد. |
مثال
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() 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
تابعی اضافه میکند که به پیامی از نوع خاص گوش میدهد. وقتی پیامی از آن نوع با استفاده از API sendMessage (معمولاً توسط یک تگ) ارسال میشود، تابع فراخوانی (callback) به صورت همزمان اجرا میشود. این تابع فراخوانی با دو پارامتر اجرا میشود:
-
messageType:string -
message:Object
اگر تابع فراخوانی (callback) در یک کلاینت اضافه شود، تابع فراخوانی، پیامها را از تمام رویدادهایی که کلاینت ایجاد میکند دریافت خواهد کرد. اگر تابع فراخوانی باید فقط از یک رویداد خاص پیام دریافت کند، این API را با استفاده bindToEvent در تابع onStart از API مربوط به runContainer به رویداد متصل کنید. به مثال توجه کنید.
نحو
const addMessageListener = require('addMessageListener');
addMessageListener('send_pixel', (messageType, message) => {
// This will be run whenever something sends a 'send_pixel' message.
});
پارامترها
| پارامتر | نوع | توضیحات |
|---|---|---|
messageType | رشته | نوع پیامی که باید به آن گوش داد. اگر مقدار رشته نباشد، به یک رشته تبدیل میشود. |
callback | تابع | تابع فراخوانی که هنگام ارسال پیامی از نوع پیام مربوطه اجرا میشود. اگر تابع فراخوانی یک تابع نباشد، API هیچ کاری انجام نمیدهد. |
مثال
const addMessageListener = require('addMessageListener');
const claimRequest = require('claimRequest');
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
claimRequest();
addMessageListener('send_pixel', (messageType, message) => {
// This will be run whenever a tag sends a 'send_pixel' message.
});
const events = extractEventsFromMpv1();
let eventsCompleted = 0;
events.forEach((event, i) => {
runContainer(events[i], /* onComplete= */ () => {
if (events.length === ++eventsCompleted) {
returnResponse();
}
}, /* onStart= */ (bindToEvent) => {
if (i === 0) {
bindToEvent(addMessageListener)('send_pixel', (messageType, message) => {
// This will be called whenever a tag for the first event sends a
// 'send_pixel' message.
});
}
});
});
مجوزهای مرتبط
به مجوز use_message نیاز دارد. این مجوز باید طوری پیکربندی شود که حداقل موارد زیر را مجاز بداند:
- یک نوع پیام با
Usagelistenیاlisten_and_send.
hasMessageListener
اگر یک شنونده پیام برای نوع پیام داده شده اضافه شده باشد، مقدار true و در غیر این صورت مقدار false را برمیگرداند.
نحو
const hasMessageListener = require('hasMessageListener');
hasMessageListener('send_pixel');
مجوزهای مرتبط
هیچ کدام.
sendMessage
پیامی از نوع مشخص شده را به یک شنونده ثبت شده ارسال میکند. این میتواند برای ارسال پیامها از یک تگ به کلاینتی که کانتینر را اجرا کرده است، استفاده شود.
نحو
const sendMessage = require('sendMessage');
sendMessage('send_pixel', {url: 'https://analytics.example.com/collect'});
پارامترها
| پارامتر | نوع | توضیحات |
|---|---|---|
messageType | رشته | نوع پیامی که قرار است ارسال شود. اگر مقدار رشته نباشد، به صورت رشتهای ارسال خواهد شد. |
message | شیء | پیامی که باید ارسال شود. اگر پیام یک شیء نباشد، API هیچ کاری انجام نخواهد داد. |
مجوزهای مرتبط
به مجوز use_message نیاز دارد. این مجوز باید طوری پیکربندی شود که حداقل موارد زیر را مجاز بداند:
- یک نوع پیام با
Usagelisten_and_sendیاsend.
Object
یک شیء را برمیگرداند که متدهای Object methods) را ارائه میدهد.
متد keys() رفتار کتابخانه استاندارد Object.keys() را ارائه میدهد. این متد آرایهای از نامهای ویژگیهای قابل شمارش یک شیء داده شده را به همان ترتیبی که یک حلقه for...in... برمیگرداند، برمیگرداند. اگر مقدار ورودی یک شیء نباشد، به یک شیء منتقل میشود.
متد values() رفتار کتابخانه استاندارد Object.values() را ارائه میدهد. این متد آرایهای از مقادیر ویژگیهای قابل شمارش یک شیء داده شده را به همان ترتیبی که یک حلقه for...in... برمیگرداند، برمیگرداند. اگر مقدار ورودی یک شیء نباشد، به یک شیء منتقل میشود.
متد entries() رفتار کتابخانه استاندارد Object.entries() را ارائه میدهد. این متد آرایهای از جفتهای ویژگی قابل شمارش [key, value] یک شیء داده شده را به همان ترتیبی که یک حلقه for...in... انجام میدهد، برمیگرداند. اگر مقدار ورودی یک شیء نباشد، به یک شیء منتقل میشود.
متد freeze() رفتار کتابخانه استاندارد Object.freeze() را ارائه میدهد. یک شیء منجمد دیگر قابل تغییر نیست؛ منجمد کردن یک شیء از اضافه شدن ویژگیهای جدید به آن، حذف ویژگیهای موجود و تغییر مقادیر ویژگیهای موجود جلوگیری میکند. freeze() همان شیء ارسال شده را برمیگرداند. یک آرگومان اولیه یا تهی مانند یک شیء منجمد رفتار میشود و بازگردانده میشود.
متد delete() رفتار عملگر حذف کتابخانه استاندارد را ارائه میدهد. این متد کلید داده شده را از شیء حذف میکند، مگر اینکه شیء فریز شده باشد. مانند عملگر حذف کتابخانه استاندارد، اگر مقدار ورودی اول ( objectInput ) شیءای باشد که فریز نشده باشد، حتی اگر مقدار ورودی دوم ( keyToDelete ) کلیدی را مشخص کند که وجود ندارد، true true را برمیگرداند. در سایر موارد مقدار false را برمیگرداند. با این حال، این متد از جهات زیر با عملگر حذف کتابخانه استاندارد متفاوت است:
-
keyToDeleteنمیتواند یک رشتهی جدا شده با نقطه باشد که یک کلید تو در تو را مشخص میکند. -
delete()نمیتوان برای حذف عناصر از یک آرایه استفاده کرد. -
delete()نمیتواند هیچ ویژگی را از محدوده سراسری حذف کند.
نحو
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
یک شیء را برمیگرداند که متدهایی برای تعامل با promiseها ارائه میدهد.
Promiseها از نظر عملکردی معادل Promiseهای جاوااسکریپت هستند. هر نمونه سه متد دارد که یک Promise را برمیگرداند که امکان انجام اقدامات بیشتر را هنگام انجام یک Promise فراهم میکند:
-
.then() - هر دو مورد حلشده و رد شده را مدیریت میکند. دو تابع فراخوانی به عنوان پارامتر میگیرد: یکی برای مورد موفقیتآمیز و دیگری برای مورد شکست. -
.catch() - فقط موارد رد شده را مدیریت میکند. یک تابع فراخوانی مجدد را به عنوان پارامتر میگیرد. -
.finally() - روشی برای اجرای کد فراهم میکند، چه promise حل شده باشد و چه رد شده باشد. یک تابع فراخوانی برگشتی را به عنوان پارامتری که بدون هیچ آرگومانی فراخوانی میشود، میگیرد.
متغیری که یک promise را برمیگرداند، برابر با مقدار حلشدهی promise است، یا اگر promise رد شود 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 را برمیگرداند که یا:
- زمانی حل میشود که همه ورودیها حل شده باشند، یا
- وقتی هر یک از ورودیها رد شوند، رد میکند
نحو
Promise.all(inputs);
پارامترها
| پارامتر | نوع | توضیحات |
|---|---|---|
inputs | آرایه | آرایهای از مقادیر یا promiseها. اگر ورودی یک promise نباشد، ورودی طوری ارسال میشود که انگار مقدار حلشدهی یک promise است. اگر ورودی آرایه نباشد، خطا میدهد. |
مثال
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 ایجاد میکند که از نظر عملکردی معادل یک promise جاوا اسکریپت است.
نحو
Promise.create(resolver);
پارامترها
| پارامتر | نوع | توضیحات |
|---|---|---|
resolver | تابع | تابعی که با دو تابع فراخوانی میشود -- resolve و reject. مقدار بازگشتی promise، زمانی که پارامتر مربوطه فراخوانی شود، resolve یا reject خواهد شد. اگر resolver یک تابع نباشد، خطا میدهد. |
مثال
const Promise = require('Promise');
return Promise.create((resolve, reject) => {
// Do asynchronous work that eventually calls resolve() or reject()
});
مجوزهای مرتبط
هیچ کدام.
API های تست
این APIها با تستهای جاوا اسکریپتِ سندباکسشده کار میکنند تا تستهایی برای قالبهای سفارشی در گوگل تگ منیجر بسازند. این APIهای تست نیازی به دستور require() ندارند. [درباره تستهای قالب سفارشی بیشتر بدانید].
assertApi
یک شیء تطبیقدهنده را برمیگرداند که میتواند برای ایجاد عبارات شرطی (assertions) در مورد 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 از کتابخانه [Truth] گوگل الگوبرداری شده است. این رابط، شیءای را برمیگرداند که میتواند برای ایجاد روانِ ادعاها (assertions) در مورد مقدار یک موضوع (subject) مورد استفاده قرار گیرد. شکست در ادعا، بلافاصله آزمون را متوقف کرده و آن را به عنوان شکست خورده علامتگذاری میکند. با این حال، شکست در یک آزمون، سایر موارد آزمون را تحت تأثیر قرار نمیدهد.
نحو
assertThat(actual, opt_message)
پارامترها
| پارامتر | نوع | توضیحات |
|---|---|---|
actual | هر | مقداری که در بررسیهای fluent استفاده میشود. |
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
API mock به شما امکان میدهد رفتار APIهای Sandboxed را نادیده بگیرید. استفاده از API ساختگی در کد قالب بیخطر است، اما فقط در حالت آزمایشی قابل اجرا است. قبل از اجرای هر آزمایش، نمونههای ساختگی بازنشانی میشوند.
نحو
mock(apiName, returnValue);
پارامترها
| پارامتر | نوع | توضیحات |
|---|---|---|
apiName | رشته | نام API که قرار است شبیهسازی شود؛ همان رشتهای که به require() ارسال شده است. |
returnValue | هر | مقداری که برای API یا تابعی که به جای API فراخوانی میشود، برمیگردد. اگر returnValue یک تابع باشد، آن تابع به جای API در محیط Sandbox فراخوانی میشود؛ اگر returnValue هر چیزی غیر از تابع باشد، آن مقدار به جای API در محیط Sandbox بازگردانده میشود. |
مثالها
mock('encodeUri', "https://endpoint.example.com/?account=12345");
mock('sendPixel', function(url, onSuccess, onFailure) {
onSuccess();
});
mockObject
API mockObject به شما امکان میدهد رفتار APIهای Sandboxed که یک شیء برمیگردانند را لغو کنید. استفاده از این API در کد قالب بیخطر است، اما فقط در حالت آزمایشی قابل اجرا است. Mockها قبل از اجرای هر آزمایش، بازنشانی میشوند.
نحو
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
کد مربوط به الگو، یعنی محتوای تب Code ، را در محیط تست فعلی با یک شیء داده ورودی مشخص اجرا میکند.
نحو
runCode(data)
پارامترها
| پارامتر | نوع | توضیحات |
|---|---|---|
data | شیء | شیء دادهای که قرار است در آزمون استفاده شود. |
مقدار بازگشتی
برای قالبهای متغیر، مقدار یک متغیر را برمیگرداند؛ برای سایر انواع قالب، undefined را برمیگرداند.
مثال
runCode({field1: 123, field2: 'value'});