সার্ভার-সাইড ট্যাগিং API

এই ডকুমেন্টে সার্ভার-সাইড ট্যাগিংয়ের জন্য এপিআইগুলোর রূপরেখা দেওয়া হয়েছে।


addEventCallback

একটি কলব্যাক ফাংশন রেজিস্টার করে যা কোনো ইভেন্টের শেষে চালু হবে। ইভেন্টের জন্য নির্ধারিত সমস্ত ট্যাগ কার্যকর হয়ে গেলে কলব্যাকটি চালু হবে। কলব্যাকে দুটি ভ্যালু পাস করা হয়: যে কন্টেইনারটি ফাংশনটি চালু করে তার আইডি এবং ইভেন্ট সম্পর্কিত তথ্য ধারণকারী একটি অবজেক্ট।

যখন এই API কোনো ট্যাগে ব্যবহৃত হয়, তখন এটি বর্তমান ইভেন্টের সাথে যুক্ত হয়। যখন এই API কোনো ক্লায়েন্টে ব্যবহৃত হয়, তখন runContainer API-এর bindToEvent ফাংশন ব্যবহার করে এটিকে একটি নির্দিষ্ট ইভেন্টের সাথে আবদ্ধ করতে হবে। আরও বিস্তারিত জানতে উদাহরণটি দেখুন।

সিনট্যাক্স

const addEventCallback = require('addEventCallback');

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

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
callback ফাংশন ইভেন্টের শেষে যে ফাংশনটি চালু করা হবে।

eventData অবজেক্টটিতে নিম্নলিখিত ডেটা রয়েছে:

চাবির নাম প্রকার বর্ণনা
tags অ্যারে ট্যাগ ডেটা অবজেক্টের একটি অ্যারে। ইভেন্ট চলাকালীন ফায়ার হওয়া প্রতিটি ট্যাগের একটি এন্ট্রি এই অ্যারেতে থাকবে। ট্যাগ ডেটা অবজেক্টটিতে ট্যাগের আইডি ( id ), এর এক্সিকিউশন স্ট্যাটাস ( status ) এবং এর এক্সিকিউশন টাইম ( executionTime ) থাকে। ট্যাগ ডেটাতে ট্যাগে কনফিগার করা অতিরিক্ত মেটাডেটাও অন্তর্ভুক্ত থাকবে।

উদাহরণ

একজন ক্লায়েন্টের ক্ষেত্রে:

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

claimRequest();

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

একটি ট্যাগে:

const addEventCallback = require('addEventCallback');

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

সংশ্লিষ্ট অনুমতি

read_event_metadata


callLater

অ্যাসিঙ্ক্রোনাসভাবে একটি ফাংশন কল করার জন্য সময় নির্ধারণ করে। বর্তমান কোডটি রিটার্ন করার পর ফাংশনটি কল করা হবে। এটি setTimeout(<function>, 0) -এর সমতুল্য।

উদাহরণ

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

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

সিনট্যাক্স

callLater(function)

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
function ফাংশন যে ফাংশনটিকে কল করতে হবে।

সংশ্লিষ্ট অনুমতি

কিছুই না।


claimRequest

অনুরোধটি দাবি করার জন্য ক্লায়েন্টে এই API-টি ব্যবহার করুন। একবার কোনো অনুরোধ দাবি করা হলে, কন্টেইনারটি আর অতিরিক্ত ক্লায়েন্ট চালায় না।

এই API-টি কোনো ট্যাগ বা ভেরিয়েবলের মধ্যে কল করা হলে একটি এক্সেপশন থ্রো করে। ক্লায়েন্ট রিটার্ন করার পরে কল করা হলেও এই API-টি একটি এক্সেপশন থ্রো করে (যেমন callLater বা runContainer onComplete ফাংশনের মতো কোনো অ্যাসিঙ্ক কলব্যাকে কল করা হলে)।

runContainer API কল করার আগে একজন ক্লায়েন্টকে এই API ব্যবহার করে অনুরোধটি দাবি করতে হবে।

উদাহরণ

const claimRequest = require('claimRequest');

claimRequest();

সিনট্যাক্স

claimRequest();

সংশ্লিষ্ট অনুমতি

কিছুই না।


computeEffectiveTldPlusOne

প্রদত্ত ডোমেইন বা ইউআরএল-এর কার্যকরী শীর্ষ-স্তরের ডোমেইন + ১ (eTLD+1) ফেরত দেয়। পাবলিক সাফিক্স লিস্টের নিয়ম অনুযায়ী ডোমেইনটিকে মূল্যায়ন করে eTLD+1 গণনা করা হয়। eTLD+1 সাধারণত সর্বোচ্চ-স্তরের ডোমেইন, যেখানে আপনি একটি কুকি সেট করতে পারেন।

আর্গুমেন্টটি null বা undefined হলে, আর্গুমেন্টের মান অপরিবর্তিতভাবে ফেরত দেওয়া হয়। অন্যথায় আর্গুমেন্টটিকে একটি স্ট্রিং-এ রূপান্তর করা হয়। আর্গুমেন্টটি যদি একটি বৈধ ডোমেইন বা URL না হয়, তাহলে একটি ফাঁকা স্ট্রিং ফেরত দেওয়া হয়। সার্ভার যদি পাবলিক সাফিক্স তালিকাটি আনতে অক্ষম হয়, তাহলে আর্গুমেন্টের মান অপরিবর্তিতভাবে ফেরত দেওয়া হয়।

উদাহরণ

const computeEffectiveTldPlusOne = require('computeEffectiveTldPlusOne');

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

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

সিনট্যাক্স

computeEffectiveTldPlusOne(domainOrUrl);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
domainOrUrl স্ট্রিং একটি ডোমেইন বা ইউআরএল যার উপর ভিত্তি করে eTLD+1 গণনা করা হবে।

সংশ্লিষ্ট অনুমতি

কিছুই না।


createRegex

একটি নতুন রেজেক্স ইনস্ট্যান্স তৈরি করে এবং সেটিকে একটি অবজেক্টে মুড়ে ফেরত দেয়। আপনি সরাসরি রেজেক্সটি অ্যাক্সেস করতে পারবেন না। তবে, আপনি এটিকে testRegex API, String.replace() , String.match() , এবং String.search() -এর মধ্যে পাস করতে পারবেন।

রেজেক্সটি অবৈধ হলে অথবা সার্ভারে Re2 উপলব্ধ না থাকলে null রিটার্ন করে।

এই এপিআইটি একটি 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

আগত মেজারমেন্ট প্রোটোকল V1 অনুরোধকে ইউনিফাইড স্কিমা ফরম্যাটে ইভেন্টের একটি তালিকায় অনুবাদ করে। নিষ্কাশিত ইভেন্টগুলির তালিকা ফেরত দেয়। অনুরোধটি সঠিক ফরম্যাটে না থাকলে একটি ত্রুটি প্রদর্শন করে।

উদাহরণ

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

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

সিনট্যাক্স

extractEventsFromMpv1();

সংশ্লিষ্ট অনুমতি

read_request পারমিশন প্রয়োজন। পারমিশনটি অবশ্যই এমনভাবে কনফিগার করা থাকতে হবে যাতে অন্তত নিম্নলিখিতগুলিতে অ্যাক্সেস দেওয়া যায়:

  • body
  • query parameters

extractEventsFromMpv2

আগত মেজারমেন্ট প্রোটোকল V2 অনুরোধকে ইউনিফাইড স্কিমা ফরম্যাটে ইভেন্টের একটি তালিকায় অনুবাদ করে। নিষ্কাশিত ইভেন্টগুলির তালিকা ফেরত দেয়। অনুরোধটি সঠিক ফরম্যাটে না থাকলে একটি ত্রুটি দেখায়।

উদাহরণ

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

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

সিনট্যাক্স

extractEventsFromMpv2();

সংশ্লিষ্ট অনুমতি

read_request পারমিশন প্রয়োজন। পারমিশনটি অবশ্যই এমনভাবে কনফিগার করা থাকতে হবে যাতে অন্তত নিম্নলিখিতগুলিতে অ্যাক্সেস দেওয়া যায়:

  • body
  • query parameters

fromBase64

বেস৬৪-এনকোডেড স্ট্রিং ডিকোড করে। ইনপুটটি অবৈধ হলে undefined রিটার্ন করে।

সিনট্যাক্স

fromBase64(base64EncodedString);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
base64EncodedString স্ট্রিং Base64 এনকোডেড স্ট্রিং।

উদাহরণ

const fromBase64 = require('fromBase64');

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

সংশ্লিষ্ট অনুমতি

কিছুই না।


generateRandom

প্রদত্ত পরিসরের মধ্যে একটি এলোমেলো সংখ্যা (পূর্ণসংখ্যা) ফেরত দেয়।

উদাহরণ

const generateRandom = require('generateRandom');

const randomValue = generateRandom(0, 10000000);

সিনট্যাক্স

generateRandom(min, max);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
min সংখ্যা ফেরত আসা পূর্ণসংখ্যাটির সর্বনিম্ন সম্ভাব্য মান (উভয় মানসহ)।
max সংখ্যা ফেরত আসা পূর্ণসংখ্যাটির সর্বোচ্চ সম্ভাব্য মান (উভয় মানসহ)।

সংশ্লিষ্ট অনুমতি

কিছুই না।


getAllEventData

ইভেন্ট ডেটার একটি অনুলিপি ফেরত দেয়।

সিনট্যাক্স

getAllEventData();

সংশ্লিষ্ট অনুমতি

read_event_data


getClientName

বর্তমান ক্লায়েন্টের নাম সম্বলিত একটি স্ট্রিং ফেরত দেয়।

সিনট্যাক্স

getClientName();

সংশ্লিষ্ট অনুমতি

read_container_data


getContainerVersion

বর্তমান কন্টেইনার সম্পর্কিত তথ্য সম্বলিত একটি অবজেক্ট ফেরত দেয়। ফেরত আসা অবজেক্টটিতে নিম্নলিখিত ফিল্ডগুলো থাকবে:

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

উদাহরণ

const getContainerVersion = require('getContainerVersion');

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

সিনট্যাক্স

getContainerVersion();

সংশ্লিষ্ট অনুমতি

read_container_data


getCookieValues

প্রদত্ত নামের সমস্ত কুকির মান সম্বলিত একটি অ্যারে ফেরত দেয়।

উদাহরণ

const getCookieValues = require('getCookieValues');

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

সিনট্যাক্স

getCookieValues(name[, noDecode]);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
name স্ট্রিং কুকিটির নাম।
noDecode বুলিয়ান যদি true , তাহলে কুকির মানগুলো ফেরত দেওয়ার আগে ডিকোড করা হবে না। এর ডিফল্ট মান ' false

সংশ্লিষ্ট অনুমতি

get_cookies


getEventData

ইভেন্ট ডেটার মধ্যে প্রদত্ত পাথে থাকা ভ্যালুটির একটি কপি ফেরত দেয়। যদি কোনো ইভেন্ট ডেটা না থাকে অথবা প্রদত্ত পাথে কোনো ভ্যালু না থাকে, তাহলে undefined ফেরত দেয়।

উদাহরণ

const getEventData = require('getEventData');

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

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
keyPath যেকোনো কী-এর পাথ, যেখানে পাথের উপাদানগুলো ডট দিয়ে আলাদা করা থাকে। পাথের উপাদানগুলো কোনো অবজেক্টের কী অথবা কোনো অ্যারের ইন্ডেক্স হতে পারে। যদি keyPath একটি স্ট্রিং না হয়, তবে এটিকে একটি স্ট্রিং-এ রূপান্তর করা হয়।

সিনট্যাক্স

getEventData(keyPath);

সংশ্লিষ্ট অনুমতি

read_event_data


getGoogleAuth

একটি অথরাইজেশন অবজেক্ট রিটার্ন করে, যা sendHttpGet বা sendHttpRequest সাথে ব্যবহার করা হলে গুগল ক্লাউড এপিআই-এর জন্য একটি অথরাইজেশন হেডার অন্তর্ভুক্ত করবে। এই এপিআই সার্ভার এনভায়রনমেন্ট থেকে স্বয়ংক্রিয়ভাবে ক্রেডেনশিয়াল খুঁজে বের করার জন্য অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল ব্যবহার করে।

উদাহরণ

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

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

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

সিনট্যাক্স

getGoogleAuth(scopes);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
scopes অ্যারে অ্যাক্সেসের জন্য অনুরোধ করার উদ্দেশ্যে OAuth 2.0 গুগল এপিআই স্কোপগুলোর একটি অ্যারে।

সংশ্লিষ্ট অনুমতি

use_google_credentials পারমিশন প্রয়োজন। পারমিশনটি এক বা একাধিক অনুমোদিত স্কোপ দিয়ে কনফিগার করতে হবে।


getGoogleScript

পূর্বনির্ধারিত গুগল স্ক্রিপ্টের সেট থেকে একটি রিসোর্স পুনরুদ্ধার করে এবং স্ক্রিপ্ট ও সংশ্লিষ্ট ক্যাশিং মেটাডেটা সহ একটি প্রমিজ ফেরত দেয়।

প্রমিসটি একটি অবজেক্টে রিজলভ হবে, যাতে script এবং metadata নামে দুটি কী থাকবে। অনুরোধটি ব্যর্থ হলে, প্রমিসটি একটি reason ' কী সহ রিজেক্ট হবে।

metadata অবজেক্টটিতে রিসোর্স রেসপন্স হেডারের উপর ভিত্তি করে নিম্নলিখিত ক্যাশিং মেটাডেটা থাকবে; প্রতিটি ফিল্ড কেবল তখনই উপস্থিত থাকবে, যদি রিসোর্স রেসপন্সে সংশ্লিষ্ট হেডারটি উপস্থিত থাকে।

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

উদাহরণ

const getGoogleScript = require('getGoogleScript');

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

সিনট্যাক্স

getGoogleScript(script[, options]);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
script স্ট্রিং স্ক্রিপ্টের নাম। সমর্থিত স্ক্রিপ্টগুলো হলো 'ANALYTICS' , 'GTAG' এবং 'GTM'

'ANALYTICS' অপশনটি https://www.google-analytics.com/analytics.js থেকে গুগল অ্যানালিটিক্স স্ক্রিপ্টটি নিয়ে আসে।

'GTAG' অপশনটি https://www.googletagmanager.com/gtag/js থেকে গ্লোবাল সাইট ট্যাগ (gtag.js) স্ক্রিপ্টটি নিয়ে আসে।

'GTM' অপশনটি https://www.googletagmanager.com/gtm.js থেকে গুগল ট্যাগ ম্যানেজার স্ক্রিপ্টটি নিয়ে আসে।
options বস্তু ঐচ্ছিক অনুরোধের বিকল্পসমূহ। সমর্থিত বিকল্পগুলোর জন্য নিচে দেখুন।

বিকল্প

বিকল্প প্রকার বর্ণনা
id স্ট্রিং gtag মেজারমেন্ট আইডি সহ 'GTAG' এবং ওয়েব কন্টেইনার আইডি সহ 'GTM' এর ক্ষেত্রে প্রযোজ্য (যেমন, GTM-XXXX)।
debug যেকোনো যদি সত্য হয়, তাহলে পরিমাপ স্ক্রিপ্টটির ডিবাগ সংস্করণ অনুরোধ করে এবং ফেরত দেয়।
timeout সংখ্যা অনুরোধের সময়সীমা মিলিসেকেন্ডে; অ-ধনাত্মক মান উপেক্ষা করা হয়। অনুরোধের সময়সীমা শেষ হয়ে গেলে, স্ক্রিপ্ট মানের জন্য undefined ' এবং মেটাডেটা অবজেক্টের জন্য {} সহ কলব্যাকটি আহ্বান করা হবে।

অপরিচিত অপশন কী উপেক্ষা করা হয়।

সংশ্লিষ্ট অনুমতি

send_http পারমিশন প্রয়োজন। পারমিশনটি অবশ্যই এমনভাবে কনফিগার করতে হবে যাতে অন্তত নিম্নলিখিতগুলিতে অ্যাক্সেস দেওয়া যায়:

  • গুগল ডোমেইনগুলিকে অনুমতি দিন

getRemoteAddress

Forwarded এবং X-Forwarded-For-এর মতো রিকোয়েস্ট হেডারগুলো পড়ে, এটি সেই আইপি অ্যাড্রেসের একটি স্ট্রিং রিপ্রেজেন্টেশন রিটার্ন করে যেখান থেকে রিকোয়েস্টটি করা হয়েছে, যেমন IPv4-এর জন্য 12.345.67.890 অথবা IPv6-এর জন্য 2001:0db8:85a3:0:0:8a2e:0370:7334 । দ্রষ্টব্য: এই API-টি উৎস আইপি খুঁজে বের করার জন্য যথাসাধ্য চেষ্টা করে, কিন্তু এটি ফলাফলের নির্ভুলতার নিশ্চয়তা দিতে পারে না।

সিনট্যাক্স

getRemoteAddress();

সংশ্লিষ্ট অনুমতি

read_request পারমিশন প্রয়োজন। পারমিশনটি অবশ্যই এমনভাবে কনফিগার করা থাকতে হবে যাতে অন্তত নিম্নলিখিতগুলিতে অ্যাক্সেস দেওয়া যায়:

  • হেডার Forwarded এবং X-Forwarded-For
  • রিমোট আইপি ঠিকানা

getRequestBody

অনুরোধের মূল অংশটি উপস্থিত থাকলে একটি স্ট্রিং হিসাবে ফেরত দেয়, অন্যথায় undefined

সিনট্যাক্স

getRequestBody();

সংশ্লিষ্ট অনুমতি

read_request


getRequestHeader

নির্দিষ্ট রিকোয়েস্ট হেডারের মান উপস্থিত থাকলে একটি স্ট্রিং হিসাবে ফেরত দেয়, অন্যথায় undefined ) ফেরত দেয়। হেডারটি পুনরাবৃত্ত হলে, ফেরত আসা মানগুলো ', ' দিয়ে একসাথে যুক্ত করা হয়।

উদাহরণ

const getRequestHeader = require('getRequestHeader');

const host = getRequestHeader('host');

সিনট্যাক্স

getRequestHeader(headerName);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
headerName স্ট্রিং হেডারের নাম। এই মানটি কেস-ইনসেনসিটিভ।

সংশ্লিষ্ট অনুমতি

read_request


getRequestMethod

অনুরোধের পদ্ধতি, যেমন 'GET' বা 'POST' , একটি স্ট্রিং হিসাবে ফেরত দেয়।

উদাহরণ

const getRequestMethod = require('getRequestMethod');

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

সিনট্যাক্স

getRequestMethod();

সংশ্লিষ্ট অনুমতি

কিছুই না।


getRequestPath

কোয়েরি স্ট্রিং ছাড়া রিকোয়েস্ট পাথটি রিটার্ন করে। উদাহরণস্বরূপ, যদি URL-টি '/foo?id=123' হয়, তাহলে এটি '/foo' রিটার্ন করবে। পাথ থেকে সার্ভার কন্টেইনার URL প্রিফিক্সটি স্বয়ংক্রিয়ভাবে বাদ দেয়। উদাহরণস্বরূপ, যদি সার্ভার কন্টেইনার URL হয় https://example.com/analytics এবং রিকোয়েস্ট পাথটি '/analytics/foo' হয়, তাহলে এটি '/foo' রিটার্ন করবে।

উদাহরণ

const getRequestPath = require('getRequestPath');

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

সিনট্যাক্স

getRequestPath();

সংশ্লিষ্ট অনুমতি

read_request


getRequestQueryParameter

নির্দিষ্ট কোয়েরি স্ট্রিং প্যারামিটারের ডিকোড করা মান একটি স্ট্রিং হিসাবে ফেরত দেয়, অথবা প্যারামিটারটি উপস্থিত না থাকলে undefined ফেরত দেয়। যদি কোয়েরি স্ট্রিং-এ প্যারামিটারটির পুনরাবৃত্তি ঘটে, তবে কোয়েরি স্ট্রিং-এ প্রথম যে মানটি দেখা যায়, সেটিই ফেরত দেওয়া হবে।

উদাহরণ

const getRequestQueryParameter = require('getRequestQueryParameter');

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

সিনট্যাক্স

getRequestQueryParameter(name);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
name স্ট্রিং কোয়েরি প্যারামিটারের নাম।

সংশ্লিষ্ট অনুমতি

read_request


getRequestQueryParameters

আগত HTTP অনুরোধের কোয়েরি প্যারামিটারগুলোকে একটি অবজেক্ট হিসেবে ফেরত দেয়, যা কোয়েরি প্যারামিটারের নামগুলোকে সংশ্লিষ্ট মান বা মানগুলোর সাথে ম্যাপ করে। প্যারামিটারের নাম এবং মানগুলো ডিকোড করা হয়।

উদাহরণ

const getRequestQueryParameters = require('getRequestQueryParameters');

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

সিনট্যাক্স

getRequestQueryParameters();

সংশ্লিষ্ট অনুমতি

read_request


getRequestQueryString

অনুরোধের কোয়েরিটি শুরুতে থাকা প্রশ্নবোধক চিহ্ন ছাড়া একটি স্ট্রিং হিসেবে ফেরত দেয়, অথবা অনুরোধের URL-এ কোনো কোয়েরি স্ট্রিং না থাকলে একটি খালি স্ট্রিং ফেরত দেয়।

উদাহরণ

const getRequestQueryString = require('getRequestQueryString');

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

সিনট্যাক্স

getRequestQueryString();

সংশ্লিষ্ট অনুমতি

read_request


getTimestamp

অপ্রচলিত। getTimestampMillis ব্যবহার করা শ্রেয়।

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

SHA-256 সহ হ্যাশ-ভিত্তিক বার্তা প্রমাণীকরণ কোড (HMAC) ব্যবহার করে একটি এনকোডেড স্বাক্ষর গণনা করে। ডিফল্টরূপে base64url এনকোডিং ব্যবহৃত হয়।

এই API ব্যবহার করতে, সার্ভারে SGTM_CREDENTIALS এনভায়রনমেন্ট ভেরিয়েবলটি নিম্নলিখিত ফরম্যাটে একটি UTF-8 এনকোডেড JSON কী ফাইলের পাথে সেট করুন:

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

মানগুলো হলো বেস৬৪-এনকোডেড HMAC কী। JSON টেক্সটটি কোনো বাইট অর্ডার মার্কার দিয়ে শুরু হতে পারবে না।

উদাহরণ

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

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

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

সিনট্যাক্স

hmacSha256(data, keyId, options)

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
data স্ট্রিং HMAC মান গণনা করার জন্য প্রয়োজনীয় ডেটা।
keyId স্ট্রিং JSON কী ফাইল থেকে ব্যবহারযোগ্য কী-টির একটি কী আইডি।
options বস্তু ঐচ্ছিক এপিআই কনফিগারেশন। (নিচে অপশনসমূহ দেখুন।)

বিকল্প

বিকল্প প্রকার বর্ণনা
outputEncoding স্ট্রিং রিটার্ন ভ্যালুর জন্য এনকোডিং ফরম্যাট নির্দিষ্ট করে। সমর্থিত ফরম্যাটগুলো হলো hex , base64 , বা base64url । নির্দিষ্ট করা না থাকলে ডিফল্ট হিসেবে base64url ব্যবহৃত হয়।

সংশ্লিষ্ট অনুমতি

use_custom_private_keys

সর্বনিম্ন ছবির সংস্করণ

১.০.০


isRequestMpv1

আগত অনুরোধটি মেজারমেন্ট প্রোটোকল V1 অনুরোধ হলে true , অন্যথায় false রিটার্ন করে।

উদাহরণ

const isRequestMpv1 = require('isRequestMpv1');

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

সিনট্যাক্স

isRequestMpv1();

সংশ্লিষ্ট অনুমতি

কিছুই না।


isRequestMpv2

আগত অনুরোধটি একটি মেজারমেন্ট প্রোটোকল V2 অনুরোধ হলে true , অন্যথায় false রিটার্ন করে।

উদাহরণ

const isRequestMpv2 = require('isRequestMpv2');

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

সিনট্যাক্স

isRequestMpv2();

সংশ্লিষ্ট অনুমতি

কিছুই না।


logToConsole

এর আর্গুমেন্টগুলো কনসোলে লগ করে।

এই লগগুলি গুগল ক্লাউড কনসোলের লগস এক্সপ্লোরারে দেখা যায়। এই এপিআই দ্বারা তৈরি লগ এন্ট্রিগুলি দেখতে, লগস এক্সপ্লোরার থেকে logName =~ "stdout" কোয়েরিটি চালান।

উদাহরণ

const logToConsole = require('logToConsole');

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

সিনট্যাক্স

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

প্যারামিটার

এপিআইটি এক বা একাধিক আর্গুমেন্ট গ্রহণ করে, যেগুলোর প্রত্যেকটি প্রয়োজনে একটি স্ট্রিং-এ রূপান্তরিত হয়ে কনসোলে লগ হয়।

সংশ্লিষ্ট অনুমতি

logging


makeInteger

প্রদত্ত মানটিকে একটি সংখ্যায় (পূর্ণসংখ্যায়) রূপান্তর করে।

সিনট্যাক্স

makeInteger(value);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
value যেকোনো ধরনের রূপান্তর করার মান।

সংশ্লিষ্ট অনুমতি

কিছুই না।


makeNumber

প্রদত্ত মানটিকে একটি সংখ্যায় রূপান্তর করে।

সিনট্যাক্স

makeNumber(value);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
value যেকোনো ধরনের রূপান্তর করার মান।

সংশ্লিষ্ট অনুমতি

কিছুই না।


makeString

প্রদত্ত মানটিকে একটি স্ট্রিং হিসেবে ফেরত দেয়।

সিনট্যাক্স

makeString(value);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
value যেকোনো ধরনের রূপান্তর করার মান।

সংশ্লিষ্ট অনুমতি

কিছুই না।


makeTableMap

দুটি কলাম সহ একটি সাধারণ টেবিল অবজেক্টকে Map এ রূপান্তর করে। এটি দুটি কলাম সহ একটি SIMPLE_TABLE টেমপ্লেট ফিল্ডকে আরও সহজে পরিচালনাযোগ্য বিন্যাসে পরিবর্তন করতে ব্যবহৃত হয়।

উদাহরণস্বরূপ, এই ফাংশনটি একটি টেবিল অবজেক্টকে রূপান্তর করতে পারে:

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

একটি মানচিত্রে:

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

একটি অবজেক্ট রিটার্ন করে: যদি কী-ভ্যালু জোড়ের রূপান্তরিত Map এতে যোগ করা হয়ে থাকে, অন্যথায় null রিটার্ন করে।

সিনট্যাক্স

makeTableMap(tableObj, keyColumnName, valueColumnName);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
tableObj তালিকা রূপান্তর করার জন্য টেবিল অবজেক্ট। এটি ম্যাপের একটি তালিকা, যেখানে প্রতিটি Map টেবিলের একটি সারিকে প্রতিনিধিত্ব করে। একটি সারি অবজেক্টের প্রতিটি প্রপার্টির নাম হলো কলামের নাম এবং প্রপার্টির মান হলো সেই সারির কলামের মান।
keyColumnName স্ট্রিং সেই কলামের নাম, যার মানগুলো রূপান্তরিত Map কী (key) হিসেবে ব্যবহৃত হবে।
valueColumnName স্ট্রিং সেই কলামের নাম যার মানগুলো রূপান্তরিত Map মান হয়ে উঠবে।

সংশ্লিষ্ট অনুমতি

কিছুই না।


parseUrl

URL অবজেক্টের মতোই, এটি এমন একটি অবজেক্ট রিটার্ন করে যাতে প্রদত্ত URL-এর সমস্ত উপাদান অংশ থাকে।

যেকোনো ত্রুটিপূর্ণ URL-এর জন্য এই API-টি 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

setCookie , setPixelResponse , setResponseBody , setResponseHeader , এবং setResponseStatus-এর মতো রেসপন্স পরিবর্তনকারী এপিআই (API) ব্যবহার করে অন্যান্য টেমপ্লেট দ্বারা পূর্বে সেট করা রেসপন্সটি ফ্লাশ করে। ডিফল্ট হিসেবে এটি একটি HTTP স্ট্যাটাস কোড ২০০, খালি বডি এবং কোনো হেডার ব্যবহার করে না।

এই এপিআইটি ক্লায়েন্ট টেমপ্লেট থেকে ব্যবহার করার পরামর্শ দেওয়া হয়।

সিনট্যাক্স

returnResponse();

উদাহরণ

runContainer উদাহরণটি দেখুন।

সংশ্লিষ্ট অনুমতি

return_response


runContainer

একটি ইভেন্টের স্কোপের মধ্যে কন্টেইনারের লজিক (ভেরিয়েবল, ট্রিগার, ট্যাগ) চালায়। কন্টেইনার এক্সিকিউশনের সময় এই এপিআই কল করা হলে, কন্টেইনারটি পুনরায় রান হয়।

onComplete এবং onStart কলব্যাকগুলো bindToEvent নামক একটি ফাংশন গ্রহণ করে। ইভেন্টের প্রেক্ষাপটে একটি API চালানোর জন্য bindToEvent ব্যবহার করুন। আরও বিস্তারিত জানতে 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 ফাংশন একটি কলব্যাক যা ট্যাগগুলো ফায়ার হওয়া শুরু হওয়ার ঠিক আগে, তাৎক্ষণিকভাবে চালু হয়।

সংশ্লিষ্ট অনুমতি

run_container


sendEventToGoogleAnalytics

কমন ইভেন্ট ডেটা ব্যবহার করে গুগল অ্যানালিটিক্সে একটি একক ইভেন্ট পাঠায় এবং একটি প্রমিজ রিটার্ন করে যা রিজলভ হয়ে একটি 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 বস্তু ইউনিফাইড স্কিমা ফরম্যাটে ইভেন্টটি।

সংশ্লিষ্ট অনুমতি

send_http পারমিশন প্রয়োজন। পারমিশনটি অবশ্যই এমনভাবে কনফিগার করতে হবে যাতে অন্তত নিম্নলিখিতগুলিতে অ্যাক্সেস দেওয়া যায়:

  • গুগল ডোমেইনগুলিকে অনুমতি দিন

sendHttpGet

নির্দিষ্ট URL-এ একটি HTTP GET অনুরোধ পাঠায় এবং একটি প্রমিজ ফেরত দেয়, যা অনুরোধটি সম্পন্ন হলে বা সময়সীমা শেষ হয়ে গেলে ফলাফলসহ রিজলভ হয়।

সমাধানকৃত ফলাফলটি একটি অবজেক্ট, যাতে statusCode , headers , এবং body এই তিনটি কী থাকে। যদি অনুরোধটি ব্যর্থ হয় (যেমন: অবৈধ URL, হোস্টে যাওয়ার কোনো রুট না থাকা, SSL নেগোসিয়েশন ব্যর্থতা, ইত্যাদি), তাহলে প্রমিসটি {reason: 'failed'} সহ রিজেক্ট হবে। যদি timeout অপশনটি সেট করা থাকে এবং অনুরোধটির সময়সীমা শেষ হয়ে যায়, তাহলে প্রমিসটি {reason: 'timed_out'} সহ রিজেক্ট হবে।

উদাহরণ

const sendHttpGet = require('sendHttpGet');

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

সিনট্যাক্স

sendHttpGet(url[, options]);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
url স্ট্রিং অনুরোধকৃত ইউআরএল।
options বস্তু ঐচ্ছিক অনুরোধের বিকল্পসমূহ। (নিচের বিকল্পসমূহ দেখুন।)

বিকল্প

বিকল্প প্রকার বর্ণনা
headers স্ট্রিং অতিরিক্ত অনুরোধ হেডার।
timeout সংখ্যা অনুরোধটি বাতিল হওয়ার আগেকার সময়সীমা (মিলিসেকেন্ডে)। এর ডিফল্ট মান 15000
authorization বস্তু googleapis.com এ অনুরোধ করার সময় অনুমোদন হেডার অন্তর্ভুক্ত করার জন্য getGoogleAuth কল থেকে প্রাপ্ত ঐচ্ছিক অনুমোদন অবজেক্ট।

সংশ্লিষ্ট অনুমতি

send_http


sendHttpRequest

নির্দিষ্ট URL-এ একটি HTTP অনুরোধ পাঠায় এবং একটি প্রমিজ ফেরত দেয়, যা অনুরোধটি সম্পন্ন হলে বা সময়সীমা শেষ হয়ে গেলে প্রাপ্ত প্রতিক্রিয়া সহ রিজলভ হয়।

সমাধানকৃত ফলাফলটি একটি অবজেক্ট, যাতে statusCode , headers , এবং body এই তিনটি কী থাকে। যদি অনুরোধটি ব্যর্থ হয় (যেমন: অবৈধ URL, হোস্টে যাওয়ার কোনো রুট না থাকা, SSL নেগোসিয়েশন ব্যর্থতা, ইত্যাদি), তাহলে প্রমিসটি {reason: 'failed'} সহ রিজেক্ট হবে। যদি timeout অপশনটি সেট করা থাকে এবং অনুরোধটির সময়সীমা শেষ হয়ে যায়, তাহলে প্রমিসটি {reason: 'timed_out'} সহ রিজেক্ট হবে।

উদাহরণ

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

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

সিনট্যাক্স

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

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
url স্ট্রিং অনুরোধকৃত ইউআরএল।
options বস্তু ঐচ্ছিক অনুরোধের বিকল্পসমূহ। (নিচের বিকল্পসমূহ দেখুন।)
body স্ট্রিং ঐচ্ছিক অনুরোধের মূল অংশ।

বিকল্প

বিকল্প প্রকার বর্ণনা
headers স্ট্রিং অতিরিক্ত অনুরোধ হেডার।
method বস্তু অনুরোধ পদ্ধতি। ডিফল্ট হলো GET
timeout সংখ্যা অনুরোধটি বাতিল হওয়ার আগেকার সময়সীমা (মিলিসেকেন্ডে)। এর ডিফল্ট মান 15000
authorization বস্তু googleapis.com এ অনুরোধ করার সময় অনুমোদন হেডার অন্তর্ভুক্ত করার জন্য getGoogleAuth কল থেকে প্রাপ্ত ঐচ্ছিক অনুমোদন অবজেক্ট।

সংশ্লিষ্ট অনুমতি

send_http


sendPixelFromBrowser

প্রদত্ত URL-টিকে একটি <img> ট্যাগ হিসেবে লোড করার জন্য ব্রাউজারে একটি কমান্ড পাঠায়। এই কমান্ড প্রোটোকলটি Google Analytics-এর জন্য Google Tag এবং Google Analytics: GA Event ওয়েব ট্যাগগুলিতে সমর্থিত। আপনাকে সার্ভার কন্টেইনার URL কনফিগার করতে হবে। আরও বিস্তারিত জানতে নির্দেশাবলী দেখুন।

আগত অনুরোধটি যদি কমান্ড প্রোটোকল সমর্থন না করে, অথবা প্রতিক্রিয়াটি যদি ইতিমধ্যেই ফ্লাশ করা হয়ে থাকে, তাহলে এই API-টি false রিটার্ন করে। অন্যথায় এই API-টি true রিটার্ন করে।

উদাহরণ:

const sendPixelFromBrowser = require('sendPixelFromBrowser');

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

সিনট্যাক্স

sendPixelFromBrowser(url)

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
url স্ট্রিং ব্রাউজারে পাঠানোর জন্য ইউআরএল।

সংশ্লিষ্ট অনুমতি

send_pixel_from_browser


setCookie

নির্দিষ্ট বিকল্পসহ একটি কুকি তৈরি বা মুছে ফেলে।

একটি কুকি মুছে ফেলার জন্য, যে পাথ এবং ডোমেইন দিয়ে কুকিটি তৈরি করা হয়েছিল, ঠিক সেই একই পাথ এবং ডোমেইন ব্যবহার করে একটি নতুন কুকি সেট করতে হবে এবং এর জন্য একটি অতীতকালের মেয়াদ (expires value) নির্ধারণ করতে হবে, যেমন "Thu, 01 Jan 1970 00:00:00 GMT"

মনে রাখবেন, ক্লায়েন্টের কাছে প্রতিক্রিয়া ফেরত পাঠানোর জন্য returnResponse অবশ্যই কল করতে হবে।

উদাহরণ

const setCookie = require('setCookie');

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

সিনট্যাক্স

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

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
name স্ট্রিং কুকির নাম। নামটি কেস-ইনসেনসিটিভ।
value স্ট্রিং কুকির মান।
options বস্তু ঐচ্ছিক কুকি অ্যাট্রিবিউটসমূহ: domain , expires , fallbackDomain , httpOnly , max- age , path , secure , এবং sameSite । (নিচে ‘বিকল্পসমূহ ’ দেখুন।)
noEncode বুলিয়ান যদি true হয়, তাহলে কুকির মান এনকোড করা হবে না। এর ডিফল্ট মান false

বিকল্প

  • ডোমেইন: যে হোস্টে কুকিটি পাঠানো হবে। যদি বিশেষ মান 'auto'-তে সেট করা হয়, তাহলে নিম্নলিখিত কৌশল ব্যবহার করে হোস্টটি স্বয়ংক্রিয়ভাবে গণনা করা হবে:

    • Forwarded হেডারের eTLD+1, যদি থাকে।
    • X-Forwarded-Host হেডারের eTLD+1, যদি উপস্থিত থাকে।
    • Host হেডারের eTLD+1।
  • expires : কুকিটির সর্বোচ্চ মেয়াদ। এটি অবশ্যই একটি UTC-ফরম্যাটের তারিখ স্ট্রিং হতে হবে, যেমন "Sat, 26 Oct 1985 08:21:00 GMT"। যদি expires এবং max-age উভয়ই সেট করা থাকে, তবে max-age অগ্রাধিকার পাবে।

  • httpOnly : যদি true , তাহলে জাভাস্ক্রিপ্ট কুকি অ্যাক্সেস করতে পারবে না।

  • max-age : কুকিটির মেয়াদ শেষ হওয়ার আগে সেকেন্ডের সংখ্যা। শূন্য বা ঋণাত্মক সংখ্যা দিলে কুকিটির মেয়াদ সঙ্গে সঙ্গে শেষ হয়ে যাবে। যদি expires এবং max-age উভয়ই সেট করা থাকে, তবে max-age অগ্রাধিকার থাকবে।

  • পাথ : এমন একটি পাথ যা অনুরোধ করা URL-এ অবশ্যই থাকতে হবে, অন্যথায় ব্রাউজার কুকি হেডার পাঠাবে না।

  • secure : যদি এটি true সেট করা হয়, তাহলে কুকিটি শুধুমাত্র তখনই সার্ভারে পাঠানো হয় যখন কোনো https: এন্ডপয়েন্ট থেকে অনুরোধ করা হয়।

  • sameSite : নিশ্চিত করে যে ক্রস-অরিজিন অনুরোধের সাথে কোনো কুকি পাঠানো যাবে না। এটি অবশ্যই 'strict' , 'lax' বা 'none' হতে হবে।

সংশ্লিষ্ট অনুমতি

set_cookie


setPixelResponse

রেসপন্স বডিকে একটি 1x1 GIF-এ সেট করে, Content-Type হেডারকে 'image/gif'-এ সেট করে, ক্যাশিং হেডার এমনভাবে সেট করে যাতে ইউজার এজেন্টরা রেসপন্সটি ক্যাশ না করে, এবং রেসপন্স স্ট্যাটাসকে 200-এ সেট করে।

মনে রাখবেন, ক্লায়েন্টের কাছে প্রতিক্রিয়া ফেরত পাঠানোর জন্য returnResponse অবশ্যই কল করতে হবে।

সিনট্যাক্স

setPixelResponse();

সংশ্লিষ্ট অনুমতি

access_response পারমিশন প্রয়োজন। পারমিশনটি অবশ্যই এমনভাবে কনফিগার করা থাকতে হবে যাতে অন্তত নিম্নলিখিতগুলিতে অ্যাক্সেস দেওয়া যায়:

  • headers - নিম্নলিখিত কীগুলি অবশ্যই অনুমোদিত হতে হবে
    • content-type
    • cache-control
    • expires
    • pragma
  • body
  • status

setResponseBody

রেসপন্স বডিকে আর্গুমেন্ট অনুযায়ী সেট করে।

মনে রাখবেন, ক্লায়েন্টের কাছে প্রতিক্রিয়া ফেরত পাঠানোর জন্য returnResponse অবশ্যই কল করতে হবে।

সিনট্যাক্স

setResponseBody(body[, encoding]);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
body স্ট্রিং প্রতিক্রিয়া বডি হিসাবে যে মানটি সেট করতে হবে।
encoding স্ট্রিং রেসপন্স বডির ক্যারেক্টার এনকোডিং (ডিফল্ট 'utf8' )। সমর্থিত মানগুলোর মধ্যে রয়েছে 'ascii' , 'utf8' , 'utf16le' , 'ucs2' , 'base64' , 'latin1' , 'binary' এবং 'hex'

সংশ্লিষ্ট অনুমতি

access_response পারমিশন প্রয়োজন। পারমিশনটি অবশ্যই এমনভাবে কনফিগার করা থাকতে হবে যাতে অন্তত নিম্নলিখিতগুলিতে অ্যাক্সেস দেওয়া যায়:

  • body

setResponseHeader

ফেরত দেওয়া হবে এমন রেসপন্সে একটি হেডার সেট করে। যদি এই API দ্বারা পূর্বে এই নামের (কেস-ইনসেনসিটিভ) কোনো হেডার সেট করা হয়ে থাকে, তাহলে পরবর্তী কলটি পূর্ববর্তী কলার দ্বারা সেট করা মানটিকে ওভাররাইট বা মুছে ফেলবে।

মনে রাখবেন, ক্লায়েন্টের কাছে প্রতিক্রিয়া ফেরত পাঠানোর জন্য returnResponse অবশ্যই কল করতে হবে।

সিনট্যাক্স

setResponseHeader(name, value);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
name স্ট্রিং হেডারের নাম। HTTP হেডারের নাম কেস-ইনসেনসিটিভ, তাই হেডারের নামটি ছোট হাতের অক্ষরে লেখা হবে।
value স্ট্রিং অনির্ধারিত হেডারের মান। যদি এটি null বা undefined হয়, তবে ফেরত আসা রেসপন্স থেকে নির্দিষ্ট হেডারটি মুছে যাবে।

সংশ্লিষ্ট অনুমতি

access_response পারমিশন প্রয়োজন। পারমিশনটি অবশ্যই এমনভাবে কনফিগার করা থাকতে হবে যাতে অন্তত নিম্নলিখিতগুলিতে অ্যাক্সেস দেওয়া যায়:

  • headers

setResponseStatus

ফেরত আসা প্রতিক্রিয়ার HTTP স্ট্যাটাস কোড নির্ধারণ করে।

মনে রাখবেন, ক্লায়েন্টের কাছে প্রতিক্রিয়া ফেরত পাঠানোর জন্য returnResponse অবশ্যই কল করতে হবে।

সিনট্যাক্স

setResponseStatus(statusCode);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
statusCode সংখ্যা যে HTTP স্ট্যাটাস কোডটি ফেরত দেওয়া হবে।

সংশ্লিষ্ট অনুমতি

access_response পারমিশন প্রয়োজন। পারমিশনটি অবশ্যই এমনভাবে কনফিগার করা থাকতে হবে যাতে অন্তত নিম্নলিখিতগুলিতে অ্যাক্সেস দেওয়া যায়:

  • status

sha256

ইনপুটের 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 ফাংশন যদি না 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

টেমপ্লেট ডেটা স্টোরেজ অ্যাক্সেস করার মেথডসহ একটি অবজেক্ট রিটার্ন করে। টেমপ্লেট ডেটা স্টোরেজ একটিমাত্র টেমপ্লেটের বিভিন্ন এক্সিকিউশনের মধ্যে ডেটা শেয়ার করার সুযোগ দেয়। টেমপ্লেট ডেটা স্টোরেজে সংরক্ষিত ডেটা কন্টেইনার চালনাকারী সার্ভারে স্থায়ী থাকে। বেশিরভাগ ক্ষেত্রে কন্টেইনারটি একাধিক সার্ভারে চলে, তাই টেমপ্লেট ডেটা স্টোরেজে ডেটা সংরক্ষণ করলেই যে পরবর্তী প্রতিটি রিকোয়েস্ট সেই ডেটা অ্যাক্সেস করতে পারবে, তার কোনো নিশ্চয়তা নেই।

"templateDataStorage" নামের "data" অংশটি এই বিষয়টি নির্দেশ করে যে, এই API ব্যবহার করে শুধুমাত্র সাধারণ, নন-ফাংশন ডেটা টাইপই সংরক্ষণ করা যাবে। API-তে পাঠানো যেকোনো ফাংশন বা ফাংশনের রেফারেন্স এর পরিবর্তে null হিসেবে সংরক্ষিত হবে।

সিনট্যাক্স

const templateDataStorage = require('templateDataStorage');

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

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

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

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

উদাহরণ

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

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

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

সংশ্লিষ্ট অনুমতি

access_template_storage


testRegex

createRegex এপিআই ব্যবহার করে তৈরি করা একটি রেজেক্সের সাথে কোনো স্ট্রিংকে মিলিয়ে দেখে। রেজেক্সটি মিলে গেলে true রিটার্ন করে। অন্যথায় false রিটার্ন করে।

গ্লোবাল ফ্ল্যাগ দিয়ে তৈরি করা রেজেক্স স্টেটফুল হয়। বিস্তারিত জানতে রেজেক্স ডকুমেন্টেশন দেখুন।

উদাহরণ

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 ফরম্যাট ব্যবহার করে এনকোড করা হবে। ১.০.০

উদাহরণ

const toBase64 = require('toBase64');

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

সংশ্লিষ্ট অনুমতি

কিছুই না।


BigQuery

এমন একটি অবজেক্ট ফেরত দেয় যা BigQuery ফাংশনগুলো প্রদান করে।

BigQuery.insert ফাংশনটি BigQuery টেবিলে ডেটা লেখার সুযোগ দেয়। এটি একটি প্রমিজ রিটার্ন করে, যা সফলভাবে ডেটা প্রবেশ করালে রিজলভ হয় অথবা কোনো ত্রুটি ঘটলে রিজেক্ট হয়।

সন্নিবেশ সফল হলে, প্রমিসটি কোনো আর্গুমেন্ট ছাড়াই রিজলভ হয়।

যখন ইনসারশন ব্যর্থ হয়, তখন প্রমিসটি রিজেক্ট হয় এবং এরর-এর কারণ সম্বলিত অবজেক্টের একটি তালিকা দেয়, এবং কোনো এরর ঘটলে সম্ভবত একটি রো অবজেক্টও দেয়। এমনটা হতে পারে যে রিকোয়েস্টের একটি অংশ সফলভাবে সম্পন্ন হলো, কিন্তু অন্য অংশগুলো হলো না। এই ক্ষেত্রে, প্রমিসটি রিজেক্ট হয় এবং প্রতিটি রো-এর জন্য এররের একটি তালিকা দেয়, সাথে একটি রো অবজেক্টও থাকে যা কোন রো-গুলো ইনসার্ট করা হয়েছে তা আলাদা করতে সাহায্য করে (নিচে এরর এক্সাম্পলস দেখুন)। আরও তথ্যের জন্য এরর মেসেজ সম্পর্কে BigQuery-এর ডকুমেন্টেশন দেখুন।

সিনট্যাক্স

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

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
connectionInfo বস্তু BigQuery টেবিলের সাথে সংযোগ করার জন্য প্রয়োজনীয় তথ্য নির্ধারণ করে। এখানে একটি ঐচ্ছিক প্যারামিটার এবং দুটি আবশ্যক প্যারামিটার রয়েছে:
  • projectId - ঐচ্ছিক গুগল ক্লাউড প্ল্যাটফর্ম প্রজেক্ট আইডি। যদি এটি বাদ দেওয়া হয়, তাহলে projectId GOOGLE_CLOUD_PROJECT এনভায়রনমেন্ট ভেরিয়েবল থেকে নেওয়া হয়, যদি প্রজেক্ট আইডির জন্য access_bigquery পারমিশন সেটিংটি * বা GOOGLE_CLOUD_PROJECT এ সেট করা থাকে। যদি সার্ভার কন্টেইনারটি গুগল ক্লাউডে চলে, তাহলে GOOGLE_CLOUD_PROJECT আগে থেকেই গুগল ক্লাউড প্রজেক্টের আইডি সেট করা থাকবে।
  • datasetId - BigQuery ডেটাসেট আইডি।
  • tableId - BigQuery টেবিল আইডি।
rows অ্যারে টেবিলে যোগ করার জন্য সারিগুলো।
options বস্তু ঐচ্ছিক অনুরোধ বিকল্পসমূহ। সমর্থিত বিকল্পগুলো হলো: ignoreUnknownValues ​​এবং skipInvalidRows । অজানা অপশন কী উপেক্ষা করা হয়। (নিচে ‘বিকল্পসমূহ’ দেখুন।)

বিকল্প

প্যারামিটার প্রকার বর্ণনা
ignoreUnknownValues বুলিয়ান যদি ' true সেট করা হয়, তাহলে স্কিমার সাথে মেলে না এমন মান থাকা সারিগুলি গ্রহণ করা হবে। অজানা মানগুলি উপেক্ষা করা হবে। ডিফল্ট মান ' false
skipInvalidRows বুলিয়ান যদি ' true সেট করা হয়, তাহলে একটি অনুরোধের সমস্ত বৈধ সারি সন্নিবেশ করা হবে, এমনকি যদি অবৈধ সারি থাকে। এর ডিফল্ট মান false

ত্রুটির উদাহরণ

'মডিউল খুঁজে পাওয়া যায়নি' ত্রুটির অর্থ হলো, আপনার সার্ভার কন্টেইনারটি সম্ভবত আমাদের ইমেজের একটি পুরোনো সংস্করণ চালাচ্ছে, যেটিতে এখনও BigQuery মডিউলটি অন্তর্ভুক্ত করা হয়নি। অনুগ্রহ করে আমাদের ডেপ্লয়মেন্ট স্ক্রিপ্ট ব্যবহার করে একই সেটিংস সহ আপনার সার্ভার কন্টেইনারটি পুনরায় ডেপ্লয় করুন। অপারেশনটি শেষ হলেই মডিউলটি স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত হয়ে যাবে।

একটি নন-ইনসারশন এররের ক্ষেত্রে সাধারণত একটি এরর অবজেক্ট থাকে, যার মধ্যে একটি রিজন কী reason key) থাকে:

[{reason: 'invalid'}]

একটি ইনসারশন এররে একটি errors অ্যারে এবং একটি row অবজেক্ট সহ একাধিক error অবজেক্ট থাকতে পারে। নিচে দুটি সারি ইনসার্ট করার ফলে সৃষ্ট একটি এরর রেসপন্সের উদাহরণ দেওয়া হলো, যেখানে শুধুমাত্র একটি সারিতে এরর রয়েছে:

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

উদাহরণ

const BigQuery = require('BigQuery');

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

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

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

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

সংশ্লিষ্ট অনুমতি

access_bigquery


Firestore

এমন একটি অবজেক্ট ফেরত দেয় যা ফায়ারস্টোর ফাংশনগুলো সরবরাহ করে।

এই এপিআইটি শুধুমাত্র নেটিভ মোডে ফায়ারস্টোর সমর্থন করে, ডেটাস্টোর মোডে ফায়ারস্টোর নয়। এছাড়াও, এপিআইটি শুধুমাত্র ডিফল্ট ডেটাবেস ব্যবহার সমর্থন করে।

Firestore.read

Firestore.read ফাংশনটি একটি Firestore ডকুমেন্ট থেকে ডেটা পড়ে এবং একটি প্রমিজ রিটার্ন করে, যা id এবং data নামক দুটি কী-সহ একটি অবজেক্টে রিজলভ হয়। যদি ডকুমেন্টটি বিদ্যমান না থাকে, তবে প্রমিজটি not_found নামক একটি reason কী-সহ একটি অবজেক্ট দিয়ে রিজেক্ট হয়।

সিনট্যাক্স

Firestore.read(path[, options]);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
path স্ট্রিং ডকুমেন্ট বা সংগ্রহের পাথ। এটি অবশ্যই '/' দিয়ে শুরু বা শেষ হবে না।
options বস্তু ঐচ্ছিক অনুরোধ বিকল্পসমূহ। সমর্থিত বিকল্পগুলো হলো: projectId , disableCache , এবং transaction । অজানা বিকল্প কী উপেক্ষা করা হয়। (নিচে ‘বিকল্পসমূহ ’ দেখুন।)

বিকল্প

প্যারামিটার প্রকার বর্ণনা
projectId স্ট্রিং ঐচ্ছিক । গুগল ক্লাউড প্ল্যাটফর্ম প্রজেক্ট আইডি। যদি এটি বাদ দেওয়া হয়, তাহলে projectId GOOGLE_CLOUD_PROJECT এনভায়রনমেন্ট ভেরিয়েবল থেকে নেওয়া হয়, যদি প্রজেক্ট আইডির জন্য access_firestore পারমিশন সেটিংটি * বা GOOGLE_CLOUD_PROJECT এ সেট করা থাকে। যদি সার্ভার কন্টেইনারটি গুগল ক্লাউডে চলে, তাহলে GOOGLE_CLOUD_PROJECT ইতোমধ্যেই গুগল ক্লাউড প্রজেক্টের আইডিতে সেট করা থাকবে।
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 একটি প্রমিজ রিটার্ন করে যা যোগ করা বা পরিবর্তন করা ডকুমেন্টের আইডিতে রিজলভ হয়। যদি ট্রানজ্যাকশন অপশনটি ব্যবহার করা হয়, তাহলেও API একটি প্রমিজ রিটার্ন করে, কিন্তু তাতে আইডি থাকবে না, কারণ রাইটগুলো ব্যাচ আকারে করা হয়।

সিনট্যাক্স

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

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
path স্ট্রিং ডকুমেন্ট বা সংগ্রহের পাথ। এটি অবশ্যই '/' দিয়ে শুরু বা শেষ হবে না।
input বস্তু ডকুমেন্টে লেখার জন্য মান। যদি মার্জ অপশনটি সেট করা থাকে, তাহলে এপিআই ইনপুট থেকে কী-গুলো ডকুমেন্টে মার্জ করে দেবে।
options বস্তু ঐচ্ছিক অনুরোধ বিকল্পসমূহ। সমর্থিত বিকল্পগুলো হলো: projectId , merge , এবং transaction । অজানা বিকল্প কী উপেক্ষা করা হয়। (নিচে ‘বিকল্পসমূহ ’ দেখুন।)

বিকল্প

প্যারামিটার প্রকার বর্ণনা
projectId স্ট্রিং ঐচ্ছিক । গুগল ক্লাউড প্ল্যাটফর্ম প্রজেক্ট আইডি। যদি এটি বাদ দেওয়া হয়, তাহলে projectId GOOGLE_CLOUD_PROJECT এনভায়রনমেন্ট ভেরিয়েবল থেকে নেওয়া হয়, যদি প্রজেক্ট আইডির জন্য access_firestore পারমিশন সেটিংটি * বা GOOGLE_CLOUD_PROJECT এ সেট করা থাকে। যদি সার্ভার কন্টেইনারটি গুগল ক্লাউডে চলে, তাহলে GOOGLE_CLOUD_PROJECT ইতোমধ্যেই গুগল ক্লাউড প্রজেক্টের আইডিতে সেট করা থাকবে।
merge বুলিয়ান ঐচ্ছিক । যদি ' true সেট করা হয়, তাহলে ইনপুট থেকে কী-গুলো ডকুমেন্টে মার্জ করা হবে, অন্যথায় মেথডটি পুরো ডকুমেন্টটিকে ওভাররাইড করবে। ডিফল্ট মান ' false
transaction স্ট্রিং ঐচ্ছিক । Firestore.runTransaction() থেকে প্রাপ্ত মান। অপারেশনটিকে একটি ট্রানজ্যাকশনের মধ্যে ব্যবহার করার জন্য চিহ্নিত করে।

উদাহরণ

const Firestore = require('Firestore');

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

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

Firestore.query

Firestore.query ফাংশনটি প্রদত্ত কালেকশনে কোয়েরি করে এবং একটি প্রমিজ রিটার্ন করে, যা কোয়েরির শর্তের সাথে মেলে এমন Firestore ডকুমেন্টগুলোর একটি অ্যারেতে রিজলভ হয়। Firestore ডকুমেন্ট অবজেক্টটি উপরে Firestore.read এ তালিকাভুক্ত অবজেক্টের মতোই। যদি কোয়েরির শর্তের সাথে মেলে এমন কোনো ডকুমেন্ট না থাকে, তাহলে রিটার্ন করা প্রমিজটি একটি খালি অ্যারেতে রিজলভ হবে।

সিনট্যাক্স

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

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
collection স্ট্রিং সংগ্রহটির পথ। এটি অবশ্যই '/' দিয়ে শুরু বা শেষ হবে না।
queryConditions অ্যারে কোয়েরি শর্তাবলীর একটি অ্যারে। প্রতিটি কোয়েরি একটি অ্যারে আকারে আসে, যেখানে তিনটি ভ্যালু থাকে: key , operator , এবং expectedValue । যেমন: [['id', '<', '5'], ['state', '==', 'CA']]।

কোয়েরির ফলাফল তৈরি করার জন্য শর্তগুলোকে AND ফাংশনের মাধ্যমে যুক্ত করা হয়। সামঞ্জস্যপূর্ণ কোয়েরি অপারেটরগুলোর তালিকার জন্য অনুগ্রহ করে ফায়ারস্টোরের কোয়েরি অপারেটরসমূহ দেখুন।
options বস্তু ঐচ্ছিক অনুরোধ বিকল্পসমূহ। সমর্থিত বিকল্পগুলো হলো: projectId , disableCache , limit , এবং transaction । অজানা বিকল্প কী উপেক্ষা করা হয়। (নিচে ‘বিকল্পসমূহ ’ দেখুন।)

বিকল্প

প্যারামিটার প্রকার বর্ণনা
projectId স্ট্রিং ঐচ্ছিক । গুগল ক্লাউড প্ল্যাটফর্ম প্রজেক্ট আইডি। যদি এটি বাদ দেওয়া হয়, তাহলে projectId GOOGLE_CLOUD_PROJECT এনভায়রনমেন্ট ভেরিয়েবল থেকে নেওয়া হয়, যদি প্রজেক্ট আইডির জন্য access_firestore পারমিশন সেটিংটি * বা GOOGLE_CLOUD_PROJECT এ সেট করা থাকে। যদি সার্ভার কন্টেইনারটি গুগল ক্লাউডে চলে, তাহলে GOOGLE_CLOUD_PROJECT ইতোমধ্যেই গুগল ক্লাউড প্রজেক্টের আইডিতে সেট করা থাকবে।
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.runTransaction(callback[, options]);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
callback ফাংশন একটি কলব্যাক যা একটি স্ট্রিং ট্রানজ্যাকশন আইডি দিয়ে চালু করা হয়। এই ট্রানজ্যাকশন আইডিটি রিড/রাইট/কোয়েরি এপিআই কলে পাস করা যেতে পারে। এই কলব্যাক ফাংশনটিকে অবশ্যই একটি প্রমিজ রিটার্ন করতে হবে। ব্যর্থ হওয়ার আগে কলব্যাকটি সর্বোচ্চ তিনবার চলতে পারে।
options বস্তু ঐচ্ছিক অনুরোধ বিকল্পসমূহ। একমাত্র সমর্থিত বিকল্পটি হলো projectId । অজানা বিকল্প কী উপেক্ষা করা হয়। (নিচে ‘বিকল্পসমূহ’ দেখুন।)

বিকল্প

প্যারামিটার প্রকার বর্ণনা
projectId স্ট্রিং ঐচ্ছিক । গুগল ক্লাউড প্ল্যাটফর্ম প্রজেক্ট আইডি। যদি এটি বাদ দেওয়া হয়, তাহলে projectId GOOGLE_CLOUD_PROJECT এনভায়রনমেন্ট ভেরিয়েবল থেকে নেওয়া হয়, যদি প্রজেক্ট আইডির জন্য access_firestore পারমিশন সেটিংটি * বা GOOGLE_CLOUD_PROJECT এ সেট করা থাকে। যদি সার্ভার কন্টেইনারটি গুগল ক্লাউডে চলে, তাহলে GOOGLE_CLOUD_PROJECT ইতোমধ্যেই গুগল ক্লাউড প্রজেক্টের আইডিতে সেট করা থাকবে।

উদাহরণ

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

ত্রুটির উদাহরণ

প্রতিটি ফায়ারস্টোর ফাংশনে থাকা ত্রুটিগুলো একটি কারণ-কী reason key) সম্বলিত অবজেক্টের মাধ্যমে প্রত্যাখ্যান করা হবে:

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

ত্রুটির কারণগুলোর মধ্যে ফায়ারস্টোর REST API ত্রুটি কোডগুলো অন্তর্ভুক্ত থাকতে পারে, তবে তা শুধু এগুলোর মধ্যেই সীমাবদ্ধ নয়।

সংশ্লিষ্ট অনুমতি

access_firestore


JSON

এমন একটি অবজেক্ট ফেরত দেয় যা JSON ফাংশনগুলো প্রদান করে।

` parse() ফাংশনটি একটি JSON স্ট্রিং পার্স করে সেই স্ট্রিং দ্বারা বর্ণিত ভ্যালু বা অবজেক্টটি তৈরি করে। যদি ভ্যালুটি পার্স করা না যায় (যেমন ত্রুটিপূর্ণ JSON), তাহলে ফাংশনটি undefined রিটার্ন করবে। যদি ইনপুট ভ্যালুটি স্ট্রিং না হয়, তবে ইনপুটটিকে একটি স্ট্রিং-এ রূপান্তরিত করা হবে।

` stringify() ` ফাংশনটি ইনপুটকে একটি JSON স্ট্রিং-এ রূপান্তর করে। যদি মানটি পার্স করা না যায় (যেমন অবজেক্টটিতে চক্রাকারে কিছু থাকে), তাহলে মেথডটি undefined রিটার্ন করবে।

উদাহরণ

const JSON = require('JSON');

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

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

সিনট্যাক্স

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

সংশ্লিষ্ট অনুমতি

কিছুই না।


Math

একটি অবজেক্ট যা Math ফাংশন প্রদান করে।

সিনট্যাক্স

const Math = require('Math');

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

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

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

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

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

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

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

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

প্যারামিটার

গাণিতিক ফাংশনের প্যারামিটারগুলোকে সংখ্যায় রূপান্তর করা হয়।

সংশ্লিষ্ট অনুমতি

কিছুই না।


Messages

একটি কন্টেইনারের বিভিন্ন অংশের মধ্যে বার্তা আদান-প্রদানের জন্য নিম্নলিখিত API-গুলো একত্রে কাজ করে।


addMessageListener

একটি ফাংশন যোগ করে যা একটি নির্দিষ্ট ধরণের বার্তার জন্য অপেক্ষা করে। যখন sendMessage API ব্যবহার করে (সাধারণত একটি ট্যাগের মাধ্যমে) সেই ধরণের একটি বার্তা পাঠানো হয়, তখন কলব্যাকটি সিনক্রোনাসভাবে চালানো হবে। কলব্যাকটি দুটি প্যারামিটার সহ চালানো হয়:

  1. messageType:string
  2. message:Object

যদি কোনো ক্লায়েন্টে কলব্যাকটি যোগ করা হয়, তবে সেই ক্লায়েন্ট দ্বারা তৈরি সমস্ত ইভেন্ট থেকে কলব্যাকটি মেসেজ গ্রহণ করবে। যদি কলব্যাকটি শুধুমাত্র একটি নির্দিষ্ট ইভেন্ট থেকে মেসেজ গ্রহণ করতে চায়, তাহলে runContainer API-এর onStart ফাংশনে bindToEvent ব্যবহার করে এই API-টিকে সেই ইভেন্টের সাথে বাইন্ড করুন। উদাহরণটি দেখুন।

সিনট্যাক্স

const addMessageListener = require('addMessageListener');

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

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
messageType স্ট্রিং যে মেসেজ টাইপটি শোনা হবে। যদি ভ্যালুটি স্ট্রিং না হয়, তবে এটিকে স্ট্রিং-এ রূপান্তর করা হবে।
callback ফাংশন প্রযোজ্য মেসেজ টাইপের কোনো মেসেজ পাঠানো হলে যে কলব্যাকটি রান হবে। যদি কলব্যাকটি কোনো ফাংশন না হয়, তাহলে এপিআই কিছুই করবে না।

উদাহরণ

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

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

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

সংশ্লিষ্ট অনুমতি

use_message পারমিশন প্রয়োজন। পারমিশনটি অবশ্যই এমনভাবে কনফিগার করা থাকতে হবে যাতে অন্ততপক্ষে নিম্নলিখিত বিষয়গুলো অনুমোদিত হয়:

  • এমন একটি বার্তার ধরণ যার Usage listen বা listen_and_send রয়েছে।

hasMessageListener

প্রদত্ত মেসেজ টাইপের জন্য কোনো মেসেজ লিসেনার যোগ করা থাকলে 'true' রিটার্ন করে। অন্যথায় 'false' রিটার্ন করে।

সিনট্যাক্স

const hasMessageListener = require('hasMessageListener');

hasMessageListener('send_pixel');

সংশ্লিষ্ট অনুমতি

কিছুই না।


sendMessage

নিবন্ধিত লিসেনারের কাছে নির্দিষ্ট ধরনের একটি বার্তা পাঠায়। এটি ব্যবহার করে কোনো ট্যাগ থেকে কন্টেইনারটি চালানো ক্লায়েন্টের কাছে বার্তা ফেরত পাঠানো যায়।

সিনট্যাক্স

const sendMessage = require('sendMessage');

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

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
messageType স্ট্রিং প্রেরণ করার জন্য বার্তার ধরণ। যদি মানটি স্ট্রিং না হয়, তবে এটিকে স্ট্রিং-এ রূপান্তর করা হবে।
message বস্তু প্রেরণ করার জন্য বার্তা। বার্তাটি যদি কোনো অবজেক্ট না হয়, তাহলে এপিআই কিছুই করবে না।

সংশ্লিষ্ট অনুমতি

use_message পারমিশন প্রয়োজন। পারমিশনটি অবশ্যই এমনভাবে কনফিগার করা থাকতে হবে যাতে অন্ততপক্ষে নিম্নলিখিত বিষয়গুলো অনুমোদিত হয়:

  • listen_and_send বা send এর Usage সহ একটি বার্তার ধরণ।

Object

এমন একটি অবজেক্ট ফেরত দেয় যা Object মেথডসমূহ প্রদান করে।

` keys() ` মেথডটি স্ট্যান্ডার্ড লাইব্রেরির ` Object.keys()` মেথডের মতো আচরণ প্রদান করে। এটি একটি প্রদত্ত অবজেক্টের নিজস্ব এনুমারেবল প্রপার্টির নামগুলোর একটি অ্যারে রিটার্ন করে, ঠিক সেই ক্রমে যেভাবে একটি for...in... লুপ কাজ করে। যদি ইনপুট ভ্যালুটি অবজেক্ট না হয়, তবে এটিকে জোর করে একটি অবজেক্টে রূপান্তর করা হবে।

values() মেথডটি স্ট্যান্ডার্ড লাইব্রেরির Object.values() মেথডের মতো আচরণ প্রদান করে। এটি একটি প্রদত্ত অবজেক্টের নিজস্ব এনুমারেবল প্রপার্টির মানগুলোকে for...in... লুপের মতো একই ক্রমে একটি অ্যারেতে ফেরত দেয়। যদি ইনপুট মানটি একটি অবজেক্ট না হয়, তবে এটিকে জোর করে একটি অবজেক্টে রূপান্তর করা হবে।

entries() মেথডটি স্ট্যান্ডার্ড লাইব্রেরির Object.entries() মেথডের মতো আচরণ প্রদান করে। এটি একটি প্রদত্ত অবজেক্টের নিজস্ব এনুমারেবল প্রপার্টি [key, value] জোড়াগুলোকে for...in... লুপের মতো একই ক্রমে একটি অ্যারেতে ফেরত দেয়। যদি ইনপুট ভ্যালুটি কোনো অবজেক্ট না হয়, তবে এটিকে জোর করে একটি অবজেক্টে রূপান্তর করা হবে।

freeze() মেথডটি স্ট্যান্ডার্ড লাইব্রেরির Object.freeze() এর মতো আচরণ প্রদান করে। একটি ফ্রোজেন অবজেক্ট আর পরিবর্তন করা যায় না; একটি অবজেক্টকে ফ্রিজ করলে তাতে নতুন প্রোপার্টি যোগ করা, বিদ্যমান প্রোপার্টি মুছে ফেলা এবং সেগুলোর মান পরিবর্তন করা বন্ধ হয়ে যায়। freeze() মেথডটি পাস করা অবজেক্টটিই রিটার্ন করে। একটি প্রিমিটিভ বা null আর্গুমেন্টকে ফ্রোজেন অবজেক্ট হিসেবে গণ্য করা হবে এবং সেটিই রিটার্ন করা হবে।

` delete() ` মেথডটি স্ট্যান্ডার্ড লাইব্রেরির `delete` অপারেটরের মতো আচরণ করে। এটি অবজেক্ট থেকে প্রদত্ত কী-টি মুছে ফেলে, যদি না অবজেক্টটি ফ্রোজেন (frozen) করা থাকে। স্ট্যান্ডার্ড লাইব্রেরির `delete` অপারেটরের মতোই, যদি প্রথম ইনপুট ভ্যালুটি ( objectInput ) এমন একটি অবজেক্ট হয় যা ফ্রোজেন করা নেই, তাহলে এটি true রিটার্ন করে, এমনকি যদি দ্বিতীয় ইনপুট ভ্যালুটি ( keyToDelete ) এমন একটি কী নির্দিষ্ট করে যা বিদ্যমান নেই। অন্য সব ক্ষেত্রে এটি false রিটার্ন করে। তবে, এটি নিম্নলিখিত উপায়ে স্ট্যান্ডার্ড লাইব্রেরির `delete` অপারেটর থেকে ভিন্ন:

  • keyToDelete এমন কোনো ডট-ডিলিমিটেড স্ট্রিং হতে পারে না যা একটি নেস্টেড কী নির্দিষ্ট করে।
  • অ্যারে থেকে উপাদান মুছে ফেলার জন্য delete() ব্যবহার করা যায় না।
  • গ্লোবাল স্কোপ থেকে কোনো প্রোপার্টি মুছে ফেলার জন্য delete() ব্যবহার করা যায় না।

সিনট্যাক্স

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

প্যারামিটার

অবজেক্ট.কী

প্যারামিটার প্রকার বর্ণনা
অবজেক্ট ইনপুট যেকোনো যে অবজেক্টটির কী-গুলো গণনা করতে হবে। যদি ইনপুটটি একটি অবজেক্ট না হয়, তবে এটিকে একটি অবজেক্টে রূপান্তরিত করা হবে।

Object.values

প্যারামিটার প্রকার বর্ণনা
অবজেক্ট ইনপুট যেকোনো যে অবজেক্টটির মানগুলো গণনা করতে হবে। যদি ইনপুটটি কোনো অবজেক্ট না হয়, তবে এটিকে একটি অবজেক্টে রূপান্তরিত করা হবে।

অবজেক্ট.এন্ট্রি

প্যারামিটার প্রকার বর্ণনা
অবজেক্ট ইনপুট যেকোনো যে অবজেক্টটির কী/ভ্যালু পেয়ারগুলো গণনা করতে হবে। যদি ইনপুটটি অবজেক্ট না হয়, তবে এটিকে একটি অবজেক্টে রূপান্তরিত করা হবে।

অবজেক্ট.ফ্রিজ

প্যারামিটার প্রকার বর্ণনা
অবজেক্ট ইনপুট যেকোনো যে অবজেক্টটিকে ফ্রিজ করতে হবে। যদি ইনপুটটি কোনো অবজেক্ট না হয়, তবে এটিকে একটি ফ্রোজেন অবজেক্ট হিসেবে গণ্য করা হবে।

অবজেক্ট.ডিলিট

প্যারামিটার প্রকার বর্ণনা
অবজেক্ট ইনপুট যেকোনো যে অবজেক্টটির কী মুছে ফেলতে হবে।
keyToDelete স্ট্রিং মুছে ফেলার জন্য শীর্ষ-স্তরের কী।

উদাহরণ

const Object = require('Object');

// The keys of an object are enumerated in an array.
const keys = Object.keys({foo: 'bar'});

// The values of an object are enumerated in an array.
const values = Object.values({foo: 'bar'});

// The key/value pairs of an object are enumerated in an array.
const entries = Object.entries({foo: 'bar'});

// The input object is frozen.
const frozen = Object.freeze({foo: 'bar'});

// The key is removed from the input object.
const obj1 = {deleteme: 'value'};
Object.delete(obj1, 'deleteme');
// Only a top-level key can be specified as the key to delete.
const obj2 = {nested: {key: 'value'}};
Object.delete(obj2, 'nested.key'); // This has no effect.
Object.delete(obj2.nested, 'key'); // This deletes the nested key.

Promise

এমন একটি অবজেক্ট ফেরত দেয় যা প্রমিসের সাথে ইন্টারঅ্যাক্ট করার জন্য মেথড সরবরাহ করে।

প্রমিসগুলো কার্যগতভাবে জাভাস্ক্রিপ্ট প্রমিসের সমতুল্য। প্রতিটি ইনস্ট্যান্সে তিনটি মেথড থাকে যা একটি প্রমিস রিটার্ন করে, এবং প্রমিসটি সেটেল হলে পরবর্তী পদক্ষেপ নেওয়ার সুযোগ দেয়:

  • .then() - এটি সমাধানকৃত এবং প্রত্যাখ্যাত উভয় পরিস্থিতিই পরিচালনা করে। এটি প্যারামিটার হিসেবে দুটি কলব্যাক গ্রহণ করে: একটি সফলতার জন্য এবং অন্যটি ব্যর্থতার জন্য।
  • .catch() - শুধুমাত্র প্রত্যাখ্যাত ক্ষেত্রগুলো পরিচালনা করে। প্যারামিটার হিসেবে একটি কলব্যাক গ্রহণ করে।
  • .finally() - প্রমিসটি রিজলভ বা রিজেক্ট যাই হোক না কেন, কোড রান করার একটি উপায় প্রদান করে। এটি প্যারামিটার হিসেবে একটি কলব্যাক গ্রহণ করে, যা কোনো আর্গুমেন্ট ছাড়াই কল করা হয়।

যে ভেরিয়েবল একটি প্রমিজ রিটার্ন করে, তার মান প্রমিজটির রিজলভড ভ্যালুর সমান হয়, অথবা প্রমিজটি রিজেক্ট হলে তার মান ফলস false

উদাহরণ

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

Promise.all

প্রমিস ফেরত দেয় যা হয়:

  • যখন সমস্ত ইনপুট সমাধান হয়ে যায়, তখন সমাধান হয়, অথবা
  • যেকোনো একটি ইনপুট প্রত্যাখ্যাত হলে এটিও প্রত্যাখ্যাত হয়।

সিনট্যাক্স

Promise.all(inputs);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
inputs অ্যারে ভ্যালু বা প্রমিজের একটি অ্যারে। যদি কোনো ইনপুট প্রমিজ না হয়, তবে সেটিকে একটি প্রমিজের রিজলভড ভ্যালু হিসেবে পাস করা হয়। ইনপুটটি অ্যারে না হলে একটি এরর থ্রো করা হয়।

উদাহরণ

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

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

সংশ্লিষ্ট অনুমতি

কিছুই না।

Promise.create

এমন একটি প্রমিস তৈরি করে যা কার্যকারিতার দিক থেকে জাভাস্ক্রিপ্ট প্রমিসের সমতুল্য।

সিনট্যাক্স

Promise.create(resolver);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
resolver ফাংশন একটি ফাংশন যা `resolve` এবং `reject`—এই দুটি ফাংশনের মাধ্যমে কল করা হয়। সংশ্লিষ্ট প্যারামিটারটি কল করা হলে রিটার্ন করা প্রমিসটি `resolve` বা `reject` হবে। `resolver` ফাংশনটি না হলে একটি এরর থ্রো করে।

উদাহরণ

const Promise = require('Promise');

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

সংশ্লিষ্ট অনুমতি

কিছুই না।

টেস্ট এপিআই

এই এপিআইগুলো গুগল ট্যাগ ম্যানেজারের কাস্টম টেমপ্লেটের জন্য টেস্ট তৈরি করতে স্যান্ডবক্সড জাভাস্ক্রিপ্ট টেস্টের সাথে কাজ করে। এই টেস্ট এপিআইগুলোর জন্য কোনো require() ` স্টেটমেন্টের প্রয়োজন হয় না। [কাস্টম টেমপ্লেট টেস্ট সম্পর্কে আরও জানুন]।


assertApi

একটি ম্যাচিং অবজেক্ট রিটার্ন করে যা প্রদত্ত API সম্পর্কে সাবলীলভাবে অ্যাসারশন করার জন্য ব্যবহার করা যেতে পারে।

সিনট্যাক্স

assertApi(apiName)

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
apiName স্ট্রিং যে এপিআইটি যাচাই করতে হবে তার নাম; এটি 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] লাইব্রেরির আদলে তৈরি করা হয়েছে। এটি এমন একটি অবজেক্ট রিটার্ন করে যা ব্যবহার করে কোনো বিষয়ের মান সম্পর্কে সাবলীলভাবে অ্যাসারশন করা যায়। কোনো অ্যাসারশন ব্যর্থ হলে টেস্টটি সঙ্গে সঙ্গে বন্ধ হয়ে যাবে এবং ব্যর্থ হিসেবে চিহ্নিত হবে। তবে, একটি টেস্ট ব্যর্থ হলে তা অন্য টেস্ট কেসগুলোকে প্রভাবিত করবে না।

সিনট্যাক্স

assertThat(actual, opt_message)

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
actual যেকোনো ফ্লুয়েন্ট চেকগুলিতে ব্যবহার করার জন্য মান।
opt_message স্ট্রিং অ্যাসারশন ব্যর্থ হলে প্রিন্ট করার জন্য ঐচ্ছিক বার্তা।

ম্যাচার্স

ম্যাচিং বর্ণনা
isUndefined() দাবি করে যে বিষয়টি undefined
isDefined() দাবি করে যে বিষয়টি undefined নয়।
isNull() দাবি করে যে বিষয়টি null
isNotNull() দাবি করে যে বিষয়টি null নয়।
isFalse() বিষয়টি false বলে দাবি করে।
isTrue() বিষয়টি true বলে দাবি করে।
isFalsy() নিশ্চিত করে যে সাবজেক্টটি ফলসি। ফলসি ভ্যালুগুলো হলো undefined , null , false , NaN , 0, এবং '' (খালি স্ট্রিং)।
isTruthy() এটি নিশ্চিত করে যে আলোচ্য বিষয়টি সত্য। মিথ্যা মানগুলো হলো undefined , null , false , NaN , 0 এবং '' (খালি স্ট্রিং)।
isNaN() দাবি করা হচ্ছে যে আলোচ্য বিষয়টির মান হলো NaN।
isNotNaN() দাবি করে যে আলোচ্য বিষয়টি NaN ব্যতীত অন্য যেকোনো মান।
isInfinity() বিষয়টি ধনাত্মক বা ঋণাত্মক অসীম বলে দাবি করে।
isNotInfinity() দাবি করে যে আলোচ্য বিষয়টি ধনাত্মক বা ঋণাত্মক অসীম ব্যতীত অন্য যেকোনো মান।
isEqualTo(expected) এটি নিশ্চিত করে যে আলোচ্য বিষয়টি প্রদত্ত মানের সমান। এটি একটি মান তুলনা, কোনো রেফারেন্স তুলনা নয়। অবজেক্ট এবং অ্যারের বিষয়বস্তু পুনরাবৃত্তিমূলকভাবে তুলনা করা হয়।
isNotEqualTo(expected) এটি নিশ্চিত করে যে আলোচ্য বিষয়টি প্রদত্ত মানের সমান নয়। এটি একটি মান তুলনা, কোনো রেফারেন্স তুলনা নয়। অবজেক্ট এবং অ্যারের বিষয়বস্তু পুনরাবৃত্তিমূলকভাবে তুলনা করা হয়।
isAnyOf(...expected) এটি নিশ্চিত করে যে সাবজেক্টটি প্রদত্ত মানগুলোর মধ্যে একটির সমান। এটি একটি ভ্যালু কম্প্যারিসন, রেফারেন্স কম্প্যারিসন নয়। অবজেক্ট এবং অ্যারের বিষয়বস্তু রিকার্সিভলি তুলনা করা হয়।
isNoneOf(...expected) এটি নিশ্চিত করে যে আলোচ্য বিষয়টি প্রদত্ত কোনো মানের সমান নয়। এটি একটি মান তুলনা, কোনো রেফারেন্স তুলনা নয়। অবজেক্ট এবং অ্যারের বিষয়বস্তু পুনরাবৃত্তিমূলকভাবে তুলনা করা হয়।
isStrictlyEqualTo(expected) দাবি করে যে আলোচ্য বিষয়টি প্রদত্ত মানের হুবহু সমান ( === )।
isNotStrictlyEqualTo(expected) দাবি করে যে আলোচ্য বিষয়টি প্রদত্ত মানের হুবহু সমান নয় ( !== )।
isGreaterThan(expected) ক্রমিক তুলনার ক্ষেত্রে, আলোচ্য বিষয়টি প্রদত্ত মানের চেয়ে বৃহত্তর ( > ) তা দাবি করে।
isGreaterThanOrEqualTo(expected) ক্রমিক তুলনার ক্ষেত্রে, আলোচ্য বিষয়টি প্রদত্ত মানের চেয়ে বৃহত্তর বা সমান ( >= ) তা নিশ্চিত করে।
isLessThan(expected) ক্রমিক তুলনার ক্ষেত্রে, আলোচ্য বিষয়টি প্রদত্ত মানের চেয়ে ছোট ( < ) তা নিশ্চিত করে।
isLessThanOrEqualTo(expected) ক্রমিক তুলনার ক্ষেত্রে, আলোচ্য বিষয়টি প্রদত্ত মানের চেয়ে কম বা সমান ( <= ) তা নিশ্চিত করে।
contains(...expected) এটি নিশ্চিত করে যে আলোচ্য বিষয়টি একটি অ্যারে বা স্ট্রিং, যা প্রদত্ত সমস্ত মান যেকোনো ক্রমে ধারণ করে। এটি একটি মান তুলনা, কোনো রেফারেন্স তুলনা নয়। অবজেক্ট এবং অ্যারের বিষয়বস্তু রিকার্সিভভাবে তুলনা করা হয়।
doesNotContain(...expected) এটি নিশ্চিত করে যে আলোচ্য বিষয়টি একটি অ্যারে বা স্ট্রিং, যাতে প্রদত্ত মানগুলোর কোনোটিই নেই। এটি একটি মান তুলনা, রেফারেন্স তুলনা নয়। অবজেক্ট এবং অ্যারের বিষয়বস্তু রিকার্সিভভাবে তুলনা করা হয়।
containsExactly(...expected) এটি নিশ্চিত করে যে সাবজেক্টটি একটি অ্যারে, যাতে প্রদত্ত সমস্ত ভ্যালু যেকোনো ক্রমে রয়েছে এবং অন্য কোনো ভ্যালু নেই। এটি একটি ভ্যালু তুলনা, রেফারেন্স তুলনা নয়। অবজেক্ট এবং অ্যারের বিষয়বস্তু রিকার্সিভভাবে তুলনা করা হয়।
doesNotContainExactly(...expected) এটি নিশ্চিত করে যে আলোচ্য বিষয়টি একটি অ্যারে, যাতে প্রদত্ত মানগুলো থেকে ভিন্ন কোনো মান যেকোনো ক্রমে থাকতে পারে। এটি একটি মান তুলনা, কোনো রেফারেন্স তুলনা নয়। অবজেক্ট এবং অ্যারের বিষয়বস্তু পুনরাবৃত্তিমূলকভাবে তুলনা করা হয়।
hasLength(expected) নিশ্চিত করে যে সাবজেক্টটি প্রদত্ত দৈর্ঘ্যের একটি অ্যারে বা স্ট্রিং। যদি মানটি অ্যারে বা স্ট্রিং না হয়, তবে অ্যাসারশনটি সর্বদা ব্যর্থ হয়।
isEmpty() নিশ্চিত করে যে সাবজেক্টটি একটি অ্যারে অথবা খালি (দৈর্ঘ্য = ০) স্ট্রিং। যদি ভ্যালুটি অ্যারে বা স্ট্রিং না হয়, তবে অ্যাসারশনটি সর্বদা ব্যর্থ হয়।
isNotEmpty() নিশ্চিত করে যে সাবজেক্টটি একটি অ্যারে বা স্ট্রিং যা খালি নয় (দৈর্ঘ্য > ০)। যদি মানটি অ্যারে বা স্ট্রিং না হয়, তাহলে অ্যাসারশনটি সর্বদা ব্যর্থ হয়।
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 এপিআই আপনাকে স্যান্ডবক্সড এপিআই-এর আচরণ ওভাররাইড করার সুযোগ দেয়। মক এপিআই টেমপ্লেট কোডে ব্যবহার করা নিরাপদ, কিন্তু এটি শুধুমাত্র টেস্ট মোডে কার্যকর থাকে। প্রতিটি টেস্ট চালানোর আগে মকগুলো রিসেট করা হয়।

সিনট্যাক্স

mock(apiName, returnValue);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
apiName স্ট্রিং যে এপিআই-কে মক করতে হবে তার নাম; require() এ পাঠানো স্ট্রিং-এর মতোই।
returnValue যেকোনো এপিআই-এর জন্য যে মানটি ফেরত দেওয়া হবে অথবা এপিআই-এর পরিবর্তে কল করা কোনো ফাংশন। যদি returnValue একটি ফাংশন হয়, তবে স্যান্ডবক্সড এপিআই-এর পরিবর্তে সেই ফাংশনটি কল করা হয়; আর যদি returnValue ফাংশন ছাড়া অন্য কিছু হয়, তবে স্যান্ডবক্সড এপিআই-এর পরিবর্তে সেই মানটি ফেরত দেওয়া হয়।

উদাহরণ

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

mockObject

mockObject API আপনাকে অবজেক্ট রিটার্নকারী স্যান্ডবক্সড API-গুলোর আচরণ ওভাররাইড করার সুযোগ দেয়। এই API টেমপ্লেট কোডে ব্যবহার করা নিরাপদ, কিন্তু এটি শুধুমাত্র টেস্ট মোডে কার্যকর থাকে। প্রতিটি টেস্ট চালানোর আগে মকগুলো রিসেট করা হয়।

সিনট্যাক্স

mockObject(apiName, objectMock);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
apiName স্ট্রিং যে এপিআই-কে মক করতে হবে তার নাম; require() এ পাঠানো স্ট্রিং-এর মতোই।
objectMock বস্তু এপিআই-এর জন্য অথবা এপিআই-এর পরিবর্তে কল করা কোনো ফাংশনের জন্য যে মানটি ফেরত দেওয়া হবে। এটি অবশ্যই একটি অবজেক্ট হতে হবে।

উদাহরণ

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

,

এই ডকুমেন্টে সার্ভার-সাইড ট্যাগিংয়ের জন্য এপিআইগুলোর রূপরেখা দেওয়া হয়েছে।


addEventCallback

একটি কলব্যাক ফাংশন রেজিস্টার করে যা কোনো ইভেন্টের শেষে চালু হবে। ইভেন্টের জন্য নির্ধারিত সমস্ত ট্যাগ কার্যকর হয়ে গেলে কলব্যাকটি চালু হবে। কলব্যাকে দুটি ভ্যালু পাস করা হয়: যে কন্টেইনারটি ফাংশনটি চালু করে তার আইডি এবং ইভেন্ট সম্পর্কিত তথ্য ধারণকারী একটি অবজেক্ট।

যখন এই API কোনো ট্যাগে ব্যবহৃত হয়, তখন এটি বর্তমান ইভেন্টের সাথে যুক্ত হয়। যখন এই API কোনো ক্লায়েন্টে ব্যবহৃত হয়, তখন runContainer API-এর bindToEvent ফাংশন ব্যবহার করে এটিকে একটি নির্দিষ্ট ইভেন্টের সাথে আবদ্ধ করতে হবে। আরও বিস্তারিত জানতে উদাহরণটি দেখুন।

সিনট্যাক্স

const addEventCallback = require('addEventCallback');

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

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
callback ফাংশন ইভেন্টের শেষে যে ফাংশনটি চালু করা হবে।

eventData অবজেক্টটিতে নিম্নলিখিত ডেটা রয়েছে:

চাবির নাম প্রকার বর্ণনা
tags অ্যারে ট্যাগ ডেটা অবজেক্টের একটি অ্যারে। ইভেন্ট চলাকালীন ফায়ার হওয়া প্রতিটি ট্যাগের একটি এন্ট্রি এই অ্যারেতে থাকবে। ট্যাগ ডেটা অবজেক্টটিতে ট্যাগের আইডি ( id ), এর এক্সিকিউশন স্ট্যাটাস ( status ) এবং এর এক্সিকিউশন টাইম ( executionTime ) থাকে। ট্যাগ ডেটাতে ট্যাগে কনফিগার করা অতিরিক্ত মেটাডেটাও অন্তর্ভুক্ত থাকবে।

উদাহরণ

একজন ক্লায়েন্টের ক্ষেত্রে:

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

claimRequest();

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

একটি ট্যাগে:

const addEventCallback = require('addEventCallback');

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

সংশ্লিষ্ট অনুমতি

read_event_metadata


callLater

অ্যাসিঙ্ক্রোনাসভাবে একটি ফাংশন কল করার জন্য সময় নির্ধারণ করে। বর্তমান কোডটি রিটার্ন করার পর ফাংশনটি কল করা হবে। এটি setTimeout(<function>, 0) -এর সমতুল্য।

উদাহরণ

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

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

সিনট্যাক্স

callLater(function)

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
function ফাংশন যে ফাংশনটিকে কল করতে হবে।

সংশ্লিষ্ট অনুমতি

কিছুই না।


claimRequest

অনুরোধটি দাবি করার জন্য ক্লায়েন্টে এই API-টি ব্যবহার করুন। একবার কোনো অনুরোধ দাবি করা হলে, কন্টেইনারটি আর অতিরিক্ত ক্লায়েন্ট চালায় না।

এই API-টি কোনো ট্যাগ বা ভেরিয়েবলের মধ্যে কল করা হলে একটি এক্সেপশন থ্রো করে। ক্লায়েন্ট রিটার্ন করার পরে কল করা হলেও এই API-টি একটি এক্সেপশন থ্রো করে (যেমন callLater বা runContainer onComplete ফাংশনের মতো কোনো অ্যাসিঙ্ক কলব্যাকে কল করা হলে)।

runContainer API কল করার আগে একজন ক্লায়েন্টকে এই API ব্যবহার করে অনুরোধটি দাবি করতে হবে।

উদাহরণ

const claimRequest = require('claimRequest');

claimRequest();

সিনট্যাক্স

claimRequest();

সংশ্লিষ্ট অনুমতি

কিছুই না।


computeEffectiveTldPlusOne

প্রদত্ত ডোমেইন বা ইউআরএল-এর কার্যকরী শীর্ষ-স্তরের ডোমেইন + ১ (eTLD+1) ফেরত দেয়। পাবলিক সাফিক্স লিস্টের নিয়ম অনুযায়ী ডোমেইনটিকে মূল্যায়ন করে eTLD+1 গণনা করা হয়। eTLD+1 সাধারণত সর্বোচ্চ-স্তরের ডোমেইন, যেখানে আপনি একটি কুকি সেট করতে পারেন।

আর্গুমেন্টটি null বা undefined হলে, আর্গুমেন্টের মান অপরিবর্তিতভাবে ফেরত দেওয়া হয়। অন্যথায় আর্গুমেন্টটিকে একটি স্ট্রিং-এ রূপান্তর করা হয়। আর্গুমেন্টটি যদি একটি বৈধ ডোমেইন বা URL না হয়, তাহলে একটি ফাঁকা স্ট্রিং ফেরত দেওয়া হয়। সার্ভার যদি পাবলিক সাফিক্স তালিকাটি আনতে অক্ষম হয়, তাহলে আর্গুমেন্টের মান অপরিবর্তিতভাবে ফেরত দেওয়া হয়।

উদাহরণ

const computeEffectiveTldPlusOne = require('computeEffectiveTldPlusOne');

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

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

সিনট্যাক্স

computeEffectiveTldPlusOne(domainOrUrl);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
domainOrUrl স্ট্রিং একটি ডোমেইন বা ইউআরএল যার উপর ভিত্তি করে eTLD+1 গণনা করা হবে।

সংশ্লিষ্ট অনুমতি

কিছুই না।


createRegex

একটি নতুন রেজেক্স ইনস্ট্যান্স তৈরি করে এবং সেটিকে একটি অবজেক্টে মুড়ে ফেরত দেয়। আপনি সরাসরি রেজেক্সটি অ্যাক্সেস করতে পারবেন না। তবে, আপনি এটিকে testRegex API, String.replace() , String.match() , এবং String.search() -এর মধ্যে পাস করতে পারবেন।

রেজেক্সটি অবৈধ হলে অথবা সার্ভারে Re2 উপলব্ধ না থাকলে null রিটার্ন করে।

এই এপিআইটি একটি 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

আগত মেজারমেন্ট প্রোটোকল V1 অনুরোধকে ইউনিফাইড স্কিমা ফরম্যাটে ইভেন্টের একটি তালিকায় অনুবাদ করে। নিষ্কাশিত ইভেন্টগুলির তালিকা ফেরত দেয়। অনুরোধটি সঠিক ফরম্যাটে না থাকলে একটি ত্রুটি প্রদর্শন করে।

উদাহরণ

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

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

সিনট্যাক্স

extractEventsFromMpv1();

সংশ্লিষ্ট অনুমতি

read_request পারমিশন প্রয়োজন। পারমিশনটি অবশ্যই এমনভাবে কনফিগার করা থাকতে হবে যাতে অন্তত নিম্নলিখিতগুলিতে অ্যাক্সেস দেওয়া যায়:

  • body
  • query parameters

extractEventsFromMpv2

আগত মেজারমেন্ট প্রোটোকল V2 অনুরোধকে ইউনিফাইড স্কিমা ফরম্যাটে ইভেন্টের একটি তালিকায় অনুবাদ করে। নিষ্কাশিত ইভেন্টগুলির তালিকা ফেরত দেয়। অনুরোধটি সঠিক ফরম্যাটে না থাকলে একটি ত্রুটি দেখায়।

উদাহরণ

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

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

সিনট্যাক্স

extractEventsFromMpv2();

সংশ্লিষ্ট অনুমতি

read_request পারমিশন প্রয়োজন। পারমিশনটি অবশ্যই এমনভাবে কনফিগার করা থাকতে হবে যাতে অন্তত নিম্নলিখিতগুলিতে অ্যাক্সেস দেওয়া যায়:

  • body
  • query parameters

fromBase64

বেস৬৪-এনকোডেড স্ট্রিং ডিকোড করে। ইনপুটটি অবৈধ হলে undefined রিটার্ন করে।

সিনট্যাক্স

fromBase64(base64EncodedString);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
base64EncodedString স্ট্রিং Base64 এনকোডেড স্ট্রিং।

উদাহরণ

const fromBase64 = require('fromBase64');

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

সংশ্লিষ্ট অনুমতি

কিছুই না।


generateRandom

প্রদত্ত পরিসরের মধ্যে একটি এলোমেলো সংখ্যা (পূর্ণসংখ্যা) ফেরত দেয়।

উদাহরণ

const generateRandom = require('generateRandom');

const randomValue = generateRandom(0, 10000000);

সিনট্যাক্স

generateRandom(min, max);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
min সংখ্যা ফেরত আসা পূর্ণসংখ্যাটির সর্বনিম্ন সম্ভাব্য মান (উভয় মানসহ)।
max সংখ্যা ফেরত আসা পূর্ণসংখ্যাটির সর্বোচ্চ সম্ভাব্য মান (উভয় মানসহ)।

সংশ্লিষ্ট অনুমতি

কিছুই না।


getAllEventData

ইভেন্ট ডেটার একটি অনুলিপি ফেরত দেয়।

সিনট্যাক্স

getAllEventData();

সংশ্লিষ্ট অনুমতি

read_event_data


getClientName

বর্তমান ক্লায়েন্টের নাম সম্বলিত একটি স্ট্রিং ফেরত দেয়।

সিনট্যাক্স

getClientName();

সংশ্লিষ্ট অনুমতি

read_container_data


getContainerVersion

বর্তমান কন্টেইনার সম্পর্কিত তথ্য সম্বলিত একটি অবজেক্ট ফেরত দেয়। ফেরত আসা অবজেক্টটিতে নিম্নলিখিত ফিল্ডগুলো থাকবে:

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

উদাহরণ

const getContainerVersion = require('getContainerVersion');

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

সিনট্যাক্স

getContainerVersion();

সংশ্লিষ্ট অনুমতি

read_container_data


getCookieValues

প্রদত্ত নামের সমস্ত কুকির মান সম্বলিত একটি অ্যারে ফেরত দেয়।

উদাহরণ

const getCookieValues = require('getCookieValues');

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

সিনট্যাক্স

getCookieValues(name[, noDecode]);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
name স্ট্রিং কুকিটির নাম।
noDecode বুলিয়ান যদি true , তাহলে কুকির মানগুলো ফেরত দেওয়ার আগে ডিকোড করা হবে না। এর ডিফল্ট মান ' false

সংশ্লিষ্ট অনুমতি

get_cookies


getEventData

ইভেন্ট ডেটার মধ্যে প্রদত্ত পাথে থাকা ভ্যালুটির একটি কপি ফেরত দেয়। যদি কোনো ইভেন্ট ডেটা না থাকে অথবা প্রদত্ত পাথে কোনো ভ্যালু না থাকে, তাহলে undefined ফেরত দেয়।

উদাহরণ

const getEventData = require('getEventData');

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

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
keyPath যেকোনো কী-এর পাথ, যেখানে পাথের উপাদানগুলো ডট দিয়ে আলাদা করা থাকে। পাথের উপাদানগুলো কোনো অবজেক্টের কী অথবা কোনো অ্যারের ইন্ডেক্স হতে পারে। যদি keyPath একটি স্ট্রিং না হয়, তবে এটিকে একটি স্ট্রিং-এ রূপান্তর করা হয়।

সিনট্যাক্স

getEventData(keyPath);

সংশ্লিষ্ট অনুমতি

read_event_data


getGoogleAuth

একটি অথরাইজেশন অবজেক্ট রিটার্ন করে, যা sendHttpGet বা sendHttpRequest সাথে ব্যবহার করা হলে গুগল ক্লাউড এপিআই-এর জন্য একটি অথরাইজেশন হেডার অন্তর্ভুক্ত করবে। এই এপিআই সার্ভার এনভায়রনমেন্ট থেকে স্বয়ংক্রিয়ভাবে ক্রেডেনশিয়াল খুঁজে বের করার জন্য অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল ব্যবহার করে।

উদাহরণ

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

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

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

সিনট্যাক্স

getGoogleAuth(scopes);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
scopes অ্যারে অ্যাক্সেসের জন্য অনুরোধ করার উদ্দেশ্যে OAuth 2.0 গুগল এপিআই স্কোপগুলোর একটি অ্যারে।

সংশ্লিষ্ট অনুমতি

use_google_credentials পারমিশন প্রয়োজন। পারমিশনটি এক বা একাধিক অনুমোদিত স্কোপ দিয়ে কনফিগার করতে হবে।


getGoogleScript

পূর্বনির্ধারিত গুগল স্ক্রিপ্টের সেট থেকে একটি রিসোর্স পুনরুদ্ধার করে এবং স্ক্রিপ্ট ও সংশ্লিষ্ট ক্যাশিং মেটাডেটা সহ একটি প্রমিজ ফেরত দেয়।

প্রমিসটি একটি অবজেক্টে রিজলভ হবে, যাতে script এবং metadata নামে দুটি কী থাকবে। অনুরোধটি ব্যর্থ হলে, প্রমিসটি একটি reason ' কী সহ রিজেক্ট হবে।

metadata অবজেক্টটিতে রিসোর্স রেসপন্স হেডারের উপর ভিত্তি করে নিম্নলিখিত ক্যাশিং মেটাডেটা থাকবে; প্রতিটি ফিল্ড কেবল তখনই উপস্থিত থাকবে, যদি রিসোর্স রেসপন্সে সংশ্লিষ্ট হেডারটি উপস্থিত থাকে।

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

উদাহরণ

const getGoogleScript = require('getGoogleScript');

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

সিনট্যাক্স

getGoogleScript(script[, options]);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
script স্ট্রিং স্ক্রিপ্টের নাম। সমর্থিত স্ক্রিপ্টগুলো হলো 'ANALYTICS' , 'GTAG' এবং 'GTM'

'ANALYTICS' অপশনটি https://www.google-analytics.com/analytics.js থেকে গুগল অ্যানালিটিক্স স্ক্রিপ্টটি নিয়ে আসে।

'GTAG' অপশনটি https://www.googletagmanager.com/gtag/js থেকে গ্লোবাল সাইট ট্যাগ (gtag.js) স্ক্রিপ্টটি নিয়ে আসে।

'GTM' অপশনটি https://www.googletagmanager.com/gtm.js থেকে গুগল ট্যাগ ম্যানেজার স্ক্রিপ্টটি নিয়ে আসে।
options বস্তু ঐচ্ছিক অনুরোধের বিকল্পসমূহ। সমর্থিত বিকল্পগুলোর জন্য নিচে দেখুন।

বিকল্প

বিকল্প প্রকার বর্ণনা
id স্ট্রিং gtag মেজারমেন্ট আইডি সহ 'GTAG' এবং ওয়েব কন্টেইনার আইডি সহ 'GTM' এর ক্ষেত্রে প্রযোজ্য (যেমন, GTM-XXXX)।
debug যেকোনো যদি সত্য হয়, তাহলে পরিমাপ স্ক্রিপ্টটির ডিবাগ সংস্করণ অনুরোধ করে এবং ফেরত দেয়।
timeout সংখ্যা অনুরোধের সময়সীমা মিলিসেকেন্ডে; অ-ধনাত্মক মান উপেক্ষা করা হয়। অনুরোধের সময়সীমা শেষ হয়ে গেলে, স্ক্রিপ্ট মানের জন্য undefined ' এবং মেটাডেটা অবজেক্টের জন্য {} সহ কলব্যাকটি আহ্বান করা হবে।

অপরিচিত অপশন কী উপেক্ষা করা হয়।

সংশ্লিষ্ট অনুমতি

send_http পারমিশন প্রয়োজন। পারমিশনটি অবশ্যই এমনভাবে কনফিগার করতে হবে যাতে অন্তত নিম্নলিখিতগুলিতে অ্যাক্সেস দেওয়া যায়:

  • গুগল ডোমেইনগুলিকে অনুমতি দিন

getRemoteAddress

Forwarded এবং X-Forwarded-For-এর মতো রিকোয়েস্ট হেডারগুলো পড়ে, এটি সেই আইপি অ্যাড্রেসের একটি স্ট্রিং রিপ্রেজেন্টেশন রিটার্ন করে যেখান থেকে রিকোয়েস্টটি করা হয়েছে, যেমন IPv4-এর জন্য 12.345.67.890 অথবা IPv6-এর জন্য 2001:0db8:85a3:0:0:8a2e:0370:7334 । দ্রষ্টব্য: এই API-টি উৎস আইপি খুঁজে বের করার জন্য যথাসাধ্য চেষ্টা করে, কিন্তু এটি ফলাফলের নির্ভুলতার নিশ্চয়তা দিতে পারে না।

সিনট্যাক্স

getRemoteAddress();

সংশ্লিষ্ট অনুমতি

read_request পারমিশন প্রয়োজন। পারমিশনটি অবশ্যই এমনভাবে কনফিগার করা থাকতে হবে যাতে অন্তত নিম্নলিখিতগুলিতে অ্যাক্সেস দেওয়া যায়:

  • হেডার Forwarded এবং X-Forwarded-For
  • রিমোট আইপি ঠিকানা

getRequestBody

অনুরোধের মূল অংশটি উপস্থিত থাকলে একটি স্ট্রিং হিসাবে ফেরত দেয়, অন্যথায় undefined

সিনট্যাক্স

getRequestBody();

সংশ্লিষ্ট অনুমতি

read_request


getRequestHeader

নির্দিষ্ট রিকোয়েস্ট হেডারের মান উপস্থিত থাকলে একটি স্ট্রিং হিসাবে ফেরত দেয়, অন্যথায় undefined ) ফেরত দেয়। হেডারটি পুনরাবৃত্ত হলে, ফেরত আসা মানগুলো ', ' দিয়ে একসাথে যুক্ত করা হয়।

উদাহরণ

const getRequestHeader = require('getRequestHeader');

const host = getRequestHeader('host');

সিনট্যাক্স

getRequestHeader(headerName);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
headerName স্ট্রিং হেডারের নাম। এই মানটি কেস-ইনসেনসিটিভ।

সংশ্লিষ্ট অনুমতি

read_request


getRequestMethod

অনুরোধের পদ্ধতি, যেমন 'GET' বা 'POST' , একটি স্ট্রিং হিসাবে ফেরত দেয়।

উদাহরণ

const getRequestMethod = require('getRequestMethod');

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

সিনট্যাক্স

getRequestMethod();

সংশ্লিষ্ট অনুমতি

কিছুই না।


getRequestPath

কোয়েরি স্ট্রিং ছাড়া রিকোয়েস্ট পাথটি রিটার্ন করে। উদাহরণস্বরূপ, যদি URL-টি '/foo?id=123' হয়, তাহলে এটি '/foo' রিটার্ন করবে। পাথ থেকে সার্ভার কন্টেইনার URL প্রিফিক্সটি স্বয়ংক্রিয়ভাবে বাদ দেয়। উদাহরণস্বরূপ, যদি সার্ভার কন্টেইনার URL হয় https://example.com/analytics এবং রিকোয়েস্ট পাথটি '/analytics/foo' হয়, তাহলে এটি '/foo' রিটার্ন করবে।

উদাহরণ

const getRequestPath = require('getRequestPath');

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

সিনট্যাক্স

getRequestPath();

সংশ্লিষ্ট অনুমতি

read_request


getRequestQueryParameter

নির্দিষ্ট কোয়েরি স্ট্রিং প্যারামিটারের ডিকোড করা মান একটি স্ট্রিং হিসাবে ফেরত দেয়, অথবা প্যারামিটারটি উপস্থিত না থাকলে undefined ফেরত দেয়। যদি কোয়েরি স্ট্রিং-এ প্যারামিটারটির পুনরাবৃত্তি ঘটে, তবে কোয়েরি স্ট্রিং-এ প্রথম যে মানটি দেখা যায়, সেটিই ফেরত দেওয়া হবে।

উদাহরণ

const getRequestQueryParameter = require('getRequestQueryParameter');

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

সিনট্যাক্স

getRequestQueryParameter(name);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
name স্ট্রিং কোয়েরি প্যারামিটারের নাম।

সংশ্লিষ্ট অনুমতি

read_request


getRequestQueryParameters

আগত HTTP অনুরোধের কোয়েরি প্যারামিটারগুলোকে একটি অবজেক্ট হিসেবে ফেরত দেয়, যা কোয়েরি প্যারামিটারের নামগুলোকে সংশ্লিষ্ট মান বা মানগুলোর সাথে ম্যাপ করে। প্যারামিটারের নাম এবং মানগুলো ডিকোড করা হয়।

উদাহরণ

const getRequestQueryParameters = require('getRequestQueryParameters');

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

সিনট্যাক্স

getRequestQueryParameters();

সংশ্লিষ্ট অনুমতি

read_request


getRequestQueryString

অনুরোধের কোয়েরিটি শুরুতে থাকা প্রশ্নবোধক চিহ্ন ছাড়া একটি স্ট্রিং হিসেবে ফেরত দেয়, অথবা অনুরোধের URL-এ কোনো কোয়েরি স্ট্রিং না থাকলে একটি খালি স্ট্রিং ফেরত দেয়।

উদাহরণ

const getRequestQueryString = require('getRequestQueryString');

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

সিনট্যাক্স

getRequestQueryString();

সংশ্লিষ্ট অনুমতি

read_request


getTimestamp

অপ্রচলিত। getTimestampMillis ব্যবহার করা শ্রেয়।

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

SHA-256 সহ হ্যাশ-ভিত্তিক বার্তা প্রমাণীকরণ কোড (HMAC) ব্যবহার করে একটি এনকোডেড স্বাক্ষর গণনা করে। ডিফল্টরূপে base64url এনকোডিং ব্যবহৃত হয়।

এই API ব্যবহার করতে, সার্ভারে SGTM_CREDENTIALS এনভায়রনমেন্ট ভেরিয়েবলটি নিম্নলিখিত ফরম্যাটে একটি UTF-8 এনকোডেড JSON কী ফাইলের পাথে সেট করুন:

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

মানগুলো হলো বেস৬৪-এনকোডেড HMAC কী। JSON টেক্সটটি কোনো বাইট অর্ডার মার্কার দিয়ে শুরু হতে পারবে না।

উদাহরণ

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

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

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

সিনট্যাক্স

hmacSha256(data, keyId, options)

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
data স্ট্রিং HMAC মান গণনা করার জন্য প্রয়োজনীয় ডেটা।
keyId স্ট্রিং JSON কী ফাইল থেকে ব্যবহারযোগ্য কী-টির একটি কী আইডি।
options বস্তু ঐচ্ছিক এপিআই কনফিগারেশন। (নিচে অপশনসমূহ দেখুন।)

বিকল্প

বিকল্প প্রকার বর্ণনা
outputEncoding স্ট্রিং রিটার্ন ভ্যালুর জন্য এনকোডিং ফরম্যাট নির্দিষ্ট করে। সমর্থিত ফরম্যাটগুলো হলো hex , base64 , বা base64url । নির্দিষ্ট করা না থাকলে ডিফল্ট হিসেবে base64url ব্যবহৃত হয়।

সংশ্লিষ্ট অনুমতি

use_custom_private_keys

সর্বনিম্ন ছবির সংস্করণ

১.০.০


isRequestMpv1

আগত অনুরোধটি মেজারমেন্ট প্রোটোকল V1 অনুরোধ হলে true , অন্যথায় false রিটার্ন করে।

উদাহরণ

const isRequestMpv1 = require('isRequestMpv1');

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

সিনট্যাক্স

isRequestMpv1();

সংশ্লিষ্ট অনুমতি

কিছুই না।


isRequestMpv2

আগত অনুরোধটি একটি মেজারমেন্ট প্রোটোকল V2 অনুরোধ হলে true , অন্যথায় false রিটার্ন করে।

উদাহরণ

const isRequestMpv2 = require('isRequestMpv2');

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

সিনট্যাক্স

isRequestMpv2();

সংশ্লিষ্ট অনুমতি

কিছুই না।


logToConsole

এর আর্গুমেন্টগুলো কনসোলে লগ করে।

এই লগগুলি গুগল ক্লাউড কনসোলের লগস এক্সপ্লোরারে দেখা যায়। এই এপিআই দ্বারা তৈরি লগ এন্ট্রিগুলি দেখতে, লগস এক্সপ্লোরার থেকে logName =~ "stdout" কোয়েরিটি চালান।

উদাহরণ

const logToConsole = require('logToConsole');

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

সিনট্যাক্স

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

প্যারামিটার

এপিআইটি এক বা একাধিক আর্গুমেন্ট গ্রহণ করে, যেগুলোর প্রত্যেকটি প্রয়োজনে একটি স্ট্রিং-এ রূপান্তরিত হয়ে কনসোলে লগ হয়।

সংশ্লিষ্ট অনুমতি

logging


makeInteger

প্রদত্ত মানটিকে একটি সংখ্যায় (পূর্ণসংখ্যায়) রূপান্তর করে।

সিনট্যাক্স

makeInteger(value);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
value যেকোনো ধরনের রূপান্তর করার মান।

সংশ্লিষ্ট অনুমতি

কিছুই না।


makeNumber

প্রদত্ত মানটিকে একটি সংখ্যায় রূপান্তর করে।

সিনট্যাক্স

makeNumber(value);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
value যেকোনো ধরনের রূপান্তর করার মান।

সংশ্লিষ্ট অনুমতি

কিছুই না।


makeString

প্রদত্ত মানটিকে একটি স্ট্রিং হিসেবে ফেরত দেয়।

সিনট্যাক্স

makeString(value);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
value যেকোনো ধরনের রূপান্তর করার মান।

সংশ্লিষ্ট অনুমতি

কিছুই না।


makeTableMap

দুটি কলাম সহ একটি সাধারণ টেবিল অবজেক্টকে Map এ রূপান্তর করে। এটি দুটি কলাম সহ একটি SIMPLE_TABLE টেমপ্লেট ফিল্ডকে আরও সহজে পরিচালনাযোগ্য বিন্যাসে পরিবর্তন করতে ব্যবহৃত হয়।

উদাহরণস্বরূপ, এই ফাংশনটি একটি টেবিল অবজেক্টকে রূপান্তর করতে পারে:

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

একটি মানচিত্রে:

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

একটি অবজেক্ট রিটার্ন করে: যদি কী-ভ্যালু জোড়ের রূপান্তরিত Map এতে যোগ করা হয়ে থাকে, অন্যথায় null রিটার্ন করে।

সিনট্যাক্স

makeTableMap(tableObj, keyColumnName, valueColumnName);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
tableObj তালিকা রূপান্তর করার জন্য টেবিল অবজেক্ট। এটি ম্যাপের একটি তালিকা, যেখানে প্রতিটি Map টেবিলের একটি সারিকে প্রতিনিধিত্ব করে। একটি সারি অবজেক্টের প্রতিটি প্রপার্টির নাম হলো কলামের নাম এবং প্রপার্টির মান হলো সেই সারির কলামের মান।
keyColumnName স্ট্রিং সেই কলামের নাম, যার মানগুলো রূপান্তরিত Map কী (key) হিসেবে ব্যবহৃত হবে।
valueColumnName স্ট্রিং সেই কলামের নাম যার মানগুলো রূপান্তরিত Map মান হয়ে উঠবে।

সংশ্লিষ্ট অনুমতি

কিছুই না।


parseUrl

URL অবজেক্টের মতোই, এটি এমন একটি অবজেক্ট রিটার্ন করে যাতে প্রদত্ত URL-এর সমস্ত উপাদান অংশ থাকে।

যেকোনো ত্রুটিপূর্ণ URL-এর জন্য এই API-টি 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

setCookie , setPixelResponse , setResponseBody , setResponseHeader , এবং setResponseStatus-এর মতো রেসপন্স পরিবর্তনকারী এপিআই (API) ব্যবহার করে অন্যান্য টেমপ্লেট দ্বারা পূর্বে সেট করা রেসপন্সটি ফ্লাশ করে। ডিফল্ট হিসেবে এটি একটি HTTP স্ট্যাটাস কোড ২০০, খালি বডি এবং কোনো হেডার ব্যবহার করে না।

এই এপিআইটি ক্লায়েন্ট টেমপ্লেট থেকে ব্যবহার করার পরামর্শ দেওয়া হয়।

সিনট্যাক্স

returnResponse();

উদাহরণ

runContainer উদাহরণটি দেখুন।

সংশ্লিষ্ট অনুমতি

return_response


runContainer

একটি ইভেন্টের স্কোপের মধ্যে কন্টেইনারের লজিক (ভেরিয়েবল, ট্রিগার, ট্যাগ) চালায়। কন্টেইনার এক্সিকিউশনের সময় এই এপিআই কল করা হলে, কন্টেইনারটি পুনরায় রান হয়।

onComplete এবং onStart কলব্যাকগুলো bindToEvent নামক একটি ফাংশন গ্রহণ করে। ইভেন্টের প্রেক্ষাপটে একটি API চালানোর জন্য bindToEvent ব্যবহার করুন। আরও বিস্তারিত জানতে 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 ফাংশন একটি কলব্যাক যা ট্যাগগুলো ফায়ার হওয়া শুরু হওয়ার ঠিক আগে, তাৎক্ষণিকভাবে চালু হয়।

সংশ্লিষ্ট অনুমতি

run_container


sendEventToGoogleAnalytics

কমন ইভেন্ট ডেটা ব্যবহার করে গুগল অ্যানালিটিক্সে একটি একক ইভেন্ট পাঠায় এবং একটি প্রমিজ রিটার্ন করে যা রিজলভ হয়ে একটি 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 বস্তু ইউনিফাইড স্কিমা ফরম্যাটে ইভেন্টটি।

সংশ্লিষ্ট অনুমতি

send_http পারমিশন প্রয়োজন। পারমিশনটি অবশ্যই এমনভাবে কনফিগার করতে হবে যাতে অন্তত নিম্নলিখিতগুলিতে অ্যাক্সেস দেওয়া যায়:

  • গুগল ডোমেইনগুলিকে অনুমতি দিন

sendHttpGet

নির্দিষ্ট URL-এ একটি HTTP GET অনুরোধ পাঠায় এবং একটি প্রমিজ ফেরত দেয়, যা অনুরোধটি সম্পন্ন হলে বা সময়সীমা শেষ হয়ে গেলে ফলাফলসহ রিজলভ হয়।

সমাধানকৃত ফলাফলটি একটি অবজেক্ট, যাতে statusCode , headers , এবং body এই তিনটি কী থাকে। যদি অনুরোধটি ব্যর্থ হয় (যেমন: অবৈধ URL, হোস্টে যাওয়ার কোনো রুট না থাকা, SSL নেগোসিয়েশন ব্যর্থতা, ইত্যাদি), তাহলে প্রমিসটি {reason: 'failed'} সহ রিজেক্ট হবে। যদি timeout অপশনটি সেট করা থাকে এবং অনুরোধটির সময়সীমা শেষ হয়ে যায়, তাহলে প্রমিসটি {reason: 'timed_out'} সহ রিজেক্ট হবে।

উদাহরণ

const sendHttpGet = require('sendHttpGet');

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

সিনট্যাক্স

sendHttpGet(url[, options]);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
url স্ট্রিং অনুরোধকৃত ইউআরএল।
options বস্তু ঐচ্ছিক অনুরোধের বিকল্পসমূহ। (নিচের বিকল্পসমূহ দেখুন।)

বিকল্প

বিকল্প প্রকার বর্ণনা
headers স্ট্রিং অতিরিক্ত অনুরোধ হেডার।
timeout সংখ্যা অনুরোধটি বাতিল হওয়ার আগেকার সময়সীমা (মিলিসেকেন্ডে)। এর ডিফল্ট মান 15000
authorization বস্তু googleapis.com এ অনুরোধ করার সময় অনুমোদন হেডার অন্তর্ভুক্ত করার জন্য getGoogleAuth কল থেকে প্রাপ্ত ঐচ্ছিক অনুমোদন অবজেক্ট।

সংশ্লিষ্ট অনুমতি

send_http


sendHttpRequest

নির্দিষ্ট URL-এ একটি HTTP অনুরোধ পাঠায় এবং একটি প্রমিজ ফেরত দেয়, যা অনুরোধটি সম্পন্ন হলে বা সময়সীমা শেষ হয়ে গেলে প্রাপ্ত প্রতিক্রিয়া সহ রিজলভ হয়।

সমাধানকৃত ফলাফলটি একটি অবজেক্ট, যাতে statusCode , headers , এবং body এই তিনটি কী থাকে। যদি অনুরোধটি ব্যর্থ হয় (যেমন: অবৈধ URL, হোস্টে যাওয়ার কোনো রুট না থাকা, SSL নেগোসিয়েশন ব্যর্থতা, ইত্যাদি), তাহলে প্রমিসটি {reason: 'failed'} সহ রিজেক্ট হবে। যদি timeout অপশনটি সেট করা থাকে এবং অনুরোধটির সময়সীমা শেষ হয়ে যায়, তাহলে প্রমিসটি {reason: 'timed_out'} সহ রিজেক্ট হবে।

উদাহরণ

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

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

সিনট্যাক্স

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

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
url স্ট্রিং অনুরোধকৃত ইউআরএল।
options বস্তু ঐচ্ছিক অনুরোধের বিকল্পসমূহ। (নিচের বিকল্পসমূহ দেখুন।)
body স্ট্রিং ঐচ্ছিক অনুরোধের মূল অংশ।

বিকল্প

বিকল্প প্রকার বর্ণনা
headers স্ট্রিং অতিরিক্ত অনুরোধ হেডার।
method বস্তু অনুরোধ পদ্ধতি। ডিফল্ট হলো GET
timeout সংখ্যা অনুরোধটি বাতিল হওয়ার আগেকার সময়সীমা (মিলিসেকেন্ডে)। এর ডিফল্ট মান 15000
authorization বস্তু googleapis.com এ অনুরোধ করার সময় অনুমোদন হেডার অন্তর্ভুক্ত করার জন্য getGoogleAuth কল থেকে প্রাপ্ত ঐচ্ছিক অনুমোদন অবজেক্ট।

সংশ্লিষ্ট অনুমতি

send_http


sendPixelFromBrowser

প্রদত্ত URL-টিকে একটি <img> ট্যাগ হিসেবে লোড করার জন্য ব্রাউজারে একটি কমান্ড পাঠায়। এই কমান্ড প্রোটোকলটি Google Analytics-এর জন্য Google Tag এবং Google Analytics: GA Event ওয়েব ট্যাগগুলিতে সমর্থিত। আপনাকে সার্ভার কন্টেইনার URL কনফিগার করতে হবে। আরও বিস্তারিত জানতে নির্দেশাবলী দেখুন।

আগত অনুরোধটি যদি কমান্ড প্রোটোকল সমর্থন না করে, অথবা প্রতিক্রিয়াটি যদি ইতিমধ্যেই ফ্লাশ করা হয়ে থাকে, তাহলে এই API-টি false রিটার্ন করে। অন্যথায় এই API-টি true রিটার্ন করে।

উদাহরণ:

const sendPixelFromBrowser = require('sendPixelFromBrowser');

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

সিনট্যাক্স

sendPixelFromBrowser(url)

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
url স্ট্রিং ব্রাউজারে পাঠানোর জন্য ইউআরএল।

সংশ্লিষ্ট অনুমতি

send_pixel_from_browser


setCookie

নির্দিষ্ট বিকল্পসহ একটি কুকি তৈরি বা মুছে ফেলে।

একটি কুকি মুছে ফেলার জন্য, যে পাথ এবং ডোমেইন দিয়ে কুকিটি তৈরি করা হয়েছিল, ঠিক সেই একই পাথ এবং ডোমেইন ব্যবহার করে একটি নতুন কুকি সেট করতে হবে এবং এর জন্য একটি অতীতকালের মেয়াদ (expires value) নির্ধারণ করতে হবে, যেমন "Thu, 01 Jan 1970 00:00:00 GMT"

মনে রাখবেন, ক্লায়েন্টের কাছে প্রতিক্রিয়া ফেরত পাঠানোর জন্য returnResponse অবশ্যই কল করতে হবে।

উদাহরণ

const setCookie = require('setCookie');

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

সিনট্যাক্স

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

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
name স্ট্রিং কুকির নাম। নামটি কেস-ইনসেনসিটিভ।
value স্ট্রিং কুকির মান।
options বস্তু ঐচ্ছিক কুকি অ্যাট্রিবিউটসমূহ: domain , expires , fallbackDomain , httpOnly , max- age , path , secure , এবং sameSite । (নিচে ‘বিকল্পসমূহ ’ দেখুন।)
noEncode বুলিয়ান যদি true হয়, তাহলে কুকির মান এনকোড করা হবে না। এর ডিফল্ট মান false

বিকল্প

  • ডোমেইন: যে হোস্টে কুকিটি পাঠানো হবে। যদি বিশেষ মান 'auto'-তে সেট করা হয়, তাহলে নিম্নলিখিত কৌশল ব্যবহার করে হোস্টটি স্বয়ংক্রিয়ভাবে গণনা করা হবে:

    • Forwarded হেডারের eTLD+1, যদি থাকে।
    • X-Forwarded-Host হেডারের eTLD+1, যদি উপস্থিত থাকে।
    • Host হেডারের eTLD+1।
  • expires : কুকিটির সর্বোচ্চ মেয়াদ। এটি অবশ্যই একটি UTC-ফরম্যাটের তারিখ স্ট্রিং হতে হবে, যেমন "Sat, 26 Oct 1985 08:21:00 GMT"। যদি expires এবং max-age উভয়ই সেট করা থাকে, তবে max-age অগ্রাধিকার পাবে।

  • httpOnly : যদি true , তাহলে জাভাস্ক্রিপ্ট কুকি অ্যাক্সেস করতে পারবে না।

  • max-age : কুকিটির মেয়াদ শেষ হওয়ার আগে সেকেন্ডের সংখ্যা। শূন্য বা ঋণাত্মক সংখ্যা দিলে কুকিটির মেয়াদ সঙ্গে সঙ্গে শেষ হয়ে যাবে। যদি expires এবং max-age উভয়ই সেট করা থাকে, তবে max-age অগ্রাধিকার থাকবে।

  • পাথ : এমন একটি পাথ যা অনুরোধ করা URL-এ অবশ্যই থাকতে হবে, অন্যথায় ব্রাউজার কুকি হেডার পাঠাবে না।

  • secure : যদি এটি true সেট করা হয়, তাহলে কুকিটি শুধুমাত্র তখনই সার্ভারে পাঠানো হয় যখন কোনো https: এন্ডপয়েন্ট থেকে অনুরোধ করা হয়।

  • sameSite : নিশ্চিত করে যে ক্রস-অরিজিন অনুরোধের সাথে কোনো কুকি পাঠানো যাবে না। এটি অবশ্যই 'strict' , 'lax' বা 'none' হতে হবে।

সংশ্লিষ্ট অনুমতি

set_cookie


setPixelResponse

রেসপন্স বডিকে একটি 1x1 GIF-এ সেট করে, Content-Type হেডারকে 'image/gif'-এ সেট করে, ক্যাশিং হেডার এমনভাবে সেট করে যাতে ইউজার এজেন্টরা রেসপন্সটি ক্যাশ না করে, এবং রেসপন্স স্ট্যাটাসকে 200-এ সেট করে।

মনে রাখবেন, ক্লায়েন্টের কাছে প্রতিক্রিয়া ফেরত পাঠানোর জন্য returnResponse অবশ্যই কল করতে হবে।

সিনট্যাক্স

setPixelResponse();

সংশ্লিষ্ট অনুমতি

access_response পারমিশন প্রয়োজন। পারমিশনটি অবশ্যই এমনভাবে কনফিগার করা থাকতে হবে যাতে অন্তত নিম্নলিখিতগুলিতে অ্যাক্সেস দেওয়া যায়:

  • headers - নিম্নলিখিত কীগুলি অবশ্যই অনুমোদিত হতে হবে
    • content-type
    • cache-control
    • expires
    • pragma
  • body
  • status

setResponseBody

রেসপন্স বডিকে আর্গুমেন্ট অনুযায়ী সেট করে।

মনে রাখবেন, ক্লায়েন্টের কাছে প্রতিক্রিয়া ফেরত পাঠানোর জন্য returnResponse অবশ্যই কল করতে হবে।

সিনট্যাক্স

setResponseBody(body[, encoding]);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
body স্ট্রিং প্রতিক্রিয়া বডি হিসাবে যে মানটি সেট করতে হবে।
encoding স্ট্রিং রেসপন্স বডির ক্যারেক্টার এনকোডিং (ডিফল্ট 'utf8' )। সমর্থিত মানগুলোর মধ্যে রয়েছে 'ascii' , 'utf8' , 'utf16le' , 'ucs2' , 'base64' , 'latin1' , 'binary' এবং 'hex'

সংশ্লিষ্ট অনুমতি

access_response পারমিশন প্রয়োজন। পারমিশনটি অবশ্যই এমনভাবে কনফিগার করা থাকতে হবে যাতে অন্তত নিম্নলিখিতগুলিতে অ্যাক্সেস দেওয়া যায়:

  • body

setResponseHeader

ফেরত দেওয়া হবে এমন রেসপন্সে একটি হেডার সেট করে। যদি এই API দ্বারা পূর্বে এই নামের (কেস-ইনসেনসিটিভ) কোনো হেডার সেট করা হয়ে থাকে, তাহলে পরবর্তী কলটি পূর্ববর্তী কলার দ্বারা সেট করা মানটিকে ওভাররাইট বা মুছে ফেলবে।

মনে রাখবেন, ক্লায়েন্টের কাছে প্রতিক্রিয়া ফেরত পাঠানোর জন্য returnResponse অবশ্যই কল করতে হবে।

সিনট্যাক্স

setResponseHeader(name, value);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
name স্ট্রিং হেডারের নাম। HTTP হেডারের নাম কেস-ইনসেনসিটিভ, তাই হেডারের নামটি ছোট হাতের অক্ষরে লেখা হবে।
value স্ট্রিং অনির্ধারিত হেডারের মান। যদি এটি null বা undefined হয়, তবে ফেরত আসা রেসপন্স থেকে নির্দিষ্ট হেডারটি মুছে যাবে।

সংশ্লিষ্ট অনুমতি

access_response পারমিশন প্রয়োজন। পারমিশনটি অবশ্যই এমনভাবে কনফিগার করা থাকতে হবে যাতে অন্তত নিম্নলিখিতগুলিতে অ্যাক্সেস দেওয়া যায়:

  • headers

setResponseStatus

ফেরত আসা প্রতিক্রিয়ার HTTP স্ট্যাটাস কোড নির্ধারণ করে।

মনে রাখবেন, ক্লায়েন্টের কাছে প্রতিক্রিয়া ফেরত পাঠানোর জন্য returnResponse অবশ্যই কল করতে হবে।

সিনট্যাক্স

setResponseStatus(statusCode);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
statusCode সংখ্যা যে HTTP স্ট্যাটাস কোডটি ফেরত দেওয়া হবে।

সংশ্লিষ্ট অনুমতি

access_response পারমিশন প্রয়োজন। পারমিশনটি অবশ্যই এমনভাবে কনফিগার করা থাকতে হবে যাতে অন্তত নিম্নলিখিতগুলিতে অ্যাক্সেস দেওয়া যায়:

  • status

sha256

ইনপুটের 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 ফাংশন যদি না 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

টেমপ্লেট ডেটা স্টোরেজ অ্যাক্সেস করার মেথডসহ একটি অবজেক্ট রিটার্ন করে। টেমপ্লেট ডেটা স্টোরেজ একটিমাত্র টেমপ্লেটের বিভিন্ন এক্সিকিউশনের মধ্যে ডেটা শেয়ার করার সুযোগ দেয়। টেমপ্লেট ডেটা স্টোরেজে সংরক্ষিত ডেটা কন্টেইনার চালনাকারী সার্ভারে স্থায়ী থাকে। বেশিরভাগ ক্ষেত্রে কন্টেইনারটি একাধিক সার্ভারে চলে, তাই টেমপ্লেট ডেটা স্টোরেজে ডেটা সংরক্ষণ করলেই যে পরবর্তী প্রতিটি রিকোয়েস্ট সেই ডেটা অ্যাক্সেস করতে পারবে, তার কোনো নিশ্চয়তা নেই।

"templateDataStorage" নামের "data" অংশটি এই বিষয়টি নির্দেশ করে যে, এই API ব্যবহার করে শুধুমাত্র সাধারণ, নন-ফাংশন ডেটা টাইপই সংরক্ষণ করা যাবে। API-তে পাঠানো যেকোনো ফাংশন বা ফাংশনের রেফারেন্স এর পরিবর্তে null হিসেবে সংরক্ষিত হবে।

সিনট্যাক্স

const templateDataStorage = require('templateDataStorage');

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

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

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

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

উদাহরণ

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

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

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

সংশ্লিষ্ট অনুমতি

access_template_storage


testRegex

createRegex এপিআই ব্যবহার করে তৈরি করা একটি রেজেক্সের সাথে কোনো স্ট্রিংকে মিলিয়ে দেখে। রেজেক্সটি মিলে গেলে true রিটার্ন করে। অন্যথায় false রিটার্ন করে।

গ্লোবাল ফ্ল্যাগ দিয়ে তৈরি করা রেজেক্স স্টেটফুল হয়। বিস্তারিত জানতে রেজেক্স ডকুমেন্টেশন দেখুন।

উদাহরণ

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 ফরম্যাট ব্যবহার করে এনকোড করা হবে। ১.০.০

উদাহরণ

const toBase64 = require('toBase64');

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

সংশ্লিষ্ট অনুমতি

কিছুই না।


BigQuery

এমন একটি অবজেক্ট ফেরত দেয় যা BigQuery ফাংশনগুলো প্রদান করে।

BigQuery.insert ফাংশনটি BigQuery টেবিলে ডেটা লেখার সুযোগ দেয়। এটি একটি প্রমিজ রিটার্ন করে, যা সফলভাবে ডেটা প্রবেশ করালে রিজলভ হয় অথবা কোনো ত্রুটি ঘটলে রিজেক্ট হয়।

সন্নিবেশ সফল হলে, প্রমিসটি কোনো আর্গুমেন্ট ছাড়াই রিজলভ হয়।

যখন ইনসারশন ব্যর্থ হয়, তখন প্রমিসটি রিজেক্ট হয় এবং এরর-এর কারণ সম্বলিত অবজেক্টের একটি তালিকা দেয়, এবং কোনো এরর ঘটলে সম্ভবত একটি রো অবজেক্টও দেয়। এমনটা হতে পারে যে রিকোয়েস্টের একটি অংশ সফলভাবে সম্পন্ন হলো, কিন্তু অন্য অংশগুলো হলো না। এই ক্ষেত্রে, প্রমিসটি রিজেক্ট হয় এবং প্রতিটি রো-এর জন্য এররের একটি তালিকা দেয়, সাথে একটি রো অবজেক্টও থাকে যা কোন রো-গুলো ইনসার্ট করা হয়েছে তা আলাদা করতে সাহায্য করে (নিচে এরর এক্সাম্পলস দেখুন)। আরও তথ্যের জন্য এরর মেসেজ সম্পর্কে BigQuery-এর ডকুমেন্টেশন দেখুন।

সিনট্যাক্স

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

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
connectionInfo বস্তু BigQuery টেবিলের সাথে সংযোগ করার জন্য প্রয়োজনীয় তথ্য নির্ধারণ করে। এখানে একটি ঐচ্ছিক প্যারামিটার এবং দুটি আবশ্যক প্যারামিটার রয়েছে:
  • projectId - ঐচ্ছিক গুগল ক্লাউড প্ল্যাটফর্ম প্রজেক্ট আইডি। যদি এটি বাদ দেওয়া হয়, তাহলে projectId GOOGLE_CLOUD_PROJECT এনভায়রনমেন্ট ভেরিয়েবল থেকে নেওয়া হয়, যদি প্রজেক্ট আইডির জন্য access_bigquery পারমিশন সেটিংটি * বা GOOGLE_CLOUD_PROJECT এ সেট করা থাকে। যদি সার্ভার কন্টেইনারটি গুগল ক্লাউডে চলে, তাহলে GOOGLE_CLOUD_PROJECT আগে থেকেই গুগল ক্লাউড প্রজেক্টের আইডি সেট করা থাকবে।
  • datasetId - BigQuery ডেটাসেট আইডি।
  • tableId - BigQuery টেবিল আইডি।
rows অ্যারে টেবিলে যোগ করার জন্য সারিগুলো।
options বস্তু ঐচ্ছিক অনুরোধ বিকল্পসমূহ। সমর্থিত বিকল্পগুলো হলো: ignoreUnknownValues ​​এবং skipInvalidRows । অজানা অপশন কী উপেক্ষা করা হয়। (নিচে ‘বিকল্পসমূহ’ দেখুন।)

বিকল্প

প্যারামিটার প্রকার বর্ণনা
ignoreUnknownValues বুলিয়ান যদি ' true সেট করা হয়, তাহলে স্কিমার সাথে মেলে না এমন মান থাকা সারিগুলি গ্রহণ করা হবে। অজানা মানগুলি উপেক্ষা করা হবে। ডিফল্ট মান ' false
skipInvalidRows বুলিয়ান যদি ' true সেট করা হয়, তাহলে একটি অনুরোধের সমস্ত বৈধ সারি সন্নিবেশ করা হবে, এমনকি যদি অবৈধ সারি থাকে। এর ডিফল্ট মান false

ত্রুটির উদাহরণ

'মডিউল খুঁজে পাওয়া যায়নি' ত্রুটির অর্থ হলো, আপনার সার্ভার কন্টেইনারটি সম্ভবত আমাদের ইমেজের একটি পুরোনো সংস্করণ চালাচ্ছে, যেটিতে এখনও BigQuery মডিউলটি অন্তর্ভুক্ত করা হয়নি। অনুগ্রহ করে আমাদের ডেপ্লয়মেন্ট স্ক্রিপ্ট ব্যবহার করে একই সেটিংস সহ আপনার সার্ভার কন্টেইনারটি পুনরায় ডেপ্লয় করুন। অপারেশনটি শেষ হলেই মডিউলটি স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত হয়ে যাবে।

একটি নন-ইনসারশন এররের ক্ষেত্রে সাধারণত একটি এরর অবজেক্ট থাকে, যার মধ্যে একটি রিজন কী reason key) থাকে:

[{reason: 'invalid'}]

একটি ইনসারশন এররে একটি errors অ্যারে এবং একটি row অবজেক্ট সহ একাধিক error অবজেক্ট থাকতে পারে। নিচে দুটি সারি ইনসার্ট করার ফলে সৃষ্ট একটি এরর রেসপন্সের উদাহরণ দেওয়া হলো, যেখানে শুধুমাত্র একটি সারিতে এরর রয়েছে:

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

উদাহরণ

const BigQuery = require('BigQuery');

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

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

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

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

সংশ্লিষ্ট অনুমতি

access_bigquery


Firestore

এমন একটি অবজেক্ট ফেরত দেয় যা ফায়ারস্টোর ফাংশনগুলো সরবরাহ করে।

এই এপিআইটি শুধুমাত্র নেটিভ মোডে ফায়ারস্টোর সমর্থন করে, ডেটাস্টোর মোডে ফায়ারস্টোর নয়। এছাড়াও, এপিআইটি শুধুমাত্র ডিফল্ট ডেটাবেস ব্যবহার সমর্থন করে।

Firestore.read

Firestore.read ফাংশনটি একটি Firestore ডকুমেন্ট থেকে ডেটা পড়ে এবং একটি প্রমিজ রিটার্ন করে, যা id এবং data নামক দুটি কী-সহ একটি অবজেক্টে রিজলভ হয়। যদি ডকুমেন্টটি বিদ্যমান না থাকে, তবে প্রমিজটি not_found নামক একটি reason কী-সহ একটি অবজেক্ট দিয়ে রিজেক্ট হয়।

সিনট্যাক্স

Firestore.read(path[, options]);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
path স্ট্রিং ডকুমেন্ট বা সংগ্রহের পাথ। এটি অবশ্যই '/' দিয়ে শুরু বা শেষ হবে না।
options বস্তু ঐচ্ছিক অনুরোধ বিকল্পসমূহ। সমর্থিত বিকল্পগুলো হলো: projectId , disableCache , এবং transaction । অজানা বিকল্প কী উপেক্ষা করা হয়। (নিচে ‘বিকল্পসমূহ ’ দেখুন।)

বিকল্প

প্যারামিটার প্রকার বর্ণনা
projectId স্ট্রিং ঐচ্ছিক । গুগল ক্লাউড প্ল্যাটফর্ম প্রজেক্ট আইডি। যদি এটি বাদ দেওয়া হয়, তাহলে projectId GOOGLE_CLOUD_PROJECT এনভায়রনমেন্ট ভেরিয়েবল থেকে নেওয়া হয়, যদি প্রজেক্ট আইডির জন্য access_firestore পারমিশন সেটিংটি * বা GOOGLE_CLOUD_PROJECT এ সেট করা থাকে। যদি সার্ভার কন্টেইনারটি গুগল ক্লাউডে চলে, তাহলে GOOGLE_CLOUD_PROJECT ইতোমধ্যেই গুগল ক্লাউড প্রজেক্টের আইডিতে সেট করা থাকবে।
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 একটি প্রমিজ রিটার্ন করে যা যোগ করা বা পরিবর্তন করা ডকুমেন্টের আইডিতে রিজলভ হয়। যদি ট্রানজ্যাকশন অপশনটি ব্যবহার করা হয়, তাহলেও API একটি প্রমিজ রিটার্ন করে, কিন্তু তাতে আইডি থাকবে না, কারণ রাইটগুলো ব্যাচ আকারে করা হয়।

সিনট্যাক্স

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

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
path স্ট্রিং ডকুমেন্ট বা সংগ্রহের পাথ। এটি অবশ্যই '/' দিয়ে শুরু বা শেষ হবে না।
input বস্তু ডকুমেন্টে লেখার জন্য মান। যদি মার্জ অপশনটি সেট করা থাকে, তাহলে এপিআই ইনপুট থেকে কী-গুলো ডকুমেন্টে মার্জ করে দেবে।
options বস্তু ঐচ্ছিক অনুরোধ বিকল্পসমূহ। সমর্থিত বিকল্পগুলো হলো: projectId , merge , এবং transaction । অজানা বিকল্প কী উপেক্ষা করা হয়। (নিচে ‘বিকল্পসমূহ ’ দেখুন।)

বিকল্প

প্যারামিটার প্রকার বর্ণনা
projectId স্ট্রিং ঐচ্ছিক । গুগল ক্লাউড প্ল্যাটফর্ম প্রজেক্ট আইডি। যদি এটি বাদ দেওয়া হয়, তাহলে projectId GOOGLE_CLOUD_PROJECT এনভায়রনমেন্ট ভেরিয়েবল থেকে নেওয়া হয়, যদি প্রজেক্ট আইডির জন্য access_firestore পারমিশন সেটিংটি * বা GOOGLE_CLOUD_PROJECT এ সেট করা থাকে। যদি সার্ভার কন্টেইনারটি গুগল ক্লাউডে চলে, তাহলে GOOGLE_CLOUD_PROJECT ইতোমধ্যেই গুগল ক্লাউড প্রজেক্টের আইডিতে সেট করা থাকবে।
merge বুলিয়ান ঐচ্ছিক । যদি ' true সেট করা হয়, তাহলে ইনপুট থেকে কী-গুলো ডকুমেন্টে মার্জ করা হবে, অন্যথায় মেথডটি পুরো ডকুমেন্টটিকে ওভাররাইড করবে। ডিফল্ট মান ' false
transaction স্ট্রিং ঐচ্ছিক । Firestore.runTransaction() থেকে প্রাপ্ত মান। অপারেশনটিকে একটি ট্রানজ্যাকশনের মধ্যে ব্যবহার করার জন্য চিহ্নিত করে।

উদাহরণ

const Firestore = require('Firestore');

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

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

Firestore.query

Firestore.query ফাংশনটি প্রদত্ত কালেকশনে কোয়েরি করে এবং একটি প্রমিজ রিটার্ন করে, যা কোয়েরির শর্তের সাথে মেলে এমন Firestore ডকুমেন্টগুলোর একটি অ্যারেতে রিজলভ হয়। Firestore ডকুমেন্ট অবজেক্টটি উপরে Firestore.read এ তালিকাভুক্ত অবজেক্টের মতোই। যদি কোয়েরির শর্তের সাথে মেলে এমন কোনো ডকুমেন্ট না থাকে, তাহলে রিটার্ন করা প্রমিজটি একটি খালি অ্যারেতে রিজলভ হবে।

সিনট্যাক্স

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

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
collection স্ট্রিং সংগ্রহটির পথ। এটি অবশ্যই '/' দিয়ে শুরু বা শেষ হবে না।
queryConditions অ্যারে কোয়েরি শর্তাবলীর একটি অ্যারে। প্রতিটি কোয়েরি একটি অ্যারে আকারে আসে, যেখানে তিনটি ভ্যালু থাকে: key , operator , এবং expectedValue । যেমন: [['id', '<', '5'], ['state', '==', 'CA']]।

কোয়েরির ফলাফল তৈরি করার জন্য শর্তগুলোকে AND ফাংশনের মাধ্যমে যুক্ত করা হয়। সামঞ্জস্যপূর্ণ কোয়েরি অপারেটরগুলোর তালিকার জন্য অনুগ্রহ করে ফায়ারস্টোরের কোয়েরি অপারেটরসমূহ দেখুন।
options বস্তু ঐচ্ছিক অনুরোধ বিকল্পসমূহ। সমর্থিত বিকল্পগুলো হলো: projectId , disableCache , limit , এবং transaction । অজানা বিকল্প কী উপেক্ষা করা হয়। (নিচে ‘বিকল্পসমূহ ’ দেখুন।)

বিকল্প

প্যারামিটার প্রকার বর্ণনা
projectId স্ট্রিং ঐচ্ছিক । গুগল ক্লাউড প্ল্যাটফর্ম প্রজেক্ট আইডি। যদি এটি বাদ দেওয়া হয়, তাহলে projectId GOOGLE_CLOUD_PROJECT এনভায়রনমেন্ট ভেরিয়েবল থেকে নেওয়া হয়, যদি প্রজেক্ট আইডির জন্য access_firestore পারমিশন সেটিংটি * বা GOOGLE_CLOUD_PROJECT এ সেট করা থাকে। যদি সার্ভার কন্টেইনারটি গুগল ক্লাউডে চলে, তাহলে GOOGLE_CLOUD_PROJECT ইতোমধ্যেই গুগল ক্লাউড প্রজেক্টের আইডিতে সেট করা থাকবে।
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.runTransaction(callback[, options]);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
callback ফাংশন একটি কলব্যাক যা একটি স্ট্রিং ট্রানজ্যাকশন আইডি দিয়ে চালু করা হয়। এই ট্রানজ্যাকশন আইডিটি রিড/রাইট/কোয়েরি এপিআই কলে পাস করা যেতে পারে। এই কলব্যাক ফাংশনটিকে অবশ্যই একটি প্রমিজ রিটার্ন করতে হবে। ব্যর্থ হওয়ার আগে কলব্যাকটি সর্বোচ্চ তিনবার চলতে পারে।
options বস্তু ঐচ্ছিক অনুরোধ বিকল্পসমূহ। একমাত্র সমর্থিত বিকল্পটি হলো projectId । অজানা বিকল্প কী উপেক্ষা করা হয়। (নিচে ‘বিকল্পসমূহ’ দেখুন।)

বিকল্প

প্যারামিটার প্রকার বর্ণনা
projectId স্ট্রিং ঐচ্ছিক । গুগল ক্লাউড প্ল্যাটফর্ম প্রজেক্ট আইডি। যদি এটি বাদ দেওয়া হয়, তাহলে projectId GOOGLE_CLOUD_PROJECT এনভায়রনমেন্ট ভেরিয়েবল থেকে নেওয়া হয়, যদি প্রজেক্ট আইডির জন্য access_firestore পারমিশন সেটিংটি * বা GOOGLE_CLOUD_PROJECT এ সেট করা থাকে। যদি সার্ভার কন্টেইনারটি গুগল ক্লাউডে চলে, তাহলে GOOGLE_CLOUD_PROJECT ইতোমধ্যেই গুগল ক্লাউড প্রজেক্টের আইডিতে সেট করা থাকবে।

উদাহরণ

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

ত্রুটির উদাহরণ

প্রতিটি ফায়ারস্টোর ফাংশনে থাকা ত্রুটিগুলো একটি কারণ-কী reason key) সম্বলিত অবজেক্টের মাধ্যমে প্রত্যাখ্যান করা হবে:

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

ত্রুটির কারণগুলোর মধ্যে ফায়ারস্টোর REST API ত্রুটি কোডগুলো অন্তর্ভুক্ত থাকতে পারে, তবে তা শুধু এগুলোর মধ্যেই সীমাবদ্ধ নয়।

সংশ্লিষ্ট অনুমতি

access_firestore


JSON

এমন একটি অবজেক্ট ফেরত দেয় যা JSON ফাংশনগুলো প্রদান করে।

` parse() ফাংশনটি একটি JSON স্ট্রিং পার্স করে সেই স্ট্রিং দ্বারা বর্ণিত ভ্যালু বা অবজেক্টটি তৈরি করে। যদি ভ্যালুটি পার্স করা না যায় (যেমন ত্রুটিপূর্ণ JSON), তাহলে ফাংশনটি undefined রিটার্ন করবে। যদি ইনপুট ভ্যালুটি স্ট্রিং না হয়, তবে ইনপুটটিকে একটি স্ট্রিং-এ রূপান্তরিত করা হবে।

` stringify() ` ফাংশনটি ইনপুটকে একটি JSON স্ট্রিং-এ রূপান্তর করে। যদি মানটি পার্স করা না যায় (যেমন অবজেক্টটিতে চক্রাকারে কিছু থাকে), তাহলে মেথডটি undefined রিটার্ন করবে।

উদাহরণ

const JSON = require('JSON');

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

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

সিনট্যাক্স

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

সংশ্লিষ্ট অনুমতি

কিছুই না।


Math

একটি অবজেক্ট যা Math ফাংশন প্রদান করে।

সিনট্যাক্স

const Math = require('Math');

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

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

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

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

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

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

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

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

প্যারামিটার

গাণিতিক ফাংশনের প্যারামিটারগুলোকে সংখ্যায় রূপান্তর করা হয়।

সংশ্লিষ্ট অনুমতি

কিছুই না।


Messages

একটি কন্টেইনারের বিভিন্ন অংশের মধ্যে বার্তা আদান-প্রদানের জন্য নিম্নলিখিত API-গুলো একত্রে কাজ করে।


addMessageListener

একটি ফাংশন যোগ করে যা একটি নির্দিষ্ট ধরণের বার্তার জন্য অপেক্ষা করে। যখন sendMessage API ব্যবহার করে (সাধারণত একটি ট্যাগের মাধ্যমে) সেই ধরণের একটি বার্তা পাঠানো হয়, তখন কলব্যাকটি সিনক্রোনাসভাবে চালানো হবে। কলব্যাকটি দুটি প্যারামিটার সহ চালানো হয়:

  1. messageType:string
  2. message:Object

যদি কোনো ক্লায়েন্টে কলব্যাকটি যোগ করা হয়, তবে সেই ক্লায়েন্ট দ্বারা তৈরি সমস্ত ইভেন্ট থেকে কলব্যাকটি মেসেজ গ্রহণ করবে। যদি কলব্যাকটি শুধুমাত্র একটি নির্দিষ্ট ইভেন্ট থেকে মেসেজ গ্রহণ করতে চায়, তাহলে runContainer API-এর onStart ফাংশনে bindToEvent ব্যবহার করে এই API-টিকে সেই ইভেন্টের সাথে বাইন্ড করুন। উদাহরণটি দেখুন।

সিনট্যাক্স

const addMessageListener = require('addMessageListener');

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

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
messageType স্ট্রিং যে মেসেজ টাইপটি শোনা হবে। যদি ভ্যালুটি স্ট্রিং না হয়, তবে এটিকে স্ট্রিং-এ রূপান্তর করা হবে।
callback ফাংশন প্রযোজ্য মেসেজ টাইপের কোনো মেসেজ পাঠানো হলে যে কলব্যাকটি রান হবে। যদি কলব্যাকটি কোনো ফাংশন না হয়, তাহলে এপিআই কিছুই করবে না।

উদাহরণ

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

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

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

সংশ্লিষ্ট অনুমতি

use_message পারমিশন প্রয়োজন। পারমিশনটি অবশ্যই এমনভাবে কনফিগার করা থাকতে হবে যাতে অন্ততপক্ষে নিম্নলিখিত বিষয়গুলো অনুমোদিত হয়:

  • এমন একটি বার্তার ধরণ যার Usage listen বা listen_and_send রয়েছে।

hasMessageListener

প্রদত্ত মেসেজ টাইপের জন্য কোনো মেসেজ লিসেনার যোগ করা থাকলে 'true' রিটার্ন করে। অন্যথায় 'false' রিটার্ন করে।

সিনট্যাক্স

const hasMessageListener = require('hasMessageListener');

hasMessageListener('send_pixel');

সংশ্লিষ্ট অনুমতি

কিছুই না।


sendMessage

নিবন্ধিত লিসেনারের কাছে নির্দিষ্ট ধরনের একটি বার্তা পাঠায়। এটি ব্যবহার করে কোনো ট্যাগ থেকে কন্টেইনারটি চালানো ক্লায়েন্টের কাছে বার্তা ফেরত পাঠানো যায়।

সিনট্যাক্স

const sendMessage = require('sendMessage');

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

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
messageType স্ট্রিং প্রেরণ করার জন্য বার্তার ধরণ। যদি মানটি স্ট্রিং না হয়, তবে এটিকে স্ট্রিং-এ রূপান্তর করা হবে।
message বস্তু প্রেরণ করার জন্য বার্তা। বার্তাটি যদি কোনো অবজেক্ট না হয়, তাহলে এপিআই কিছুই করবে না।

সংশ্লিষ্ট অনুমতি

use_message পারমিশন প্রয়োজন। পারমিশনটি অবশ্যই এমনভাবে কনফিগার করা থাকতে হবে যাতে অন্ততপক্ষে নিম্নলিখিত বিষয়গুলো অনুমোদিত হয়:

  • listen_and_send বা send এর Usage সহ একটি বার্তার ধরণ।

Object

এমন একটি অবজেক্ট ফেরত দেয় যা Object মেথডসমূহ প্রদান করে।

` keys() ` মেথডটি স্ট্যান্ডার্ড লাইব্রেরির ` Object.keys()` মেথডের মতো আচরণ প্রদান করে। এটি একটি প্রদত্ত অবজেক্টের নিজস্ব এনুমারেবল প্রপার্টির নামগুলোর একটি অ্যারে রিটার্ন করে, ঠিক সেই ক্রমে যেভাবে একটি for...in... লুপ কাজ করে। যদি ইনপুট ভ্যালুটি অবজেক্ট না হয়, তবে এটিকে জোর করে একটি অবজেক্টে রূপান্তর করা হবে।

values() মেথডটি স্ট্যান্ডার্ড লাইব্রেরির Object.values() মেথডের মতো আচরণ প্রদান করে। এটি একটি প্রদত্ত অবজেক্টের নিজস্ব এনুমারেবল প্রপার্টির মানগুলোকে for...in... লুপের মতো একই ক্রমে একটি অ্যারেতে ফেরত দেয়। যদি ইনপুট মানটি একটি অবজেক্ট না হয়, তবে এটিকে জোর করে একটি অবজেক্টে রূপান্তর করা হবে।

entries() মেথডটি স্ট্যান্ডার্ড লাইব্রেরির Object.entries() মেথডের মতো আচরণ প্রদান করে। এটি একটি প্রদত্ত অবজেক্টের নিজস্ব এনুমারেবল প্রপার্টি [key, value] জোড়াগুলোকে for...in... লুপের মতো একই ক্রমে একটি অ্যারেতে ফেরত দেয়। যদি ইনপুট ভ্যালুটি কোনো অবজেক্ট না হয়, তবে এটিকে জোর করে একটি অবজেক্টে রূপান্তর করা হবে।

freeze() মেথডটি স্ট্যান্ডার্ড লাইব্রেরির Object.freeze() এর মতো আচরণ প্রদান করে। একটি ফ্রোজেন অবজেক্ট আর পরিবর্তন করা যায় না; একটি অবজেক্টকে ফ্রিজ করলে তাতে নতুন প্রোপার্টি যোগ করা, বিদ্যমান প্রোপার্টি মুছে ফেলা এবং সেগুলোর মান পরিবর্তন করা বন্ধ হয়ে যায়। freeze() মেথডটি পাস করা অবজেক্টটিই রিটার্ন করে। একটি প্রিমিটিভ বা null আর্গুমেন্টকে ফ্রোজেন অবজেক্ট হিসেবে গণ্য করা হবে এবং সেটিই রিটার্ন করা হবে।

` delete() ` মেথডটি স্ট্যান্ডার্ড লাইব্রেরির `delete` অপারেটরের মতো আচরণ করে। এটি অবজেক্ট থেকে প্রদত্ত কী-টি মুছে ফেলে, যদি না অবজেক্টটি ফ্রোজেন (frozen) করা থাকে। স্ট্যান্ডার্ড লাইব্রেরির `delete` অপারেটরের মতোই, যদি প্রথম ইনপুট ভ্যালুটি ( objectInput ) এমন একটি অবজেক্ট হয় যা ফ্রোজেন করা নেই, তাহলে এটি true রিটার্ন করে, এমনকি যদি দ্বিতীয় ইনপুট ভ্যালুটি ( keyToDelete ) এমন একটি কী নির্দিষ্ট করে যা বিদ্যমান নেই। অন্য সব ক্ষেত্রে এটি false রিটার্ন করে। তবে, এটি নিম্নলিখিত উপায়ে স্ট্যান্ডার্ড লাইব্রেরির `delete` অপারেটর থেকে ভিন্ন:

  • keyToDelete এমন কোনো ডট-ডিলিমিটেড স্ট্রিং হতে পারে না যা একটি নেস্টেড কী নির্দিষ্ট করে।
  • অ্যারে থেকে উপাদান মুছে ফেলার জন্য delete() ব্যবহার করা যায় না।
  • গ্লোবাল স্কোপ থেকে কোনো প্রোপার্টি মুছে ফেলার জন্য delete() ব্যবহার করা যায় না।

সিনট্যাক্স

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

প্যারামিটার

অবজেক্ট.কী

প্যারামিটার প্রকার বর্ণনা
অবজেক্ট ইনপুট যেকোনো যে অবজেক্টটির কী-গুলো গণনা করতে হবে। যদি ইনপুটটি একটি অবজেক্ট না হয়, তবে এটিকে একটি অবজেক্টে রূপান্তরিত করা হবে।

Object.values

প্যারামিটার প্রকার বর্ণনা
অবজেক্ট ইনপুট যেকোনো যে অবজেক্টটির মানগুলো গণনা করতে হবে। যদি ইনপুটটি কোনো অবজেক্ট না হয়, তবে এটিকে একটি অবজেক্টে রূপান্তরিত করা হবে।

অবজেক্ট.এন্ট্রি

প্যারামিটার প্রকার বর্ণনা
অবজেক্ট ইনপুট যেকোনো যে অবজেক্টটির কী/ভ্যালু পেয়ারগুলো গণনা করতে হবে। যদি ইনপুটটি অবজেক্ট না হয়, তবে এটিকে একটি অবজেক্টে রূপান্তরিত করা হবে।

অবজেক্ট.ফ্রিজ

প্যারামিটার প্রকার বর্ণনা
অবজেক্ট ইনপুট যেকোনো যে অবজেক্টটিকে ফ্রিজ করতে হবে। যদি ইনপুটটি কোনো অবজেক্ট না হয়, তবে এটিকে একটি ফ্রোজেন অবজেক্ট হিসেবে গণ্য করা হবে।

অবজেক্ট.ডিলিট

প্যারামিটার প্রকার বর্ণনা
অবজেক্ট ইনপুট যেকোনো যে অবজেক্টটির কী মুছে ফেলতে হবে।
keyToDelete স্ট্রিং মুছে ফেলার জন্য শীর্ষ-স্তরের কী।

উদাহরণ

const Object = require('Object');

// The keys of an object are enumerated in an array.
const keys = Object.keys({foo: 'bar'});

// The values of an object are enumerated in an array.
const values = Object.values({foo: 'bar'});

// The key/value pairs of an object are enumerated in an array.
const entries = Object.entries({foo: 'bar'});

// The input object is frozen.
const frozen = Object.freeze({foo: 'bar'});

// The key is removed from the input object.
const obj1 = {deleteme: 'value'};
Object.delete(obj1, 'deleteme');
// Only a top-level key can be specified as the key to delete.
const obj2 = {nested: {key: 'value'}};
Object.delete(obj2, 'nested.key'); // This has no effect.
Object.delete(obj2.nested, 'key'); // This deletes the nested key.

Promise

এমন একটি অবজেক্ট ফেরত দেয় যা প্রমিসের সাথে ইন্টারঅ্যাক্ট করার জন্য মেথড সরবরাহ করে।

প্রমিসগুলো কার্যগতভাবে জাভাস্ক্রিপ্ট প্রমিসের সমতুল্য। প্রতিটি ইনস্ট্যান্সে তিনটি মেথড থাকে যা একটি প্রমিস রিটার্ন করে, এবং প্রমিসটি সেটেল হলে পরবর্তী পদক্ষেপ নেওয়ার সুযোগ দেয়:

  • .then() - এটি সমাধানকৃত এবং প্রত্যাখ্যাত উভয় পরিস্থিতিই পরিচালনা করে। এটি প্যারামিটার হিসেবে দুটি কলব্যাক গ্রহণ করে: একটি সফলতার জন্য এবং অন্যটি ব্যর্থতার জন্য।
  • .catch() - শুধুমাত্র প্রত্যাখ্যাত ক্ষেত্রগুলো পরিচালনা করে। প্যারামিটার হিসেবে একটি কলব্যাক গ্রহণ করে।
  • .finally() - প্রমিসটি রিজলভ বা রিজেক্ট যাই হোক না কেন, কোড রান করার একটি উপায় প্রদান করে। এটি প্যারামিটার হিসেবে একটি কলব্যাক গ্রহণ করে, যা কোনো আর্গুমেন্ট ছাড়াই কল করা হয়।

যে ভেরিয়েবল একটি প্রমিজ রিটার্ন করে, তার মান প্রমিজটির রিজলভড ভ্যালুর সমান হয়, অথবা প্রমিজটি রিজেক্ট হলে তার মান ফলস false

উদাহরণ

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

Promise.all

প্রমিস ফেরত দেয় যা হয়:

  • যখন সমস্ত ইনপুট সমাধান হয়ে যায়, তখন সমাধান হয়, অথবা
  • যেকোনো একটি ইনপুট প্রত্যাখ্যাত হলে এটিও প্রত্যাখ্যাত হয়।

সিনট্যাক্স

Promise.all(inputs);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
inputs অ্যারে ভ্যালু বা প্রমিজের একটি অ্যারে। যদি কোনো ইনপুট প্রমিজ না হয়, তবে সেটিকে একটি প্রমিজের রিজলভড ভ্যালু হিসেবে পাস করা হয়। ইনপুটটি অ্যারে না হলে একটি এরর থ্রো করা হয়।

উদাহরণ

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

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

সংশ্লিষ্ট অনুমতি

কিছুই না।

Promise.create

এমন একটি প্রমিস তৈরি করে যা কার্যকারিতার দিক থেকে জাভাস্ক্রিপ্ট প্রমিসের সমতুল্য।

সিনট্যাক্স

Promise.create(resolver);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
resolver ফাংশন একটি ফাংশন যা `resolve` এবং `reject`—এই দুটি ফাংশনের মাধ্যমে কল করা হয়। সংশ্লিষ্ট প্যারামিটারটি কল করা হলে রিটার্ন করা প্রমিসটি `resolve` বা `reject` হবে। `resolver` ফাংশনটি না হলে একটি এরর থ্রো করে।

উদাহরণ

const Promise = require('Promise');

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

সংশ্লিষ্ট অনুমতি

কিছুই না।

টেস্ট এপিআই

এই এপিআইগুলো গুগল ট্যাগ ম্যানেজারের কাস্টম টেমপ্লেটের জন্য টেস্ট তৈরি করতে স্যান্ডবক্সড জাভাস্ক্রিপ্ট টেস্টের সাথে কাজ করে। এই টেস্ট এপিআইগুলোর জন্য কোনো require() স্টেটমেন্টের প্রয়োজন হয় না। [কাস্টম টেমপ্লেট টেস্ট সম্পর্কে আরও জানুন]।


assertApi

একটি ম্যাচিং অবজেক্ট রিটার্ন করে যা প্রদত্ত API সম্পর্কে সাবলীলভাবে অ্যাসারশন করার জন্য ব্যবহার করা যেতে পারে।

সিনট্যাক্স

assertApi(apiName)

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
apiName স্ট্রিং যে এপিআইটি যাচাই করতে হবে তার নাম; এটি 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] লাইব্রেরির আদলে তৈরি করা হয়েছে। এটি এমন একটি অবজেক্ট রিটার্ন করে যা ব্যবহার করে কোনো বিষয়ের মান সম্পর্কে সাবলীলভাবে অ্যাসারশন করা যায়। কোনো অ্যাসারশন ব্যর্থ হলে টেস্টটি সঙ্গে সঙ্গে বন্ধ হয়ে যাবে এবং ব্যর্থ হিসেবে চিহ্নিত হবে। তবে, একটি টেস্ট ব্যর্থ হলে তা অন্য টেস্ট কেসগুলোকে প্রভাবিত করবে না।

সিনট্যাক্স

assertThat(actual, opt_message)

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
actual যেকোনো ফ্লুয়েন্ট চেকগুলিতে ব্যবহার করার জন্য মান।
opt_message স্ট্রিং অ্যাসারশন ব্যর্থ হলে প্রিন্ট করার জন্য ঐচ্ছিক বার্তা।

ম্যাচার্স

ম্যাচিং বর্ণনা
isUndefined() দাবি করে যে বিষয়টি undefined
isDefined() দাবি করে যে বিষয়টি undefined নয়।
isNull() দাবি করে যে বিষয়টি null
isNotNull() দাবি করে যে বিষয়টি null নয়।
isFalse() বিষয়টি false বলে দাবি করে।
isTrue() বিষয়টি true বলে দাবি করে।
isFalsy() নিশ্চিত করে যে সাবজেক্টটি ফলসি। ফলসি ভ্যালুগুলো হলো undefined , null , false , NaN , 0, এবং '' (খালি স্ট্রিং)।
isTruthy() এটি নিশ্চিত করে যে আলোচ্য বিষয়টি সত্য। মিথ্যা মানগুলো হলো undefined , null , false , NaN , 0 এবং '' (খালি স্ট্রিং)।
isNaN() দাবি করা হচ্ছে যে আলোচ্য বিষয়টির মান হলো NaN।
isNotNaN() দাবি করে যে আলোচ্য বিষয়টি NaN ব্যতীত অন্য যেকোনো মান।
isInfinity() বিষয়টি ধনাত্মক বা ঋণাত্মক অসীম বলে দাবি করে।
isNotInfinity() দাবি করে যে আলোচ্য বিষয়টি ধনাত্মক বা ঋণাত্মক অসীম ব্যতীত অন্য যেকোনো মান।
isEqualTo(expected) এটি নিশ্চিত করে যে আলোচ্য বিষয়টি প্রদত্ত মানের সমান। এটি একটি মান তুলনা, কোনো রেফারেন্স তুলনা নয়। অবজেক্ট এবং অ্যারের বিষয়বস্তু পুনরাবৃত্তিমূলকভাবে তুলনা করা হয়।
isNotEqualTo(expected) এটি নিশ্চিত করে যে আলোচ্য বিষয়টি প্রদত্ত মানের সমান নয়। এটি একটি মান তুলনা, কোনো রেফারেন্স তুলনা নয়। অবজেক্ট এবং অ্যারের বিষয়বস্তু পুনরাবৃত্তিমূলকভাবে তুলনা করা হয়।
isAnyOf(...expected) এটি নিশ্চিত করে যে সাবজেক্টটি প্রদত্ত মানগুলোর মধ্যে একটির সমান। এটি একটি ভ্যালু কম্প্যারিসন, রেফারেন্স কম্প্যারিসন নয়। অবজেক্ট এবং অ্যারের বিষয়বস্তু রিকার্সিভলি তুলনা করা হয়।
isNoneOf(...expected) এটি নিশ্চিত করে যে আলোচ্য বিষয়টি প্রদত্ত কোনো মানের সমান নয়। এটি একটি মান তুলনা, কোনো রেফারেন্স তুলনা নয়। অবজেক্ট এবং অ্যারের বিষয়বস্তু পুনরাবৃত্তিমূলকভাবে তুলনা করা হয়।
isStrictlyEqualTo(expected) দাবি করে যে আলোচ্য বিষয়টি প্রদত্ত মানের হুবহু সমান ( === )।
isNotStrictlyEqualTo(expected) দাবি করে যে আলোচ্য বিষয়টি প্রদত্ত মানের হুবহু সমান নয় ( !== )।
isGreaterThan(expected) ক্রমিক তুলনার ক্ষেত্রে, আলোচ্য বিষয়টি প্রদত্ত মানের চেয়ে বৃহত্তর ( > ) তা দাবি করে।
isGreaterThanOrEqualTo(expected) ক্রমিক তুলনার ক্ষেত্রে, আলোচ্য বিষয়টি প্রদত্ত মানের চেয়ে বৃহত্তর বা সমান ( >= ) তা নিশ্চিত করে।
isLessThan(expected) ক্রমিক তুলনার ক্ষেত্রে, আলোচ্য বিষয়টি প্রদত্ত মানের চেয়ে ছোট ( < ) তা নিশ্চিত করে।
isLessThanOrEqualTo(expected) ক্রমিক তুলনার ক্ষেত্রে, আলোচ্য বিষয়টি প্রদত্ত মানের চেয়ে কম বা সমান ( <= ) তা নিশ্চিত করে।
contains(...expected) এটি নিশ্চিত করে যে আলোচ্য বিষয়টি একটি অ্যারে বা স্ট্রিং, যা প্রদত্ত সমস্ত মান যেকোনো ক্রমে ধারণ করে। এটি একটি মান তুলনা, কোনো রেফারেন্স তুলনা নয়। অবজেক্ট এবং অ্যারের বিষয়বস্তু রিকার্সিভভাবে তুলনা করা হয়।
doesNotContain(...expected) এটি নিশ্চিত করে যে আলোচ্য বিষয়টি একটি অ্যারে বা স্ট্রিং, যাতে প্রদত্ত মানগুলোর কোনোটিই নেই। এটি একটি মান তুলনা, রেফারেন্স তুলনা নয়। অবজেক্ট এবং অ্যারের বিষয়বস্তু রিকার্সিভভাবে তুলনা করা হয়।
containsExactly(...expected) এটি নিশ্চিত করে যে আলোচ্য বিষয়টি একটি অ্যারে, যাতে প্রদত্ত সমস্ত মান যেকোনো ক্রমে রয়েছে এবং অন্য কোনো মান নেই। এটি একটি মান তুলনা, কোনো রেফারেন্স তুলনা নয়। অবজেক্ট এবং অ্যারের বিষয়বস্তু পুনরাবৃত্তিমূলকভাবে তুলনা করা হয়।
doesNotContainExactly(...expected) এটি নিশ্চিত করে যে আলোচ্য বিষয়টি একটি অ্যারে, যাতে প্রদত্ত মানগুলো থেকে ভিন্ন কোনো মান যেকোনো ক্রমে থাকতে পারে। এটি একটি মান তুলনা, কোনো রেফারেন্স তুলনা নয়। অবজেক্ট এবং অ্যারের বিষয়বস্তু রিকার্সিভভাবে তুলনা করা হয়।
hasLength(expected) নিশ্চিত করে যে সাবজেক্টটি প্রদত্ত দৈর্ঘ্যের একটি অ্যারে বা স্ট্রিং। যদি মানটি অ্যারে বা স্ট্রিং না হয়, তবে অ্যাসারশনটি সর্বদা ব্যর্থ হয়।
isEmpty() নিশ্চিত করে যে সাবজেক্টটি একটি অ্যারে অথবা খালি (দৈর্ঘ্য = ০) স্ট্রিং। যদি ভ্যালুটি অ্যারে বা স্ট্রিং না হয়, তবে অ্যাসারশনটি সর্বদা ব্যর্থ হয়।
isNotEmpty() নিশ্চিত করে যে সাবজেক্টটি একটি অ্যারে বা স্ট্রিং যা খালি নয় (দৈর্ঘ্য > ০)। যদি মানটি অ্যারে বা স্ট্রিং না হয়, তাহলে অ্যাসারশনটি সর্বদা ব্যর্থ হয়।
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 এপিআই আপনাকে স্যান্ডবক্সড এপিআই-এর আচরণ ওভাররাইড করার সুযোগ দেয়। মক এপিআই টেমপ্লেট কোডে ব্যবহার করা নিরাপদ, কিন্তু এটি শুধুমাত্র টেস্ট মোডে কার্যকর থাকে। প্রতিটি টেস্ট চালানোর আগে মকগুলো রিসেট করা হয়।

সিনট্যাক্স

mock(apiName, returnValue);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
apiName স্ট্রিং যে এপিআই-কে মক করতে হবে তার নাম; require() এ পাঠানো স্ট্রিং-এর মতোই।
returnValue যেকোনো এপিআই-এর জন্য যে মানটি ফেরত দেওয়া হবে অথবা এপিআই-এর পরিবর্তে কল করা কোনো ফাংশন। যদি returnValue একটি ফাংশন হয়, তবে স্যান্ডবক্সড এপিআই-এর পরিবর্তে সেই ফাংশনটি কল করা হয়; আর যদি returnValue ফাংশন ছাড়া অন্য কিছু হয়, তবে স্যান্ডবক্সড এপিআই-এর পরিবর্তে সেই মানটি ফেরত দেওয়া হয়।

উদাহরণ

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

mockObject

mockObject API আপনাকে অবজেক্ট রিটার্নকারী স্যান্ডবক্সড API-গুলোর আচরণ ওভাররাইড করার সুযোগ দেয়। এই API টেমপ্লেট কোডে ব্যবহার করা নিরাপদ, কিন্তু এটি শুধুমাত্র টেস্ট মোডে কার্যকর থাকে। প্রতিটি টেস্ট চালানোর আগে মকগুলো রিসেট করা হয়।

সিনট্যাক্স

mockObject(apiName, objectMock);

প্যারামিটার

প্যারামিটার প্রকার বর্ণনা
apiName স্ট্রিং যে এপিআই-কে মক করতে হবে তার নাম; require() এ পাঠানো স্ট্রিং-এর মতোই।
objectMock বস্তু এপিআই-এর জন্য অথবা এপিআই-এর পরিবর্তে কল করা কোনো ফাংশনের জন্য যে মানটি ফেরত দেওয়া হবে। এটি অবশ্যই একটি অবজেক্ট হতে হবে।

উদাহরণ

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