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

এই ডকুমেন্টটি সার্ভার-সাইড ট্যাগিংয়ের জন্য 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 যদি কোনও ট্যাগ বা ভেরিয়েবলে ডাকা হয় তবে একটি ব্যতিক্রম প্রদান করে। ক্লায়েন্ট ফিরে আসার পরে ডাকা হলে (যেমন, যদি কোনও অ্যাসিঙ্ক কলব্যাকে ডাকা হয় যেমন callLater বা runContainer onComplete ফাংশনে) এই API একটি ব্যতিক্রম প্রদান করে।

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

উদাহরণ

const claimRequest = require('claimRequest');

claimRequest();

বাক্য গঠন

claimRequest();

সম্পর্কিত অনুমতিগুলি

কোনোটিই নয়।


computeEffectiveTldPlusOne

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

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

উদাহরণ

const computeEffectiveTldPlusOne = require('computeEffectiveTldPlusOne');

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

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

বাক্য গঠন

computeEffectiveTldPlusOne(domainOrUrl);

পরামিতি

প্যারামিটার আদর্শ বিবরণ
domainOrUrl স্ট্রিং একটি ডোমেন বা URL যার উপর eTLD+1 গণনা করা হবে।

সম্পর্কিত অনুমতিগুলি

কোনোটিই নয়।


createRegex

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

যদি regex অবৈধ হয় অথবা সার্ভারে Re2 অনুপলব্ধ থাকে, তাহলে null রিটার্ন করে।

এই API একটি Re2 বাস্তবায়ন ব্যবহার করে। সার্ভার ডকার চিত্রটি অবশ্যই 2.0.0 বা তার পরবর্তী সংস্করণে হতে হবে।

উদাহরণ

const createRegex = require('createRegex');

const domainRegex = createRegex('\\w+\\.com', 'i');

// Returns '/foobar'
'example.com/foobar'.replace(domainRegex, '');

বাক্য গঠন

createRegex(pattern, flags);

পরামিতি

প্যারামিটার আদর্শ বিবরণ
pattern স্ট্রিং রেগুলার এক্সপ্রেশনের টেক্সট।
flags স্ট্রিং তৈরি করা রেজেক্সের জন্য ফ্ল্যাগগুলি ধারণকারী একটি ঐচ্ছিক স্ট্রিং। `g` (গ্লোবাল) এবং `i` (কেস উপেক্ষা করুন) সমর্থিত। অন্যান্য সমস্ত অক্ষর নীরবে উপেক্ষা করা হয়।

সম্পর্কিত অনুমতিগুলি

কোনোটিই নয়।

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

২.০.০


decodeUri

প্রদত্ত URI-তে যেকোনো এনকোডেড অক্ষর ডিকোড করে। ডিকোড করা URI-কে প্রতিনিধিত্ব করে এমন একটি স্ট্রিং প্রদান করে। অবৈধ ইনপুট প্রদান করলে undefined প্রদান করে।

উদাহরণ

const decodeUri = require('decodeUri');

const decodedUrl = decodeUri(data.encodedUrl);
if (decodedUrl) {
  // ...
}

বাক্য গঠন

decodeUri(encoded_uri);

পরামিতি

প্যারামিটার আদর্শ বিবরণ
encoded_uri স্ট্রিং একটি 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

একটি base64-এনকোডেড স্ট্রিং ডিকোড করে। ইনপুটটি অবৈধ হলে undefined ফেরত পাঠায়।

বাক্য গঠন

fromBase64(base64EncodedString);

পরামিতি

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

উদাহরণ

const fromBase64 = require('fromBase64');

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

সম্পর্কিত অনুমতিগুলি

কোনোটিই নয়।


generateRandom

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

উদাহরণ

const generateRandom = require('generateRandom');

const randomValue = generateRandom(0, 10000000);

বাক্য গঠন

generateRandom(min, max);

পরামিতি

প্যারামিটার আদর্শ বিবরণ
min সংখ্যা প্রত্যাবর্তিত পূর্ণসংখ্যার (সমেত) সর্বনিম্ন সম্ভাব্য মান।
max সংখ্যা প্রত্যাবর্তিত পূর্ণসংখ্যার সর্বোচ্চ সম্ভাব্য মান (সমেত)।

সম্পর্কিত অনুমতিগুলি

কোনোটিই নয়।


getAllEventData

ইভেন্ট ডেটার একটি কপি ফেরত পাঠায়।

বাক্য গঠন

getAllEventData();

সম্পর্কিত অনুমতিগুলি

read_event_data


getClientName

বর্তমান ক্লায়েন্টের নাম ধারণকারী একটি স্ট্রিং প্রদান করে।

বাক্য গঠন

getClientName();

সম্পর্কিত অনুমতিগুলি

read_container_data


getContainerVersion

বর্তমান কন্টেইনার সম্পর্কে তথ্য সম্বলিত একটি অবজেক্ট রিটার্ন করে। রিটার্ন করা অবজেক্টে নিম্নলিখিত ক্ষেত্রগুলি থাকবে:

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

উদাহরণ

const getContainerVersion = require('getContainerVersion');

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

বাক্য গঠন

getContainerVersion();

সম্পর্কিত অনুমতিগুলি

read_container_data


getCookieValues

প্রদত্ত নামের সাথে সমস্ত কুকির মান ধারণকারী একটি অ্যারে প্রদান করে।

উদাহরণ

const getCookieValues = require('getCookieValues');

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

বাক্য গঠন

getCookieValues(name[, noDecode]);

পরামিতি

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

সম্পর্কিত অনুমতিগুলি

get_cookies


getEventData

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

উদাহরণ

const getEventData = require('getEventData');

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

পরামিতি

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

বাক্য গঠন

getEventData(keyPath);

সম্পর্কিত অনুমতিগুলি

read_event_data


getGoogleAuth

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

উদাহরণ

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

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

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

বাক্য গঠন

getGoogleAuth(scopes);

পরামিতি

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

সম্পর্কিত অনুমতিগুলি

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 থেকে Google Analytics স্ক্রিপ্টটি নিয়ে আসে।

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

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

বিকল্পগুলি

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

অচেনা বিকল্প কীগুলি উপেক্ষা করা হয়।

সম্পর্কিত অনুমতিগুলি

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

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

getRemoteAddress

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

বাক্য গঠন

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",
    ...
  }
}

মানগুলি হল base64-এনকোডেড 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 বস্তু ঐচ্ছিক API কনফিগারেশন। (নীচে বিকল্পগুলি দেখুন।)

বিকল্পগুলি

বিকল্প আদর্শ বিবরণ
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

কনসোলে তার আর্গুমেন্ট(গুলি) লগ করে।

এই লগগুলি Google Cloud Console-এর Logs Explorer-এর মধ্যে দৃশ্যমান। Logs Explorer থেকে logName =~ "stdout" কোয়েরিটি চালান যাতে এই API দ্বারা তৈরি লগ এন্ট্রিগুলি দেখা যায়।

উদাহরণ

const logToConsole = require('logToConsole');

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

বাক্য গঠন

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

পরামিতি

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

সম্পর্কিত অনুমতিগুলি

logging


makeInteger

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

বাক্য গঠন

makeInteger(value);

পরামিতি

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

সম্পর্কিত অনুমতিগুলি

কোনোটিই নয়।


makeNumber

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

বাক্য গঠন

makeNumber(value);

পরামিতি

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

সম্পর্কিত অনুমতিগুলি

কোনোটিই নয়।


makeString

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

বাক্য গঠন

makeString(value);

পরামিতি

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

সম্পর্কিত অনুমতিগুলি

কোনোটিই নয়।


makeTableMap

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

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

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

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

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

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

বাক্য গঠন

makeTableMap(tableObj, keyColumnName, valueColumnName);

পরামিতি

প্যারামিটার আদর্শ বিবরণ
tableObj তালিকা রূপান্তর করার জন্য টেবিল অবজেক্ট। এটি মানচিত্রের একটি তালিকা যেখানে প্রতিটি Map টেবিলের একটি সারি প্রতিনিধিত্ব করে। একটি সারি অবজেক্টের প্রতিটি সম্পত্তির নাম হল কলামের নাম, এবং সম্পত্তির মান হল সারির কলামের মান।
keyColumnName স্ট্রিং রূপান্তরিত Map যে কলামের মানগুলি কী হয়ে যাবে তার নাম।
valueColumnName স্ট্রিং রূপান্তরিত Map যে কলামের মানগুলি মান হয়ে যাবে তার নাম।

সম্পর্কিত অনুমতিগুলি

কোনোটিই নয়।


parseUrl

URL অবজেক্টের মতো, একটি প্রদত্ত URL এর সমস্ত উপাদান অংশ ধারণকারী একটি অবজেক্ট ফেরত পাঠায়।

এই API যেকোনো ত্রুটিপূর্ণ URL-এর জন্য undefined ফেরত দেবে। সঠিকভাবে ফর্ম্যাট করা URL-এর জন্য, URL স্ট্রিং-এ উপস্থিত না থাকা ক্ষেত্রগুলির মান একটি খালি স্ট্রিং হবে, অথবা searchParams এর ক্ষেত্রে, একটি খালি বস্তু থাকবে।

ফিরে আসা বস্তুর নিম্নলিখিত ক্ষেত্রগুলি থাকবে:

{
  href: string,
  origin: string,
  protocol: string,
  username: string,
  password: string,
  host: string,
  hostname: string,
  port: string,
  pathname: string,
  search: string,
  searchParams: Object<string, (string|Array)>,
  hash: string,
}

উদাহরণ

const parseUrl = require('parseUrl');

const urlObject = parseUrl('https://abc:xyz@example.com:8080/foo?param=val%2Cue#bar');

বাক্য গঠন

parseUrl(url);

পরামিতি

প্যারামিটার আদর্শ বিবরণ
url স্ট্রিং সম্পূর্ণ url যা পার্স করা হবে।

সম্পর্কিত অনুমতিগুলি

কোনোটিই নয়।


returnResponse

setCookie , setPixelResponse , setResponseBody , setResponseHeader এবং setResponseStatus সহ প্রতিক্রিয়া পরিবর্তনকারী API ব্যবহার করে অন্যান্য টেমপ্লেট দ্বারা পূর্বে সেট করা প্রতিক্রিয়াটিকে ফ্লাশ করে। একটি HTTP স্ট্যাটাস কোড 200, খালি বডি এবং কোনও হেডার ছাড়াই ডিফল্ট।

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

বাক্য গঠন

returnResponse();

উদাহরণ

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

সম্পর্কিত অনুমতিগুলি

return_response


runContainer

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

onComplete এবং onStart কলব্যাকগুলি bindToEvent নামে একটি ফাংশন পায়। ইভেন্টের প্রেক্ষাপটে একটি API চালানোর জন্য bindToEvent ব্যবহার করুন। আরও বিস্তারিত জানার জন্য addEventCallback উদাহরণটি দেখুন।

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

উদাহরণ

const returnResponse = require('returnResponse');
const runContainer = require('runContainer');

// Runs the container with a simple pageview event and then returns a response.
runContainer({'event_name': 'pageview'}, () => returnResponse());

বাক্য গঠন

runContainer(event, onComplete, onStart);

পরামিতি

প্যারামিটার আদর্শ বিবরণ
event বস্তু ইভেন্টের পরামিতি।
onComplete ফাংশন একটি কলব্যাক যা সমস্ত ট্যাগ ফায়ারিং শেষ হওয়ার পরে আহ্বান করা হয়।
onStart ফাংশন ট্যাগগুলি চালু হওয়ার আগেই, একটি কলব্যাক যা অবিলম্বে আহ্বান করা হয়।

সম্পর্কিত অনুমতিগুলি

run_container


sendEventToGoogleAnalytics

কমন ইভেন্ট ডেটা ব্যবহার করে একটি ইভেন্ট গুগল অ্যানালিটিক্সে পাঠায় এবং এমন একটি প্রতিশ্রুতি ফেরত দেয় যা location কী সহ কোনও বস্তুর সমাধান করে অথবা reason কী সহ কোনও বস্তুকে প্রত্যাখ্যান করে। গন্তব্য, গুগল অ্যানালিটিক্স 4, ইভেন্ট ডেটাতে পরিমাপ আইডির উপর ভিত্তি করে তৈরি।

যদি থাকে, তাহলে 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 স্ট্রিং অনুরোধ করা 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 স্ট্রিং অনুরোধ করা URL।
options বস্তু ঐচ্ছিক অনুরোধের বিকল্প। (নীচে বিকল্পগুলি দেখুন।)
body স্ট্রিং ঐচ্ছিক অনুরোধের মূল অংশ।

বিকল্পগুলি

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

সম্পর্কিত অনুমতিগুলি

send_http


sendPixelFromBrowser

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

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

উদাহরণ:

const sendPixelFromBrowser = require('sendPixelFromBrowser');

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

বাক্য গঠন

sendPixelFromBrowser(url)

পরামিতি

প্যারামিটার আদর্শ বিবরণ
url স্ট্রিং ব্রাউজারে পাঠানোর জন্য url।

সম্পর্কিত অনুমতিগুলি

send_pixel_from_browser


setCookie

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

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

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

উদাহরণ

const setCookie = require('setCookie');

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

বাক্য গঠন

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

পরামিতি

প্যারামিটার আদর্শ বিবরণ
name স্ট্রিং কুকির নাম। নামটি ছোট হাতের অক্ষরের ক্ষেত্রে সংবেদনশীল নয়।
value স্ট্রিং কুকির মান।
options বস্তু ঐচ্ছিক কুকি বৈশিষ্ট্য: ডোমেইন , মেয়াদোত্তীর্ণ , ফলব্যাকডোমেইন , httpOnly , সর্বোচ্চ , পথ , নিরাপদ এবং একই সাইট । (নীচে বিকল্পগুলি দেখুন।)
noEncode বুলিয়ান যদি সত্য হয়, তাহলে কুকির মান এনকোড করা হবে না। ডিফল্টভাবে false হবে।

বিকল্পগুলি

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

    • Forwarded হেডারের eTLD+1, যদি থাকে।
    • X-Forwarded-Host হেডারের eTLD+1, যদি থাকে।
    • Host হেডারের eTLD+1।
  • মেয়াদ শেষ হয় : কুকির সর্বোচ্চ জীবনকাল। এটিতে UTC-ফর্ম্যাট করা তারিখের স্ট্রিং থাকতে হবে, যেমন "শনি, ২৬ অক্টোবর ১৯৮৫ ০৮:২১:০০ GMT"। যদি উভয়ের expires এবং max-age সেট করা থাকে, তাহলে max-age অগ্রাধিকার পাবে।

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

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

  • path : এমন একটি পাথ যা অনুরোধ করা 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 বা অনির্ধারিত হয়, তাহলে এটি ফেরত পাঠানো প্রতিক্রিয়া থেকে নামযুক্ত হেডারটি সাফ করে দেবে।

সম্পর্কিত অনুমতিগুলি

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

  • headers

setResponseStatus

যে প্রতিক্রিয়াটি ফেরত পাঠানো হবে তার HTTP স্থিতি কোড সেট করে।

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

বাক্য গঠন

setResponseStatus(statusCode);

পরামিতি

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

সম্পর্কিত অনুমতিগুলি

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

  • status

sha256

ইনপুটের SHA-256 ডাইজেস্ট গণনা করে এবং base64 এ এনকোড করা ডাইজেস্ট সহ একটি কলব্যাক আহ্বান করে, যদি না options অবজেক্ট একটি ভিন্ন আউটপুট এনকোডিং নির্দিষ্ট করে।

এই API স্বাক্ষর এবং আচরণ ওয়েব কন্টেইনারের জন্য sha256 API এর সাথে মিলে যায়; তবে, সার্ভার কন্টেইনারে কাস্টম টেমপ্লেটগুলিকে সহজ কোডের জন্য sha256Sync API ব্যবহার করা উচিত।

উদাহরণ

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 বস্তু আউটপুট এনকোডিং নির্দিষ্ট করার জন্য ঐচ্ছিক বিকল্প অবজেক্ট। যদি নির্দিষ্ট করা থাকে, তাহলে অবজেক্টটিতে base64 বা hex এর একটি মান সহ outputEncoding কী থাকা উচিত।

সম্পর্কিত অনুমতিগুলি

কোনোটিই নয়।


sha256Sync

base64 এ এনকোড করা ইনপুটের SHA-256 ডাইজেস্ট গণনা করে এবং ফেরত দেয়, যদি না options অবজেক্ট একটি ভিন্ন আউটপুট এনকোডিং নির্দিষ্ট করে।

উদাহরণ

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

const digestBase64 = sha256Sync('inputString');
const digestHex = sha256Sync('inputString', {outputEncoding: 'hex'});
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digestBase64));
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digestHex));

বাক্য গঠন

sha256Sync(input, options = undefined);

পরামিতি

প্যারামিটার আদর্শ বিবরণ
input স্ট্রিং হ্যাশের স্ট্রিং।
options বস্তু আউটপুট এনকোডিং নির্দিষ্ট করার জন্য ঐচ্ছিক বিকল্প অবজেক্ট। যদি নির্দিষ্ট করা থাকে, তাহলে অবজেক্টটিতে base64 বা hex এর একটি মান সহ outputEncoding কী থাকা উচিত।

সম্পর্কিত অনুমতিগুলি

কোনোটিই নয়।


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 API এর মাধ্যমে তৈরি একটি regex এর বিরুদ্ধে একটি স্ট্রিং পরীক্ষা করে। regex মিললে true দেখায়। অন্যথায় false দেখায়।

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

উদাহরণ

const createRegex = require('createRegex');
const testRegex = require('testRegex');

const domainRegex = createRegex('\\w+\\.com', 'i');

// createRegex returns null if the regex is invalid or Re2 is not available.
if (domainRegex === null) return;

// Returns true
testRegex(domainRegex, 'example.com/foobar');

বাক্য গঠন

testRegex(regex, string);

পরামিতি

প্যারামিটার আদর্শ বিবরণ
regex বস্তু যে রেজেক্সের বিরুদ্ধে পরীক্ষা করা হবে, সেটি createRegex API থেকে ফিরে এসেছে।
string স্ট্রিং পরীক্ষা করার জন্য পরীক্ষা স্ট্রিং।

সম্পর্কিত অনুমতিগুলি

কোনোটিই নয়।


toBase64

একটি স্ট্রিংকে base64 বা base64url হিসেবে এনকোড করে। ডিফল্ট হিসেবে base64 এনকোডিং থাকে।

বাক্য গঠন

toBase64(input, options);

পরামিতি

প্যারামিটার আদর্শ বিবরণ
input স্ট্রিং এনকোড করার জন্য স্ট্রিং।
options বস্তু ঐচ্ছিক API কনফিগারেশন। (নীচে বিকল্পগুলি দেখুন।)

বিকল্পগুলি

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

বিকল্পগুলি

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

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

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

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

[{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

ফায়ারস্টোর ফাংশন প্রদান করে এমন একটি অবজেক্ট রিটার্ন করে।

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

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 বস্তু ডকুমেন্টে লেখার মান। যদি মার্জ অপশনটি সেট করা থাকে, তাহলে API ইনপুট থেকে কীগুলিকে ডকুমেন্টে মার্জ করবে।
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 করা হয়েছে। সামঞ্জস্যপূর্ণ ক্যোয়ারী অপারেটরগুলির তালিকার জন্য অনুগ্রহ করে Firestore এর ক্যোয়ারী অপারেটরগুলি দেখুন।
options বস্তু ঐচ্ছিক অনুরোধ বিকল্প। সমর্থিত বিকল্পগুলি হল: projectId , disableCache , limit , এবং transaction । অজানা বিকল্প কীগুলি উপেক্ষা করা হয়। (নীচে বিকল্পগুলি দেখুন।)

বিকল্পগুলি

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

উদাহরণ

const Firestore = require('Firestore');

const queries = const queries = [['id', '==', '5']];

return Firestore.query('collection', queries, {
  projectId: 'gcp-cloud-project-id',
  limit: 1,
}).then((documents) => documents[0].data.key, () => undefined);

Firestore.runTransaction

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

বাক্য গঠন

Firestore.runTransaction(callback[, options]);

পরামিতি

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

বিকল্পগুলি

প্যারামিটার আদর্শ বিবরণ
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);

পরামিতি

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

পরামিতি

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

উদাহরণ

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

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

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

Associated permissions

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

  • A message type with Usage of listen or listen_and_send .

hasMessageListener

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

বাক্য গঠন

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

পরামিতি

প্যারামিটার আদর্শ বিবরণ
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)

পরামিতি

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

পরামিতি

প্যারামিটার আদর্শ বিবরণ
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);

পরামিতি

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

উদাহরণ

const Promise = require('Promise');

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

Associated permissions

কোনোটিই নয়।

পরীক্ষা API গুলি

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


assertApi

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

বাক্য গঠন

assertApi(apiName)

পরামিতি

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

Matchers

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

উদাহরণ

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

assertThat

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

বাক্য গঠন

assertThat(actual, opt_message)

পরামিতি

প্যারামিটার আদর্শ বিবরণ
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);

পরামিতি

প্যারামিটার আদর্শ বিবরণ
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);

পরামিতি

প্যারামিটার আদর্শ বিবরণ
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);

পরামিতি

প্যারামিটার আদর্শ বিবরণ
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)

পরামিতি

প্যারামিটার আদর্শ বিবরণ
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'});