این سند میاناهای برنامهسازی کاربردی برای برچسبگذاری سمت سرور را شرح میدهد.
addEventCallback
تابع بازخوانیای را ثبت میکند که در پایان رویداد فراخوانده میشود. وقتی همه برچسبهای رویداد اجرا شد، فراخوانی برگشتی فراخوانده میشود. دو مقدار به callback ارسال میشود: شناسه محفظهای که تابع را فرامیخواند و شیئی که حاوی اطلاعاتی درباره رویداد است.
وقتی از این API در برچسبی استفاده میشود، به رویداد فعلی مرتبط میشود. وقتی از این
API در کارخواه استفاده میشود، باید بااستفاده از تابع bindToEvent در runContainer API به رویداد خاصی
محدود شود. برای جزئیات بیشتر،
نمونه را ببینید.
نحو
const addEventCallback = require('addEventCallback');
addEventCallback((containerId, eventData) => {
// Take some action based on the event data.
});
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
callback |
تابع | تابعی که در پایان رویداد فراخوانی میشود. |
شیء eventData حاوی دادههای زیر است:
| نام کلید | نوع | شرح |
|---|---|---|
tags |
Array |
آرایهای از اشیای داده برچسب. هر برچسبی که درطول رویداد فعال شده باشد
یک ورودی در این آرایه خواهد داشت. شیء داده برچسب حاوی شناسه برچسب (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 در کارخواه برای ادعای درخواست استفاده کنید. وقتی درخواستی ادعا میشود، محفظه کارخواه دیگری را اجرا نمیکند.
اگر این میانای برنامهسازی کاربردی در برچسب یا متغیر فراخوانده شود، استثنایی ایجاد میکند. اگر این میانای برنامهسازی کاربردی پساز بازگشت کارخواه فراخوانده شود (مثلاً اگر در یک فراخوانی متقابل ناهمگام مانند callLater یا تابع runContainer onComplete فراخوانده شود)، استثنایی ایجاد میکند.
کارخواه باید قبلاز فراخوانی
runContainer API، درخواست را بااستفاده از این API مطالبه کند.
نمونه
const claimRequest = require('claimRequest');
claimRequest();
نحو
claimRequest();
اجازههای مرتبط
هیچکدام.
computeEffectiveTldPlusOne
دامنه سطح بالای مؤثر + ۱ (eTLD+1) دامنه یا نشانی وب ارائهشده را برمیگرداند. eTLD+1 با ارزیابی دامنه دربرابر قوانین فهرست پسوند عمومی محاسبه میشود. eTLD+1 معمولاً بالاترین سطح دامنهای است که میتوانید در آن کوکی تنظیم کنید.
اگر آرگومان تهی یا تعریفنشده باشد، مقدار آرگومان بدون تغییر برگردانده میشود. درغیراینصورت، آرگومان به رشته تبدیل میشود. اگر آرگومان دامنه یا نشانی وب معتبری نباشد، رشته خالی برگردانده میشود. اگر سرور نتواند فهرست پسوند عمومی را واکشی کند، مقدار آرگومان بدون تغییر برگردانده میشود.
نمونه
const computeEffectiveTldPlusOne = require('computeEffectiveTldPlusOne');
// Returns 'example.co.uk'
computeEffectiveTldPlusOne('analytics.example.co.uk');
// Returns 'example.co.uk'
computeEffectiveTldPlusOne('https://analytics.example.co.uk/path');
نحو
computeEffectiveTldPlusOne(domainOrUrl);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
domainOrUrl |
رشته | دامنه یا نشانی وبی که eTLD+1 در آن محاسبه میشود. |
اجازههای مرتبط
هیچکدام.
createRegex
نمونه عبارت باقاعده جدیدی ایجاد میکند و آن را بهصورت پیچیدهشده در یک شیء برمیگرداند. نمیتوانید
مستقیماً به عبارت باقاعده دسترسی داشته باشید. بااینحال، میتوانید آن را به میانای برنامهسازی کاربردی testRegex،
String.replace()، String.match()، و String.search() منتقل کنید.
اگر عبارت باقاعده نامعتبر باشد یا Re2 در سرور دردسترس نباشد، null را برمیگرداند.
این میانای برنامهسازی کاربردی از پیادهسازی Re2 استفاده میکند. تصویر Docker سرور باید نسخه 2.0.0 یا بالاتر باشد.
نمونه
const createRegex = require('createRegex');
const domainRegex = createRegex('\\w+\\.com', 'i');
// Returns '/foobar'
'example.com/foobar'.replace(domainRegex, '');
نحو
createRegex(pattern, flags);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
pattern |
رشته | نوشتار عبارت باقاعده. |
flags |
رشته | رشته اختیاری حاوی پرچمهای عبارت باقاعده درحال ایجاد. از `g` (سراسری) و `i` (صرفنظر از اندازه حروف) پشتیبانی میشود. همه نویسههای دیگر بدون اطلاع نادیده گرفته میشوند. |
اجازههای مرتبط
هیچکدام.
حداقل نسخه تصویر
decodeUri
همه نویسههای کدگذاریشده در URI ارائهشده را رمزگشایی میکند. رشتهای را برمیگرداند که
نشاندهنده URI رمزگشاییشده است. اگر ورودی نامعتبر ارائه شود، undefined را برمیگرداند.
نمونه
const decodeUri = require('decodeUri');
const decodedUrl = decodeUri(data.encodedUrl);
if (decodedUrl) {
// ...
}
نحو
decodeUri(encoded_uri);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
encoded_uri |
رشته |
شناسه منبع یکسانی که توسط
encodeUri() یا روشهای دیگر کدگذاری شده است.
|
اجازههای مرتبط
هیچکدام.
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) کدگذاریشدهای را برمیگرداند. رشتهای را برمیگرداند که نشاندهنده رشته ارائهشده است که بهعنوان شناسه منبع یکسان کدگذاری شده است.
نمونه
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
sendHttpGet('https://www.example.com/?' + encodeUriComponent(queryInput));
نحو
encodeUriComponent(str);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
str |
رشته | بخشی از URI. |
اجازههای مرتبط
هیچکدام.
extractEventsFromMpv1
درخواست Measurement Protocol V1 ورودی را به فهرستی از رویدادها در قالب «طرحواره یکپارچه» ترجمه میکند. فهرست رویدادهای استخراجشده را برمیگرداند. اگر درخواست در قالب صحیح نباشد، خطا ایجاد میکند.
نمونه
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const isRequestMpv1 = require('isRequestMpv1');
if (isRequestMpv1()) {
const events = extractEventsFromMpv1();
for (let i = 0; i < events.length; ++i) {
const event = events[i];
// Process event.
}
}
نحو
extractEventsFromMpv1();
اجازههای مرتبط
به اجازه read_request نیاز دارد. اجازه باید بهگونهای پیکربندی شود که
حداقل به موارد زیر اجازه دسترسی دهد:
bodyquery parameters
extractEventsFromMpv2
درخواست Measurement Protocol V2 ورودی را به فهرستی از رویدادها در قالب «طرحواره یکپارچه» ترجمه میکند. فهرست رویدادهای استخراجشده را برمیگرداند. اگر درخواست در قالب صحیح نباشد، خطا ایجاد میکند.
نمونه
const extractEventsFromMpv2 = require('extractEventsFromMpv2');
const isRequestMpv2 = require('isRequestMpv2');
if (isRequestMpv2()) {
const events = extractEventsFromMpv2();
for (let i = 0; i < events.length; ++i) {
const event = events[i];
// Process event.
}
}
نحو
extractEventsFromMpv2();
اجازههای مرتبط
به اجازه read_request نیاز دارد. اجازه باید بهگونهای پیکربندی شود که
حداقل به موارد زیر اجازه دسترسی دهد:
bodyquery 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 |
number | حداقل مقدار بالقوه عدد صحیح برگرداندهشده (شامل). |
max |
number | حداکثر مقدار بالقوه عدد صحیح برگرداندهشده (شامل). |
اجازههای مرتبط
هیچکدام.
getAllEventData
نسخهای از دادههای رویداد را برمیگرداند.
نحو
getAllEventData();
اجازههای مرتبط
getAnonymizedIpAddress
نمایش رشته ناشناسسازیشده نشانی IP را که درخواست از آنجا ارسال شده است برمیگرداند.
برای نشانیهای IPv4، آخرین هشتتایی به 0 ماسک میشود (برای مثال،
198.51.100.42 به 198.51.100.0 تبدیل میشود). برای نشانیهای IPv6، آخرین ۸۰ بیت
به صفر ماسک میشود و ۴۸ بیت اول حفظ میشود (برای مثال،
2001:db8:cafe:1234:5678:90ab:cdef:1234 به 2001:db8:cafe:: تبدیل میشود).
اگر نشانی IP نامعتبر باشد یا قابلحل نباشد، "::" را برمیگرداند، بنابراین نتیجه
همیشه برای استفاده بهعنوان ip_override ایمن است.
نمونه
const getAnonymizedIpAddress = require('getAnonymizedIpAddress');
const anonymizedIp = getAnonymizedIpAddress();
نحو
getAnonymizedIpAddress();
اجازههای مرتبط
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 |
any |
مسیر کلید، که در آن اجزای مسیر با نقطه از هم جدا شدهاند. مؤلفههای
مسیر میتوانند کلیدهایی در یک شیء یا شاخصهایی در یک آرایه باشند. اگر
keyPath رشته نباشد، به رشته تبدیل میشود.
|
نحو
getEventData(keyPath);
اجازههای مرتبط
getGoogleAuth
یک شیء مجوز برمیگرداند که وقتی با
sendHttpGet یا sendHttpRequest استفاده شود،
سرصفحه مجوز برای Google Cloud APIs را دربر خواهد داشت. این API از
اطلاعات اعتباری پیشفرض برنامه برای پیدا کردن خودکار اطلاعات اعتباری از
محیط سرور استفاده میکند.
نمونه
const getGoogleAuth = require('getGoogleAuth');
const logToConsole = require('logToConsole');
const sendHttpGet = require('sendHttpGet');
const auth = getGoogleAuth({
scopes: ['https://www.googleapis.com/auth/datastore']
});
sendHttpGet(
'https://firestore.googleapis.com/v1/projects/my-project/databases/(default)/documents/collection/document',
{authorization: auth}
).then((result) => {
if (result.statusCode >= 200 && result.statusCode < 300) {
logToConsole('Result: ' + result.body);
data.gtmOnSuccess();
} else {
data.gtmOnFailure();
}
});
نحو
getGoogleAuth(scopes);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
scopes
|
Array | آرایهای از دامنههای Google API مربوط به OAuth 2.0 برای درخواست دسترسی. |
اجازههای مرتبط
به اجازه use_google_credentials نیاز دارد. اجازه باید با یک یا چند دامنه مجاز پیکربندی شود.
getGoogleScript
منبعی را از مجموعه ازپیش تعیینشدهای از اسکریپتهای Google بازیابی میکند و یک قول با اسکریپت و فرادادههای ذخیرهسازی موقت مرتبط برمیگرداند.
این وعده به شیئی حاوی دو کلید تبدیل میشود: 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'
اسکریپت Google Analytics را از
https://www.google-analytics.com/analytics.js واکشی میکند.گزینه 'GTAG' اسکریپت برچسب سایت فراگیر (gtag.js) را از
https://www.googletagmanager.com/gtag/js واکشی میکند.گزینه 'GTM' اسکریپت Google Tag Manager را از https://www.googletagmanager.com/gtm.js واکشی میکند.
|
options |
شیء | گزینههای درخواست اختیاری. گزینههای پشتیبانیشده را در زیر ببینید. |
گزینهها
| گزینه | نوع | شرح |
|---|---|---|
id |
رشته |
قابلاعمال برای 'GTAG' با شناسه سنجش gtag و
'GTM' با شناسه محفظه وب (مثلاً GTM-XXXX).
|
debug |
any | اگر درست باشد، نسخه اشکالزدایی اسکریپت اندازهگیری را درخواست میکند و برمیگرداند. |
timeout |
number |
مهلت درخواست به میلیثانیه؛ مقادیر غیرمثبت نادیده گرفته میشود. اگر
درخواست منقضی شود، فراخوانی با
undefined برای مقدار اسکریپت و {} برای
شیء فراداده فراخوانده میشود.
|
کلیدهای گزینه ناشناخته نادیده گرفته میشوند.
اجازههای مرتبط
به اجازه send_http نیاز دارد. اجازه باید بهگونهای پیکربندی شود که حداقل
دسترسی به موارد زیر را مجاز کند:
- مجاز کردن Google Domains
getRemoteAddress
نمایش رشتهای نشانی IP را که درخواست از آنجا ارسال شده است برمیگرداند،
مثلاً 12.345.67.890 برای IPv4 یا 2001:0db8:85a3:0:0:8a2e:0370:7334
برای IPv6، با خواندن سرایندهای درخواست مانند Forwarded و X-Forwarded-For.
توجه: این 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
پارامترهای پُرسمان درخواست اچتیتیپی ورودی را بهعنوان شیئی برمیگرداند که نامهای پارامتر پُرسمان را به مقدار یا مقادیر مربوطه نگاشت میکند. نامها و مقادیر پارامتر رمزگشایی میشوند.
نمونه
const getRequestQueryParameters = require('getRequestQueryParameters');
const queryParameters = getRequestQueryParameters();
if (queryParameters['search']) {
// Handle the search query here.
const maxResults = queryParameters['max_results'];
}
نحو
getRequestQueryParameters();
اجازههای مرتبط
getRequestQueryString
پرسمان درخواست را بهصورت رشته، بدون علامت سؤال ابتدایی، یا رشتهای خالی (اگر نشانی وب درخواست حاوی رشته پرسمان نباشد) برمیگرداند.
نمونه
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 | 'number' |
| مقدار منطقی | 'boolean' |
| null | 'null' |
| undefined | 'undefined' |
| Array | '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 |
any | مقدار ورودی. |
اجازههای مرتبط
هیچکدام.
hmacSha256
امضای کدگذاریشده را بااستفاده از کد اصالتسنجی پیام مبتنی بر درهمسازی (HMAC) با SHA-256 محاسبه میکند. بهطور پیشفرض روی کدبندی base64url تنظیم شده است.
برای استفاده از این «میانای برنامهسازی کاربردی»، متغیر محیطی 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
|
شیء | پیکربندی میانای برنامهسازی کاربردی اختیاری. (گزینههای زیر را ببینید.) |
گزینهها
| گزینه | نوع | شرح |
|---|---|---|
outputEncoding
|
رشته | قالب کدبندی را برای مقدار برگشتی مشخص میکند. قالبهای پشتیبانیشده عبارتاند از hex،
base64، یا base64url. اگر مشخص نشده باشد، بهطور پیشفرض روی
base64url تنظیم میشود. |
اجازههای مرتبط
حداقل نسخه تصویر
isRequestMpv1
اگر درخواست ورودی درخواست Measurement Protocol V1 باشد، 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
متغیرهای مستقل خود را در کنسول ثبت میکند.
این گزارشها در کاوشگر گزارشها در «کنسول 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, ...]);
پارامترها
این میانای برنامهسازی کاربردی یک یا چند متغیر مستقل میگیرد که هرکدام درصورت لزوم به رشته تبدیل میشوند و در کنسول ثبت میشوند.
اجازههای مرتبط
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.
این میانای برنامهسازی کاربردی برای هر نشانی وب ناقصی undefined را برمیگرداند. برای نشانیهای وب با قالببندی مناسب، فیلدهایی که در رشته نشانی وب وجود ندارند، مقدار رشته خالی خواهند داشت، یا در مورد 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
پاسخی را که قبلاً توسط الگوهای دیگر بااستفاده از میاناهای برنامهسازی کاربردی اصلاحکننده پاسخ تنظیم شده است، ازجمله setCookie، setPixelResponse، setResponseBody، setResponseHeader، و setResponseStatus، پاک میکند. بهطور پیشفرض روی رمز وضعیت HTTP 200، بدنه خالی، و بدون سرایند تنظیم شده است.
توصیه میشود که این میانای برنامهسازی کاربردی از الگوی مشتری استفاده شود.
نحو
returnResponse();
نمونه
نمونه runContainer را ببینید.
اجازههای مرتبط
runContainer
منطق حامل (متغیرها، محرکها، برچسبها) را در محدوده یک رویداد اجرا میکند. اگر این میانای برنامهسازی کاربردی درطول اجرای محفظه فراخوانده شود، محفظه دوباره اجرا میشود.
کالبکهای onComplete و onStart تابعی بهنام
bindToEvent دریافت میکنند. از bindToEvent برای اجرای API در بافت رویداد استفاده کنید.
برای جزئیات بیشتر، نمونه addEventCallback را ببینید.
توصیه میشود که این میانای برنامهسازی کاربردی از الگوی مشتری استفاده شود.
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
// Runs the container with a simple pageview event and then returns a response.
runContainer({'event_name': 'pageview'}, () => returnResponse());
نحو
runContainer(event, onComplete, onStart);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
event |
شیء | پارامترهای رویداد. |
onComplete |
تابع | فراخوانی برگشتی که پساز اتمام فعال شدن همه برچسبها فراخوانی میشود. |
onStart |
تابع | فراخوانی برگشتی که بلافاصله، قبلاز شروع فعال شدن برچسبها، فراخوانی میشود. |
اجازههای مرتبط
sendEventToGoogleAnalytics
بااستفاده از دادههای رویداد رایج، رویداد تکی به Google Analytics ارسال میکند و
قولی برمیگرداند که به شیئی با کلید location تبدیل میشود یا
به شیئی با کلید reason رد میشود. مقصد، Google Analytics،
براساس شناسه سنجش در دادههای رویداد است.
فیلد location روی سرایند location تنظیم شده است، اگر وجود داشته باشد.
نمونه
const logToConsole = require('logToConsole');
const sendEventToGoogleAnalytics = require('sendEventToGoogleAnalytics');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');
// Sends an event to Google Analytics and returns failure if the request did not
// succeed. Additionally, if the request resulted in a redirect request, the
// code nominates a redirect response to be returned.
sendEventToGoogleAnalytics(event).then((response) => {
if (response.location) {
setResponseHeader('location', response.location);
setResponseStatus(302);
} else {
setResponseStatus(200);
}
data.gtmOnSuccess();
}).catch((error) => {
logToConsole(error.reason);
setResponseStatus(500);
data.gtmOnFailure();
});
نحو
sendEventToGoogleAnalytics(event);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
event |
شیء | رویداد در قالب «طرحواره یکپارچه». |
اجازههای مرتبط
به اجازه send_http نیاز دارد. اجازه باید بهگونهای پیکربندی شود که حداقل
دسترسی به موارد زیر را مجاز کند:
- مجاز کردن Google Domains
sendHttpGet
درخواست HTTP GET را به نشانی وب مشخصشده ارسال میکند و قولی را برمیگرداند که پساز تکمیل درخواست یا اتمام مهلت، با نتیجه حل میشود.
نتیجه حلشده شیئی است که حاوی سه کلید است: statusCode، headers،
و body. اگر درخواست ناموفق بود (مثلاً نشانی وب نامعتبر، عدم وجود مسیر به میزبان،
ناموفق بودن مذاکره SSL، و غیره)، وعده با این مورد رد خواهد شد: {reason:
'failed'}. اگر گزینه timeout تنظیم شده باشد و مهلت زمانی درخواست بهپایان برسد،
قول با این خطا رد خواهد شد: {reason: 'timed_out'}
نمونه
const sendHttpGet = require('sendHttpGet');
// Returns the response body as the value for a variable.
return sendHttpGet('https://example.com/item/' + data.itemId, {
headers: {key: 'value'},
timeout: 500,
}).then((result) => result.body, () => undefined);
نحو
sendHttpGet(url[, options]);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
url |
رشته | نشانی وب درخواستشده. |
options
|
شیء | گزینههای درخواست اختیاری. (گزینههای زیر را ببینید.) |
گزینهها
| گزینه | نوع | شرح |
|---|---|---|
headers |
رشته | سرایندهای درخواست اضافی. |
timeout
|
number | زمان وقفه، برحسب میلیثانیه، قبلاز اینکه
درخواست لغو شود. پیشفرضها به 15000. |
authorization
|
شیء | شیء مجوز اختیاری از
تماس با getGoogleAuth برای گنجاندن
سرایندهای مجوز هنگام درخواست
به googleapis.com. |
اجازههای مرتبط
sendHttpRequest
درخواست HTTP به نشانی وب مشخصشده ارسال میکند و قولی برمیگرداند که پساز تکمیل درخواست یا اتمام مهلت، با پاسخ حل میشود.
نتیجه حلشده شیئی است که حاوی سه کلید است: statusCode، headers،
و body. اگر درخواست ناموفق بود (مثلاً نشانی وب نامعتبر، عدم وجود مسیر به میزبان،
ناموفق بودن مذاکره SSL، و غیره)، وعده با این مورد رد خواهد شد: {reason:
'failed'}. اگر گزینه timeout تنظیم شده باشد و مهلت زمانی درخواست بهپایان برسد،
قول با این خطا رد خواهد شد: {reason: 'timed_out'}
نمونه
const sendHttpRequest = require('sendHttpRequest');
const setResponseBody = require('setResponseBody');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');
const postBody = 'interaction=click&campaign=promotion&medium=email';
// Sends a POST request and nominates response based on the response to the POST
// request.
sendHttpRequest('https://example.com/collect', {
headers: {key: 'value'},
method: 'POST',
timeout: 500,
}, postBody).then((result) => {
setResponseStatus(result.statusCode);
setResponseBody(result.body);
setResponseHeader('cache-control', result.headers['cache-control']);
});
نحو
sendHttpRequest(url[, options[, body]]);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
url |
رشته | نشانی وب درخواستشده. |
options
|
شیء | گزینههای درخواست اختیاری. (گزینههای زیر را ببینید.) |
body |
رشته | متن درخواست اختیاری. |
گزینهها
| گزینه | نوع | شرح |
|---|---|---|
headers |
رشته | سرایندهای درخواست اضافی. |
method |
شیء | روش درخواست. پیشفرضها به GET. |
timeout
|
number | زمان وقفه، برحسب میلیثانیه، قبلاز اینکه
درخواست لغو شود. پیشفرضها به 15000. |
authorization
|
شیء | شیء مجوز اختیاری از
تماس با getGoogleAuth برای گنجاندن
سرایندهای مجوز هنگام درخواست
به googleapis.com. |
اجازههای مرتبط
sendPixelFromBrowser
فرمانی به مرورگر ارسال میکند تا نشانی وب ارائهشده را بهعنوان برچسب <img> بار کند. این پروتکل فرمان در برچسب Google برای Google Analytics و برچسبهای وب Google Analytics: رویداد GA پشتیبانی میشود. باید نشانی وب حامل سرور را پیکربندی کنید. برای جزئیات بیشتر، دستورالعملها را ببینید.
اگر درخواست ورودی از پروتکل فرمان پشتیبانی نکند یا اگر پاسخ قبلاً پاک شده باشد، این API false را برمیگرداند. درغیراینصورت، این API
true را برمیگرداند.
مثال:
const sendPixelFromBrowser = require('sendPixelFromBrowser');
sendPixelFromBrowser('https://example.com/?id=123');
نحو
sendPixelFromBrowser(url)
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
url |
رشته | نشانی وب برای ارسال به مرورگر. |
اجازههای مرتبط
setCookie
کوکیای را با گزینههای مشخصشده تنظیم یا حذف میکند.
برای حذف کوکی، باید کوکیای با همان مسیر و دامنهای که کوکی با آن ایجاد شده است تنظیم کنید و مقدار انقضایی را که در گذشته است به آن اختصاص دهید، مثلاً "Thu, 01 Jan 1970 00:00:00 GMT".
توجه داشته باشید که returnResponse باید برای پاسخ فراخوانی شود تا به مشتری برگردانده شود.
نمونه
const setCookie = require('setCookie');
// Sets an httpOnly cookie with a max-age of 3600.
setCookie('cookieName', 'cookieValue', {'max-age': 3600, httpOnly: true});
نحو
setCookie(name, value[, options[, noEncode]]);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
name |
رشته | نام کوکی. نام به حروف بزرگ و کوچک حساس نیست. |
value |
رشته | مقدار کوکی. |
options |
شیء | ویژگیهای اختیاری کوکی:domain، expires، fallbackDomain،httpOnly، max- age، path، secure، وsameSite. (گزینهها را در زیر ببینید.) |
noEncode |
مقدار منطقی |
اگر درست باشد، مقدار کوکی کدگذاری نخواهد شد. پیشفرضها به
false.
|
domain: میزبانی که کوکی به آن ارسال خواهد شد. اگر روی مقدار ویژه «خودکار» تنظیم شود، میزبان بهطور خودکار بااستفاده از استراتژی زیر محاسبه خواهد شد:
- 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اولویت دارد.path: مسیری که باید در نشانی وب درخواستی وجود داشته باشد، درغیراینصورت مرورگر سرصفحه Cookie را ارسال نخواهد کرد.
secure: اگر روی
trueتنظیم شده باشد، کوکی فقط زمانی به سرور ارسال میشود که درخواست از نقطه پایانیhttps:ایجاد شده باشد.sameSite: تأکید میکند که کوکی نباید با درخواستهای میانمبدئی ارسال شود. باید
'strict'،'lax'، یا'none'باشد.
اجازههای مرتبط
setPixelResponse
بدنه پاسخ را روی GIF ۱×۱ تنظیم میکند، سرایند Content-Type را روی «image/gif» تنظیم میکند، سرایندهای ذخیرهسازی موقت را طوری تنظیم میکند که نمایندههای کاربر پاسخ را در حافظه پنهان ذخیره نکنند، و وضعیت پاسخ را روی ۲۰۰ تنظیم میکند.
توجه داشته باشید که returnResponse باید برای پاسخ فراخوانی شود تا به مشتری برگردانده شود.
نحو
setPixelResponse();
اجازههای مرتبط
به اجازه access_response نیاز دارد. اجازه باید بهگونهای پیکربندی شود که
حداقل به موارد زیر اجازه دسترسی دهد:
headers- باید کلیدهای زیر را مجاز کندcontent-typecache-controlexpirespragma
bodystatus
setResponseBody
بدنه پاسخ را روی آرگومان تنظیم میکند.
توجه داشته باشید که returnResponse باید برای پاسخ فراخوانی شود تا به مشتری برگردانده شود.
نحو
setResponseBody(body[, encoding]);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
body |
رشته | مقداری که باید بهعنوان بدنه پاسخ تنظیم شود. |
encoding |
رشته |
کدبندی نویسه بدنه پاسخ (بهطور پیشفرض
'utf8'). مقادیر پشتیبانیشده شامل 'ascii'،
'utf8'، 'utf16le'، 'ucs2'،
'base64'، 'latin1'، 'binary'،
و 'hex' است.
|
اجازههای مرتبط
به اجازه access_response نیاز دارد. اجازه باید بهگونهای پیکربندی شود که
حداقل به موارد زیر اجازه دسترسی دهد:
body
setResponseHeader
سرصفحهای را در پاسخی که برگردانده میشود تنظیم میکند. اگر سرصفحهای با این نام (غیرحساس به حروف بزرگ و کوچک) قبلاً توسط این میانای برنامهسازی کاربردی تنظیم شده باشد، تماس بعدی مقدار تنظیمشده توسط تماسگیرنده قبلی را بازنویسی یا پاک خواهد کرد.
توجه داشته باشید که returnResponse باید برای پاسخ فراخوانی شود تا به مشتری برگردانده شود.
نحو
setResponseHeader(name, value);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
name |
رشته | نام سرایند. نامهای سرایند HTTP حروفحساس نیستند، بنابراین نام سرایند با حروف کوچک نوشته خواهد شد. |
value |
رشته تعریفنشده | مقدار سرایند. اگر تهی یا تعریفنشده باشد، این کار سرایند نامگذاریشده را از پاسخی که برگردانده خواهد شد پاک میکند. |
اجازههای مرتبط
به اجازه access_response نیاز دارد. اجازه باید بهگونهای پیکربندی شود که
حداقل به موارد زیر اجازه دسترسی دهد:
headers
setResponseStatus
رمز وضعیت HTTP پاسخی را که برگردانده خواهد شد تنظیم میکند.
توجه داشته باشید که returnResponse باید برای پاسخ فراخوانی شود تا به مشتری برگردانده شود.
نحو
setResponseStatus(statusCode);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
statusCode |
number | رمز وضعیت HTTP که باید برگردانده شود. |
اجازههای مرتبط
به اجازه access_response نیاز دارد. اجازه باید بهگونهای پیکربندی شود که
حداقل به موارد زیر اجازه دسترسی دهد:
status
sha256
خلاصه SHA-256 ورودی را محاسبه میکند و یک فراخوانی برگشتی با خلاصه کدبندیشده در base64 را فراخوانی میکند، مگراینکه شیء options کدبندی خروجی متفاوتی را مشخص کند.
این امضا و رفتار میانای برنامهسازی کاربردی با میانای برنامهسازی کاربردی sha256 برای حاملهای وب مطابقت دارد؛
بااینحال، «الگوهای سفارشی» در حاملهای سرور باید از
میانای برنامهسازی کاربردی 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 ورودی را که در مبنای ۶۴ کدبندی شده است محاسبه میکند و برمیگرداند،
مگراینکه شیء 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
شیئی را با روشهایی برای دسترسی به فضای ذخیرهسازی دادههای الگو برمیگرداند. فضای ذخیرهسازی داده الگو امکان همرسانی دادهها را در سراسر اجراهای یک الگو فراهم میکند. دادههای ذخیرهشده در فضای ذخیرهسازی دادههای الگو در سرور اجراکننده محفظه باقی میماند. در بیشتر موارد، چندین سرور درحال اجرای محفظه هستند، بنابراین ذخیره کردن دادهها در فضای ذخیرهسازی دادههای الگو تضمین نمیکند که هر درخواست بعدی به دادهها دسترسی داشته باشد.
«داده» در نام «templateDataStorage» به این واقعیت اشاره دارد که فقط انواع دادههای ساده و غیرتابع را میتوان بااستفاده از این API ذخیره کرد. هر تابع یا ارجاع به تابعی که به میانای برنامهسازی کاربردی ارسال شود، بهجای آن بهعنوان null ذخیره خواهد شد.
نحو
const templateDataStorage = require('templateDataStorage');
// Returns a copy of the value stored for the given key, or null if nothing
// is stored with that key.
templateDataStorage.getItemCopy(key);
// Stores a copy of the value for the given key (or removes the data stored
// for the given key if the input value is null).
templateDataStorage.setItemCopy(key, value);
// Removes the value stored for the given key, if present.
templateDataStorage.removeItem(key);
// Deletes all values stored for the current template.
templateDataStorage.clear();
نمونه
const sendHttpGet = require('sendHttpGet');
const setResponseBody = require('setResponseBody');
const setResponseStatus = require('setResponseStatus');
const templateDataStorage = require('templateDataStorage');
// Check to see if the item is in the cache.
const cachedBody = templateDataStorage.getItemCopy(data.key);
if (cachedBody) {
setResponseBody(cachedBody);
data.gtmOnSuccess();
return;
}
sendHttpGet(data.url).then((result) => {
if (result.statusCode >= 200 && result.statusCode < 300) {
setResponseBody(result.body);
templateDataStorage.setItemCopy(data.key, result.body);
data.gtmOnSuccess();
} else {
data.gtmOnFailure();
}
setResponseStatus(result.statusCode);
});
اجازههای مرتبط
testRegex
رشتهای را دربرابر عبارت باقاعده ایجادشده ازطریق میانای برنامهسازی کاربردی createRegex آزمایش میکند. اگر عبارت باقاعده مطابقت داشته باشد، true را برمیگرداند. درغیراینصورت، false را برمیگرداند.
عبارت باقاعدهای که با پرچم سراسری ایجاد شده باشد، حالتدار است. برای جزئیات، به سند RegExp مراجعه کنید.
نمونه
const createRegex = require('createRegex');
const testRegex = require('testRegex');
const domainRegex = createRegex('\\w+\\.com', 'i');
// createRegex returns null if the regex is invalid or Re2 is not available.
if (domainRegex === null) return;
// Returns true
testRegex(domainRegex, 'example.com/foobar');
نحو
testRegex(regex, string);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
regex |
شیء | عبارت باقاعده برای آزمایش، برگشتدادهشده از createRegex API. |
string |
رشته | رشته آزمایشی برای آزمایش. |
اجازههای مرتبط
هیچکدام.
toBase64
رشتهای را بهصورت base64 یا base64url کدبندی میکند. بهطور پیشفرض کدبندی base64 است.
نحو
toBase64(input, options);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
input |
رشته | رشته برای کدبندی کردن. |
options
|
شیء | پیکربندی میانای برنامهسازی کاربردی اختیاری. (گزینههای زیر را ببینید.) |
گزینهها
| گزینه | نوع | شرح | حداقل نسخه |
|---|---|---|---|
urlEncoding
|
مقدار منطقی | اگر درست باشد، نتیجه بااستفاده از قالب base64url کدبندی خواهد شد. |
1.0.0 |
نمونه
const toBase64 = require('toBase64');
const base64Hello = toBase64('hello');
const base64UrlHello = toBase64('hello', {urlEncoding: true});
اجازههای مرتبط
هیچکدام.
BigQuery
شیئی را برمیگرداند که عملکردهای BigQuery را ارائه میدهد.
تابع BigQuery.insert امکان نوشتن دادهها در جدول BigQuery را فراهم میکند. این روش یک promise برمیگرداند که درصورت درج موفقیتآمیز حل میشود یا درصورت بروز خطا رد میشود.
وقتی درج موفقیتآمیز باشد، وعده بدون هیچ آرگومانی حل میشود.
وقتی درج ناموفق باشد، وعده با فهرستی از اشیاء حاوی دلیل خطا و احتمالاً شیء ردیف درصورت وقوع خطا رد میشود. ممکن است بخشی از درخواست با موفقیت تکمیل شود، درحالیکه بخشهای دیگر تکمیل نشوند. در این حالت، promise با فهرستی از خطاها برای هر ردیف با یک شیء ردیف رد میشود تا به تشخیص ردیفهای درجشده کمک کند (نمونههای خطا را در زیر ببینید). برای اطلاعات بیشتر، به اسناد BigQuery درباره پیامهای خطا مراجعه کنید.
نحو
BigQuery.insert(connectionInfo, rows[, options]);
| پارامتر | نوع | شرح |
|---|---|---|
connectionInfo |
شیء |
اطلاعات لازم برای اتصال به جدول BigQuery را تعریف میکند. یک پارامتر اختیاری و دو پارامتر الزامی وجود دارد:
|
rows |
Array | ردیفهایی که باید در جدول درج شود. |
options |
شیء | گزینههای درخواست اختیاری. گزینههای پشتیبانیشده عبارتند از: ignoreUnknownValues و skipInvalidRows. کلیدهای گزینه ناشناخته نادیده گرفته میشوند. (گزینهها را در زیر ببینید.) |
| پارامتر | نوع | شرح |
|---|---|---|
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 را ارائه میدهد.
این میانای برنامهسازی کاربردی فقط از Firestore در حالت بومی پشتیبانی میکند، نه Firestore در حالت Datastore. همچنین، این میانای برنامهسازی کاربردی فقط از پایگاه داده پیشفرض پشتیبانی میکند.
Firestore.read
تابع Firestore.read دادهها را از سند Firestore میخواند و
قولی را برمیگرداند که به شیء حاوی دو کلید
id و data تبدیل میشود. اگر سند وجود نداشته باشد، وعده با شیئی که حاوی کلید reason برابر با not_found است رد میشود.
نحو
Firestore.read(path[, options]);
| پارامتر | نوع | شرح |
|---|---|---|
path |
رشته | مسیر سند یا مجموعه. نباید با «/» شروع یا تمام شود. |
options |
شیء | گزینههای درخواست اختیاری. گزینههای پشتیبانیشده عبارتاند از: projectId، disableCache، و transaction. کلیدهای گزینه ناشناخته نادیده گرفته میشوند. (گزینهها را در زیر ببینید.) |
| پارامتر | نوع | شرح |
|---|---|---|
projectId |
رشته | اختیاری. شناسه پروژه Google Cloud Platform. اگر حذف شود،
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 مینویسد. اگر مسیر به یک مجموعه باشد، سندی با شناسه تولیدشده بهصورت تصادفی ایجاد خواهد شد. اگر مسیر به یک سند باشد و آن سند وجود نداشته باشد،
ایجاد خواهد شد. این میانای برنامهسازی کاربردی قولی را برمیگرداند که به شناسه سند اضافهشده یا اصلاحشده منتهی میشود. اگر از گزینه تراکنش استفاده شود، میانای برنامهسازی کاربردی همچنان
یک promise برمیگرداند، اما حاوی شناسه نخواهد بود زیرا نوشتنها بهصورت دستهای انجام میشود.
نحو
Firestore.write(path, input[, options]);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
path |
رشته | مسیر سند یا مجموعه. نباید با «/» شروع یا تمام شود. |
input |
شیء | مقداری که باید در سند نوشته شود. اگر گزینه ادغام تنظیم شده باشد، میانای برنامهسازی کاربردی کلیدها را از ورودی در سند ادغام خواهد کرد. |
options |
شیء | گزینههای درخواست اختیاری. گزینههای پشتیبانیشده عبارتاند از: projectId، merge، و transaction. کلیدهای گزینه ناشناخته نادیده گرفته میشوند. (گزینهها را در زیر ببینید.) |
| پارامتر | نوع | شرح |
|---|---|---|
projectId |
رشته | اختیاری. شناسه پروژه Google Cloud Platform. اگر حذف شود،
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 مجموعه دادهشده را پُرسمان میکند و
قولی را برمیگرداند که به آرایهای از اسناد Firestore که با شرایط پُرسمان مطابقت دارند
حل میشود. شیء سند Firestore همان است که در بالا در
Firestore.read فهرست شده است. اگر هیچ سندی با شرایط پُرسمان مطابقت نداشته باشد،
قول برگرداندهشده به آرایه خالی تبدیل میشود.
نحو
Firestore.query(collection, queryConditions[, options]);
| پارامتر | نوع | شرح |
|---|---|---|
collection |
رشته | مسیر مجموعه. نباید با «/» شروع یا تمام شود. |
queryConditions |
Array | آرایهای از شرایط پُرسمان. هر پُرسمان بهصورت آرایهای با سه مقدار ارائه میشود: key، operator، و expectedValue. E.g.:
[[‘id’, ‘<’, ‘5’], [‘state’, ‘==’, ‘CA’]]. شرایط باهم ترکیب میشوند تا نتیجه پُرسمان ایجاد شود. لطفاً برای مشاهده فهرست عملگرهای پُرسمان سازگار، به عملگرهای پُرسمان Firestore مراجعه کنید. |
options |
شیء | گزینههای درخواست اختیاری. گزینههای پشتیبانیشده عبارتاند از: projectId، disableCache، limit، و transaction. کلیدهای گزینه ناشناخته نادیده گرفته میشوند. (گزینهها را در زیر ببینید.) |
| پارامتر | نوع | شرح |
|---|---|---|
projectId |
رشته | اختیاری. شناسه پروژه Google Cloud Platform. اگر حذف شود،
projectId از متغیر محیطی
GOOGLE_CLOUD_PROJECT بازیابی میشود
تا زمانی که
access_firestore
تنظیم اجازه برای شناسه پروژه روی * یا
GOOGLE_CLOUD_PROJECT تنظیم شده باشد. اگر حامل سرور در Google Cloud اجرا میشود، GOOGLE_CLOUD_PROJECT ازقبل روی شناسه پروژه Google Cloud تنظیم شده است. |
disableCache |
مقدار منطقی | اختیاری. تعیین میکند که حافظه پنهان غیرفعال شود یا نه. ذخیره در حافظه نهان بهطور پیشفرض فعال است و نتایج را برای مدت درخواست در حافظه نهان ذخیره میکند. |
limit |
number | اختیاری. حداکثر تعداد نتایج برگرداندهشده توسط پُرسمان را تغییر میدهد، مقدار پیشفرض ۵ است. |
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 |
رشته | اختیاری. شناسه پروژه Google Cloud Platform. اگر حذف شود،
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() رشته 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
میاناهای برنامهسازی کاربردی زیر باهم کار میکنند تا امکان انتقال پیام بین بخشهای مختلف یک محفظه را فراهم کنند.
addMessageListener
تابعی اضافه میکند که به پیام از نوع خاصی گوش میدهد. وقتی پیامی
از آن نوع بااستفاده از میانای برنامهسازی کاربردی sendMessage ارسال میشود (معمولاً توسط برچسب)،
فراخوانی برگشتی بهصورت همگام اجرا خواهد شد. فراخوانی با دو پارامتر اجرا میشود:
messageType:stringmessage:Object
اگر فراخوان در کارخواه اضافه شود، فراخوان پیامها را در سراسر
همه رویدادهایی که کارخواه ایجاد میکند دریافت خواهد کرد. اگر callback باید پیامها را فقط از رویداد خاصی دریافت کند، این API را بااستفاده از bindToEvent در تابع onStart مربوط به runContainer API به رویداد متصل کنید. مثال را ببینید.
نحو
const addMessageListener = require('addMessageListener');
addMessageListener('send_pixel', (messageType, message) => {
// This will be run whenever something sends a 'send_pixel' message.
});
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
messageType |
رشته | نوع پیام برای گوش دادن. اگر مقدار رشته نباشد، به رشته تبدیل میشود. |
callback |
تابع | فراخوانی برگشتی برای اجرا شدن هنگام ارسال پیام از نوع پیام قابلاجرا. اگر کالبک تابع نباشد، میانای برنامهسازی کاربردی کاری انجام نخواهد داد. |
نمونه
const addMessageListener = require('addMessageListener');
const claimRequest = require('claimRequest');
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
claimRequest();
addMessageListener('send_pixel', (messageType, message) => {
// This will be run whenever a tag sends a 'send_pixel' message.
});
const events = extractEventsFromMpv1();
let eventsCompleted = 0;
events.forEach((event, i) => {
runContainer(events[i], /* onComplete= */ () => {
if (events.length === ++eventsCompleted) {
returnResponse();
}
}, /* onStart= */ (bindToEvent) => {
if (i === 0) {
bindToEvent(addMessageListener)('send_pixel', (messageType, message) => {
// This will be called whenever a tag for the first event sends a
// 'send_pixel' message.
});
}
});
});
اجازههای مرتبط
به اجازه use_message نیاز دارد. اجازه باید بهگونهای پیکربندی شود که حداقل
این موارد را مجاز کند:
- نوع پیام با
Usageازlistenیاlisten_and_send.
hasMessageListener
اگر شنونده پیام برای نوع پیام دادهشده اضافه شده باشد، مقدار «درست» را برمیگرداند. درغیراینصورت نادرست را برمیگرداند.
نحو
const hasMessageListener = require('hasMessageListener');
hasMessageListener('send_pixel');
اجازههای مرتبط
هیچکدام.
sendMessage
پیامی از نوع مشخصشده به شنونده ثبتشده ارسال میکند. از این مورد میتوان برای ارسال پیام از برچسب به کارخواهی که محفظه را اجرا کرده است استفاده کرد.
نحو
const sendMessage = require('sendMessage');
sendMessage('send_pixel', {url: 'https://analytics.example.com/collect'});
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
messageType |
رشته | نوع پیام برای ارسال. اگر مقدار رشته نباشد، به رشته تبدیل میشود. |
message |
شیء | پیام برای ارسال. اگر پیام شیء نباشد، API کاری انجام نخواهد داد. |
اجازههای مرتبط
به اجازه use_message نیاز دارد. اجازه باید بهگونهای پیکربندی شود که حداقل
این موارد را مجاز کند:
- نوع پیام با
Usageازlisten_and_sendیاsend.
Object
شیئی را برمیگرداند که روشهای Object را ارائه میدهد.
روش keys() رفتار Object.keys() «کتابخانه استاندارد» را ارائه میدهد. این متد آرایهای از نامهای ویژگیهای قابلشمارش خود شیء دادهشده را به همان ترتیبی که یک حلقه for...in... انجام میدهد، برمیگرداند. اگر مقدار ورودی شیء نباشد، به شیء تبدیل میشود.
روش values() رفتار Object.values() «کتابخانه استاندارد» را ارائه میدهد. آرایهای از مقادیر ویژگی قابلشمارش خود شیء دادهشده را
به همان ترتیبی که حلقه for...in... انجام میدهد برمیگرداند. اگر مقدار ورودی شیء نباشد، به شیء تبدیل میشود.
روش entries() رفتار Object.entries() «کتابخانه استاندارد» را ارائه میدهد. آرایهای از جفتهای [key, value] ویژگی قابلشمارش خود شیء دادهشده را با همان ترتیبی که حلقه for...in... انجام میدهد برمیگرداند. اگر
مقدار ورودی شیء نباشد، به شیء تبدیل میشود.
روش freeze() رفتار Object.freeze() «کتابخانه استاندارد» را ارائه میدهد. شیء ثابتشده دیگر قابلتغییر نیست؛ ثابت کردن شیء مانع از اضافه شدن ویژگیهای جدید به آن،
برداشته شدن ویژگیهای موجود، و تغییر مقادیر ویژگیهای موجود میشود. freeze() همان شیء را که ارسال شده است برمیگرداند. با آرگومان اولیه یا تهی طوری رفتار میشود که گویی شیء ثابتی است و برگردانده خواهد شد.
روش delete() رفتار عملگر حذف «کتابخانه استاندارد» را ارائه میدهد. کلید دادهشده را از شیء برمیدارد، مگراینکه شیء ثابت شده باشد.
مانند عملگر حذف Standard Library، اگر مقدار ورودی اول (objectInput) شیئی باشد که ثابت نشده است، true را برمیگرداند، حتی اگر مقدار ورودی دوم (keyToDelete) کلیدی را مشخص کند که وجود ندارد. در همه موارد دیگر، false را برمیگرداند. بااینحال، این عملگر از عملگر حذف «کتابخانه استاندارد»
به روشهای زیر متفاوت است:
keyToDeleteنمیتواند رشتهای با جداکننده نقطه باشد که کلید تودرتو را مشخص میکند.- نمیتوان از
delete()برای برداشتن عناصر از آرایه استفاده کرد. - از
delete()نمیتوان برای برداشتن هیچیک از ویژگیها از دامنه جهانی استفاده کرد.
نحو
Object.keys(objectInput)
Object.values(objectInput)
Object.entries(objectInput)
Object.freeze(objectInput)
Object.delete(objectInput, keyToDelete)
پارامترها
Object.keys
| پارامتر | نوع | شرح |
|---|---|---|
| objectInput | any | شیئی که کلیدهای آن باید شمارش شود. اگر ورودی شیء نباشد، به شیء تبدیل خواهد شد. |
Object.values
| پارامتر | نوع | شرح |
|---|---|---|
| objectInput | any | شیئی که مقادیر آن باید شمارش شود. اگر ورودی شیء نباشد، به شیء تبدیل خواهد شد. |
Object.entries
| پارامتر | نوع | شرح |
|---|---|---|
| objectInput | any | شیئی که جفتهای کلید/مقدار آن باید شمارش شود. اگر ورودی شیء نباشد، به شیء تبدیل میشود. |
Object.freeze
| پارامتر | نوع | شرح |
|---|---|---|
| objectInput | any | شیء موردنظر برای ثابت کردن. اگر ورودی شیء نباشد، بهعنوان شیء ثابت درنظر گرفته میشود. |
Object.delete
| پارامتر | نوع | شرح |
|---|---|---|
| objectInput | any | شیئی که کلید آن حذف میشود. |
| 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 فراهم میکند:
.then()- هم پروندههای حلشده و هم پروندههای ردشده را مدیریت میکند. این تابع دو فراخوانی برگشتی را بهعنوان پارامتر میپذیرد: یکی برای حالت موفقیت و دیگری برای حالت شکست..catch()- فقط به پروندههای ردشده رسیدگی میکند. یک فراخوانی برگشتی را بهعنوان پارامتر میگیرد..finally()- روشی برای اجرای کد ارائه میدهد، چه وعده حل شده باشد یا رد شده باشد. یک پاسخ تماس را بهعنوان پارامتری میگیرد که بدون هیچ استدلالی فراخوانی میشود.
متغیری که یک promise را برمیگرداند برابر با مقدار حلشده promise است، یا
false اگر promise رد شود.
نمونه
promise.then((resolvedValue) => {
// Handles when promise resolves.
}, (rejectedValue) => {
// Handles when promise rejects.
});
promise.catch((rejectedValue) => {
// Handles when promise rejects.
});
promise.finally(() => {
// Runs regardless of whether or not the previous promise resolves or
// rejects.
});
Promise.all
یک وعده را برمیگرداند که یا:
- وقتی همه ورودیها حل شده باشند، یا
- اگر هریک از ورودیها رد شود، رد میکند
نحو
Promise.all(inputs);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
inputs |
Array | آرایهای از مقادیر یا وعدهها. اگر ورودی یک 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 |
تابع | تابعی که با دو تابع فراخوانی میشود -- حل کردن و رد کردن. وقتی پارامتر مربوطه فراخوانی شود، وعده برگشتی حل یا رد خواهد شد. اگر حلکننده تابع نباشد، خطا ایجاد میکند. |
نمونه
const Promise = require('Promise');
return Promise.create((resolve, reject) => {
// Do asynchronous work that eventually calls resolve() or reject()
});
اجازههای مرتبط
هیچکدام.
میاناهای برنامهسازی کاربردی آزمایشی
این میاناهای برنامهسازی کاربردی با آزمایشهای جاوا اسکریپت جعبه امن کار میکنند تا آزمایشهایی برای الگوهای سفارشی در Google Tag Manager بسازند. این میاناهای برنامهسازی کاربردی آزمایشی به بیانیه require() نیاز ندارند. [درباره آزمایشهای الگو سفارشی بیشتر بدانید].
assertApi
یک شیء تطبیقدهنده برمیگرداند که میتواند برای ایجاد ادعاهای روان درباره API دادهشده استفاده شود.
نحو
assertApi(apiName)
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
apiName |
رشته | نام api برای بررسی؛ همان رشتهای که به
require() ارسال شده است.
|
تطبیقدهندهها
Subject.wasCalled()Subject.wasNotCalled()Subject.wasCalledWith(...expected)Subject.wasNotCalledWith(...expected)
نمونهها
assertApi('sendPixel').wasCalled();
assertApi('getUrl').wasNotCalled();
assertApi('makeNumber').wasCalledWith('8');
assertApi('setInWindow').wasNotCalledWith('myVar', 'theWrongValue');
assertThat
assertThat API از کتابخانه [Truth] Google الگوبرداری شده است. این متد شیئی را برمیگرداند که میتوان از آن برای ایجاد ادعاهای روان درباره مقدار موضوع استفاده کرد. شکست
ادعا بلافاصله آزمایش را متوقف میکند و آن را بهعنوان ناموفق علامتگذاری میکند. بااینحال،
شکست در یک آزمایش بر سایر چارچوبهای تست تأثیر نخواهد گذاشت.
نحو
assertThat(actual, opt_message)
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
actual |
any | مقداری که باید در بررسیهای روان استفاده شود. |
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() |
ادعا میکند که موضوع یک آرایه یا رشته خالی است (طول = ۰). اگر مقدار آرایه یا رشته نباشد، ادعا همیشه ناموفق است. |
isNotEmpty() |
ادعا میکند که موضوع آرایه یا رشتهای است که خالی نیست (طول > 0). اگر مقدار آرایه یا رشته نباشد، ادعا همیشه رد میشود. |
isArray() |
ادعا میکند که نوع موضوع آرایه است. |
isBoolean() |
ادعا میکند که نوع موضوع بولی است. |
isFunction() |
ادعا میکند که نوع موضوع تابع است. |
isNumber() |
ادعا میکند که نوع موضوع عدد است. |
isObject() |
ادعا میکند که نوع موضوع یک شیء است. |
isString() |
ادعا میکند که نوع موضوع رشته است. |
نمونهها
assertThat(undefined).isUndefined();
assertThat(id, 'ID must be defined').isDefined();
assertThat(null).isNull();
assertThat(undefined).isNotNull();
assertThat(true).isTrue();
assertThat(false).isFalse();
assertThat(1).isTruthy();
assertThat('').isFalsy();
assertThat(1/0).isInfinity();
assertThat(0).isNotInfinity();
assertThat(-'foo').isNaN();
assertThat(100).isNotNaN();
assertThat(sentUrl).isEqualTo('https://endpoint.example.com/?account=12345');
assertThat(category).isNotEqualTo('premium');
assertThat(5).isAnyOf(1, 2, 3, 4, 5);
assertThat(42).isNoneOf('the question', undefined, 41.9);
assertThat('value').isStrictlyEqualTo('value');
assertThat('4').isNotStrictlyEqualTo(4);
assertThat(['a', 'b', 'c']).contains('a', 'c');
assertThat(['x', 'y', 'z']).doesNotContain('f');
assertThat(['1', '2', '3']).containsExactly('3', '2', '1');
assertThat(['4', '5']).doesNotContainExactly('4');
assertThat('a string').hasLength(8);
assertThat([]).isEmpty();
assertThat('another string').isNotEmpty();
fail
فوراً آزمایش فعلی را ناموفق میکند و پیام ارائهشده را (درصورت وجود) چاپ میکند.
نحو
fail(opt_message);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
opt_message |
رشته | نوشتار پیام خطای اختیاری. |
نمونه
fail('This test has failed.');
mock
mock API به شما امکان میدهد رفتار Sandboxed APIs را لغو کنید. استفاده از API ساختگی در کد الگو ایمن است، اما فقط در حالت آزمایشی کار میکند.
قبلاز اجرای هر آزمایش، شبیهسازیها بازنشانی میشوند.
نحو
mock(apiName, returnValue);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
apiName |
رشته | نام API برای شبیهسازی؛ همان رشتهای که به
require() ارسال شده است |
returnValue |
any | مقداری که برای API یا تابع فراخوانیشده بهجای API برگردانده میشود. اگر returnValue تابع باشد، آن تابع بهجای Sandboxed API فراخوانده میشود؛ اگر returnValue هر چیزی بهجز تابع باشد، آن مقدار بهجای Sandboxed API برگردانده میشود. |
نمونهها
mock('encodeUri', "https://endpoint.example.com/?account=12345");
mock('sendPixel', function(url, onSuccess, onFailure) {
onSuccess();
});
mockObject
mockObject API به شما امکان میدهد رفتار Sandboxed API را که
شیء برمیگرداند لغو کنید. استفاده از این API در کد الگو ایمن است، اما فقط در حالت آزمایشی قابل اجرا است. قبلاز اجرای هر آزمایش، شبیهسازیها بازنشانی میشوند.
نحو
mockObject(apiName, objectMock);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
apiName |
رشته | نام API برای شبیهسازی؛ همان رشتهای که به
require() ارسال شده است |
objectMock |
شیء | مقداری که برای API یا تابع فراخوانیشده بهجای API برگردانده میشود. باید شیء باشد. |
نمونهها
const storage = {};
let firestoreId = 1;
function asTestPromise(result) {
return {
then: (callback) => callback(result)
};
}
mockObject('Firestore', {
write: (collection, input) => {
storage[collection + '/' + (++firestoreId)] = input;
return asTestPromise(firestoreId);
},
read: (document) => asTestPromise({data: storage[document]})
});
runCode
کد الگو، یعنی محتوای برگه کد، را در محیط آزمایشی فعلی با شیء داده ورودی مشخص اجرا میکند.
نحو
runCode(data)
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
data |
شیء | مورد دادهای که باید در آزمایش استفاده شود. |
برگرداندن مقدار
مقدار متغیر را برای الگوهای متغیر برمیگرداند؛ برای همه انواع الگوهای دیگر، undefined را برمیگرداند.
نمونه
runCode({field1: 123, field2: 'value'});