সার্ভার-সাইড ট্যাগিং 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 ফাংশন A callback that's invoked with a string transaction ID. The transaction ID can be passed into read/write/query API calls. This callback function must return a promise. The callback may run up to three times before failing.
options বস্তু Optional request options. The supported only supported option is projectId . Unknown option keys are ignored. (See Options , below.)

বিকল্প

প্যারামিটার প্রকার বর্ণনা
projectId স্ট্রিং Optional . Google Cloud Platform project ID. If omitted, the projectId is retrieved from the environment variable GOOGLE_CLOUD_PROJECT as long as the access_firestore permission setting for the project ID is set to * or GOOGLE_CLOUD_PROJECT . If the server container is running on Google Cloud, GOOGLE_CLOUD_PROJECT will already be set to the Google Cloud project's ID.

উদাহরণ

const Firestore = require('Firestore');

const path = 'collection/document';
const projectId = 'gcp-cloud-project-id';

Firestore.runTransaction((transaction) => {
  const transactionOptions = {
    projectId: projectId,
    transaction: transaction,
  };
  // Must return a promise.
  return Firestore.read(path, transactionOptions).then((result) => {
    const newInputCount = result.data.inputCount + 1;
    const input = {key1: 'value1', inputCount: newInputCount};
    return Firestore.write(path, input, transactionOptions);
  });
}, {
  projectId: projectId
}).then((ids) => {
  data.gtmOnSuccess();
}, data.gtmOnFailure);

Error Example

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

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

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

Associated permissions

access_firestore


JSON

Returns an object that provides JSON functions.

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

The stringify() function converts the input into a JSON string. If the value cannot be parsed (eg the object has a cycle), the method will return undefined .

উদাহরণ

const JSON = require('JSON');

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

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

সিনট্যাক্স

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

Associated permissions

কিছুই না।


Math

An object providing Math functions.

সিনট্যাক্স

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

Parameters

Math function parameters are converted to numbers.

Associated permissions

কিছুই না।


Messages

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


addMessageListener

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

  1. messageType:string
  2. message:Object

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

সিনট্যাক্স

const addMessageListener = require('addMessageListener');

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

Parameters

প্যারামিটার প্রকার বর্ণনা
messageType স্ট্রিং The message type to listen for. If the value is not a string, it will be coerced to a string.
callback function The callback to run when a message of the applicable message type is sent. If the callback is not a function, the API will do nothing.

উদাহরণ

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

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

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

Associated permissions

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

  • A message type with Usage of listen or listen_and_send .

hasMessageListener

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

সিনট্যাক্স

const hasMessageListener = require('hasMessageListener');

hasMessageListener('send_pixel');

Associated permissions

কিছুই না।


sendMessage

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

সিনট্যাক্স

const sendMessage = require('sendMessage');

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

Parameters

প্যারামিটার প্রকার বর্ণনা
messageType স্ট্রিং The message type to send. If the value is not a string, it will be coerced to a string.
message বস্তু The message to send. If the message is not an object, the API will do nothing.

Associated permissions

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

  • A message type with Usage of listen_and_send or send .

Object

Returns an object that provides Object methods.

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

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

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

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

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

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

সিনট্যাক্স

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

Parameters

Object.keys

প্যারামিটার প্রকার বর্ণনা
objectInput যেকোনো The object whose keys to enumerate. If the input is not an object, it will be coerced to an object.

Object.values

প্যারামিটার প্রকার বর্ণনা
objectInput যেকোনো The object whose values to enumerate. If the input is not an object, it will be coerced to an object.

Object.entries

প্যারামিটার প্রকার বর্ণনা
objectInput যেকোনো The object whose key/value pairs to enumerate. If the input is not an object, it will be coerced to an object.

Object.freeze

প্যারামিটার প্রকার বর্ণনা
objectInput যেকোনো The object to freeze. If the input is not an object, it will be treated as a frozen object.

Object.delete

প্যারামিটার প্রকার বর্ণনা
objectInput যেকোনো The object whose key to delete.
keyToDelete স্ট্রিং The top-level key to delete.

উদাহরণ

const Object = require('Object');

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

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

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

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

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

Promise

Returns an object that provides methods for interacting with promises.

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

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

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

উদাহরণ

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

Promise.all

Returns a promise that either:

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

সিনট্যাক্স

Promise.all(inputs);

Parameters

প্যারামিটার প্রকার বর্ণনা
inputs Array An array of values or promises. If an input is not a promise, the input is passed through as if it's the resolved value of a promise. Throws an error if the input is not an array.

উদাহরণ

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

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

Associated permissions

কিছুই না।

Promise.create

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

সিনট্যাক্স

Promise.create(resolver);

Parameters

প্যারামিটার প্রকার বর্ণনা
resolver function A function that is invoked with two functions -- resolve and reject. The returned promise will resolve or reject when the corresponding parameter is invoked. Throws an error if resolver is not a function.

উদাহরণ

const Promise = require('Promise');

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

Associated permissions

কিছুই না।

Test APIs

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


assertApi

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

সিনট্যাক্স

assertApi(apiName)

Parameters

প্যারামিটার প্রকার বর্ণনা
apiName স্ট্রিং The name of the api to check; same string as passed to require() .

Matchers

  • Subject.wasCalled()
  • Subject.wasNotCalled()
  • Subject.wasCalledWith(...expected)
  • Subject.wasNotCalledWith(...expected)

উদাহরণ

assertApi('sendPixel').wasCalled();
assertApi('getUrl').wasNotCalled();
assertApi('makeNumber').wasCalledWith('8');
assertApi('setInWindow').wasNotCalledWith('myVar', 'theWrongValue');

assertThat

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

সিনট্যাক্স

assertThat(actual, opt_message)

Parameters

প্যারামিটার প্রকার বর্ণনা
actual যেকোনো The value to use in the fluent checks.
opt_message স্ট্রিং Optional message to print if the assertion fails.

Matchers

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

উদাহরণ

assertThat(undefined).isUndefined();
assertThat(id, 'ID must be defined').isDefined();
assertThat(null).isNull();
assertThat(undefined).isNotNull();
assertThat(true).isTrue();
assertThat(false).isFalse();
assertThat(1).isTruthy();
assertThat('').isFalsy();
assertThat(1/0).isInfinity();
assertThat(0).isNotInfinity();
assertThat(-'foo').isNaN();
assertThat(100).isNotNaN();
assertThat(sentUrl).isEqualTo('https://endpoint.example.com/?account=12345');
assertThat(category).isNotEqualTo('premium');
assertThat(5).isAnyOf(1, 2, 3, 4, 5);
assertThat(42).isNoneOf('the question', undefined, 41.9);
assertThat('value').isStrictlyEqualTo('value');
assertThat('4').isNotStrictlyEqualTo(4);
assertThat(['a', 'b', 'c']).contains('a', 'c');
assertThat(['x', 'y', 'z']).doesNotContain('f');
assertThat(['1', '2', '3']).containsExactly('3', '2', '1');
assertThat(['4', '5']).doesNotContainExactly('4');
assertThat('a string').hasLength(8);
assertThat([]).isEmpty();
assertThat('another string').isNotEmpty();

fail

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

সিনট্যাক্স

fail(opt_message);

Parameters

প্যারামিটার প্রকার বর্ণনা
opt_message স্ট্রিং Optional error message text.

উদাহরণ

fail('This test has failed.');

mock

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

সিনট্যাক্স

mock(apiName, returnValue);

Parameters

প্যারামিটার প্রকার বর্ণনা
apiName স্ট্রিং The name of the API to mock; same string as passed to require()
returnValue যেকোনো The value to return for the API or a function called in place of the API. If returnValue is a function, that function is called in place of the Sandboxed API; if returnValue is anything other than a function, that value is returned in place of the Sandboxed API.

উদাহরণ

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

mockObject

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

সিনট্যাক্স

mockObject(apiName, objectMock);

Parameters

প্যারামিটার প্রকার বর্ণনা
apiName স্ট্রিং The name of the API to mock; same string as passed to require()
objectMock বস্তু The value to return for the API or a function called in place of the API. Must be an object.

উদাহরণ

const storage = {};
let firestoreId = 1;

function asTestPromise(result) {
  return {
    then: (callback) => callback(result)
  };
}

mockObject('Firestore', {
  write: (collection, input) => {
    storage[collection + '/' + (++firestoreId)] = input;
    return asTestPromise(firestoreId);
  },
  read: (document) => asTestPromise({data: storage[document]})
});

runCode

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

সিনট্যাক্স

runCode(data)

Parameters

প্যারামিটার প্রকার বর্ণনা
data বস্তু Data object to be used in the test.

ফেরত মান

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

উদাহরণ

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