Google বিজ্ঞাপন স্ক্রিপ্টগুলিকে প্রায়ই তারিখ এবং সময়ের সাথে কাজ করতে হয়। সাধারণ ব্যবহারের ক্ষেত্রে একটি নির্দিষ্ট তারিখের সীমার জন্য রিপোর্ট পুনরুদ্ধার করা, নির্দিষ্ট সময়ে চালানোর জন্য প্রচারাভিযান বা বিজ্ঞাপন গোষ্ঠী নির্ধারণ করা এবং স্ক্রিপ্টটি শেষবার চালানোর সময় স্প্রেডশীটে আউটপুট করা অন্তর্ভুক্ত। Google বিজ্ঞাপন স্ক্রিপ্টে তারিখ এবং সময় নিয়ে কাজ করার সময় এই গাইডটি গুরুত্বপূর্ণ ধারণা, সাধারণ সমস্যা এবং প্রস্তাবিত পদ্ধতির বর্ণনা করে।
মৌলিক ধারণা
Google বিজ্ঞাপন স্ক্রিপ্টে তারিখ ও সময় নিয়ে কাজ করতে, JavaScript-এর বিল্ট-ইন ডেট অবজেক্ট ব্যবহার করুন। একটি জাভাস্ক্রিপ্ট তারিখ বস্তু সময়ের একটি নির্দিষ্ট মুহূর্ত প্রতিনিধিত্ব করে। একটি নতুন তারিখ বস্তু তৈরি করার বিভিন্ন উপায় আছে:
// Create a date object for the current date and time.
const now = new Date();
// Create a date object for a past date and time using a formatted string.
const date = new Date('February 17, 2025 13:00:00 -0500');
// Create a copy of an existing date object.
let copy = new Date(date);
নতুন স্ক্রিপ্ট ব্যবহারকারীরা প্রায়ই তারিখ অবজেক্ট কিভাবে সময় অঞ্চল পরিচালনা করে বিভ্রান্ত হয়। একটি প্রাকৃতিক কিন্তু ভুল উপায় একটি তারিখ বস্তুর একটি একক সময় অঞ্চলে একটি ঘড়ির সময় হিসাবে চিন্তা করা হয়. উদাহরণ স্বরূপ, আগে স্নিপেটে, কিছু ব্যবহারকারী ভুল করে ধরে নেন যে date
শুধুমাত্র একটি টাইম জোনে বৈধ, যেমন একটি -5 ঘন্টা অফসেট সহ টাইম জোন যা এটি তৈরি করতে ব্যবহৃত হয়েছিল৷ সেই ভুল দৃষ্টিভঙ্গিতে, date
অন্য সময় অঞ্চলে ব্যবহার করার জন্য "রূপান্তরিত" করতে হবে।
পরিবর্তে, একটি তারিখ বস্তু সম্পর্কে চিন্তা করার সঠিক উপায় হল যে কোনো সময় অঞ্চল থেকে স্বাধীন সময়ের একটি নির্দিষ্ট মুহূর্ত। যদিও একটি নির্দিষ্ট মুহূর্ত বিভিন্ন সময় অঞ্চলে ঘড়িতে ভিন্নভাবে দেখানো হয়, তবে এটি একই মুহূর্ত। উদাহরণস্বরূপ, এই স্নিপেট বিবেচনা করুন:
// Create two date objects with different times and time zone offsets.
const date1 = new Date('February 17, 2025 13:00:00 -0500');
const date2 = new Date('February 17, 2025 10:00:00 -0800');
// getTime() returns the number of milliseconds since the beginning of
// January 1, 1970 UTC.
// True, as the dates represent the same moment in time.
console.log(date1.getTime() == date2.getTime());
// False, as the dates are separate objects, though they happen to
// represent the same moment in time.
console.log(date1 == date2);
যেহেতু একটি তারিখ বস্তু সময়ের একটি নির্দিষ্ট মুহূর্তকে উপস্থাপন করে, তাই এটিকে সময় অঞ্চল জুড়ে "রূপান্তরিত" করার প্রয়োজন নেই৷ পরিবর্তে, এটি একটি স্ট্রিং হিসাবে রেন্ডার করা যেতে পারে যা একটি নির্দিষ্ট সময় অঞ্চলের জন্য ফর্ম্যাট করা হয়।
একটি নির্দিষ্ট বিন্যাস এবং সময় অঞ্চলের সাথে একটি তারিখকে একটি স্ট্রিং হিসাবে রেন্ডার করতে, Utilities.formatDate(date, timeZone, format)
ব্যবহার করুন। যেমন:
const date = new Date('February 17, 2025 13:00:00 -0500');
// February 17, 2025 13:00:00 -0500
console.log(Utilities.formatDate(date, 'America/New_York', 'MMMM dd, yyyy HH:mm:ss Z'));
// February 17, 2025 10:00:00 -0800
console.log(Utilities.formatDate(date, 'America/Los_Angeles', 'MMMM dd, yyyy HH:mm:ss Z'));
// 2025-02-17T18:00:00.000Z
console.log(Utilities.formatDate(date, 'Etc/GMT', 'yyyy-MM-dd\'T\'HH:mm:ss.SSS\'Z\''));
এই উদাহরণগুলি একটি টাইমজোন আইডি ব্যবহার করে সরাসরি সময় অঞ্চল নির্দিষ্ট করে। আপনার স্ক্রিপ্ট চালানো Google বিজ্ঞাপন অ্যাকাউন্টের সাথে যুক্ত সময় অঞ্চল পুনরুদ্ধার করতে, AdsApp.currentAccount().getTimeZone()
ব্যবহার করুন।
সাধারণ ক্ষতি
এখানে খেজুরের সাথে ঘটে এমন কিছু সাধারণ সমস্যা রয়েছে।
একটি তারিখ বস্তু লগ করার সময় ডিফল্ট সময় অঞ্চল
Logger.log()
ব্যবহার করে সরাসরি একটি তারিখ বস্তু লগিং করার সময়, এটি একটি ডিফল্ট বিন্যাস এবং সময় অঞ্চল ব্যবহার করে রেন্ডার করা হয়। যেমন:
const date = new Date('February 17, 2025 13:00:00 -0500');
// Mon Feb 17 10:00:00 GMT-08:00 2025
console.log(date);
ডিফল্ট টাইম জোন হল America/Los_Angeles (প্রশান্ত মহাসাগরীয় সময়), Google Ads অ্যাকাউন্টের সাথে সংশ্লিষ্ট সময় অঞ্চল নির্বিশেষে । আপনি যদি লগিং বা অন্যান্য উদ্দেশ্যে একটি কাস্টম বিন্যাস এবং সময় অঞ্চল ব্যবহার করে তারিখ অবজেক্টটিকে একটি স্ট্রিং হিসাবে রেন্ডার করতে চান তবে সর্বদা Utilities.formatDate(date, timeZone, format)
ব্যবহার করুন।
একটি তারিখ অবজেক্ট তৈরি করার সময় ডিফল্ট সময় অঞ্চল
টাইম জোন অফসেট প্রদান করে না এমন একটি স্ট্রিং ব্যবহার করে ডেট অবজেক্ট তৈরি করার সময়, Google Ads অ্যাকাউন্টের সাথে যুক্ত সময় অঞ্চল নির্বিশেষে টাইম জোনটিকে আমেরিকা/লস_এঞ্জেলেস (প্যাসিফিক টাইম) বলে ধরে নেওয়া হয়। যেমন:
// Create a date without specifying the time zone offset.
const date = new Date('February 17, 2025 13:00:00');
// Mon Feb 17 13:00:00 GMT-08:00 2025
console.log(date);
একটি স্ট্রিং ব্যবহার করে একটি তারিখ অবজেক্ট তৈরি করার সময়, সর্বদা একটি টাইম জোন অফসেট অন্তর্ভুক্ত করুন যাতে নিশ্চিত করা যায় যে তারিখ অবজেক্টটি আপনি যে সময়ে চান সেই মুহূর্তটি উপস্থাপন করে।
তারিখ অবজেক্ট পদ্ধতিতে ডিফল্ট সময় অঞ্চল
জাভাস্ক্রিপ্ট তারিখ অবজেক্টের বিভিন্ন পদ্ধতি রয়েছে যা একটি ডিফল্ট সময় অঞ্চল ধরে নেয়, যেমন:
-
getFullYear()
-
getMonth()
-
getDate()
-
getDay()
-
getHours()
-
getMinutes()
এর মধ্যে এই পদ্ধতিগুলির set___()
সমতুল্য (উদাহরণস্বরূপ, setMonth()
), এবং getTimezoneOffset()
অন্তর্ভুক্ত রয়েছে।
Google Ads স্ক্রিপ্টে, ডিফল্ট টাইম জোন হল America/Los_Angeles (প্রশান্ত মহাসাগরীয় সময়), Google Ads অ্যাকাউন্টের সাথে সংশ্লিষ্ট সময় অঞ্চল নির্বিশেষে । তাই, আপনার Google Ads অ্যাকাউন্ট এই টাইম জোনে না থাকলে, আপনার সাধারণত এই পদ্ধতিগুলি ব্যবহার করা এড়ানো উচিত।
আপনার অ্যাকাউন্টের টাইম জোনে তারিখের অবজেক্টের জন্য বছর, মাস, তারিখ, দিন, ঘন্টা বা মিনিট পেতে, আপনি যে তারিখ বা সময় চান তার অংশ নির্দিষ্ট করে একটি ফর্ম্যাট সহ Utilities.formatDate(date, timeZone, format)
ব্যবহার করুন এবং আপনার অ্যাকাউন্টের সময় অঞ্চল পেতে AdsApp.currentAccount().getTimeZone()
ব্যবহার করুন।
একটি বিন্যাসিত তারিখ স্ট্রিং থেকে একটি তারিখ বস্তু তৈরি করা
আপনি তারিখ কনস্ট্রাক্টরের কাছে ফর্ম্যাট করা তারিখ স্ট্রিং পাস করে একটি তারিখ অবজেক্ট তৈরি করতে পারেন। যেমন:
const date = new Date('February 17, 2025 13:00:00 -0500');
কনস্ট্রাক্টর শুধুমাত্র নির্দিষ্ট তারিখ স্ট্রিং ফর্ম্যাট পার্স করতে পারে। আপনার তারিখ স্ট্রিং সঠিকভাবে পার্স করা হয়েছে তা নিশ্চিত করতে, সর্বদা এটি MMMM dd, yyyy HH:mm:ss Z
ফর্ম্যাটে প্রদান করুন।
উদাহরণস্বরূপ, বর্তমান অ্যাকাউন্টের সময় অঞ্চলে আজ দুপুরের জন্য একটি তারিখ বস্তু তৈরি করতে:
const now = new Date();
const timeZone = AdsApp.currentAccount().getTimeZone();
const noonString = Utilities.formatDate(now, timeZone, 'MMMM dd, yyyy 12:00:00 Z');
const noon = new Date(noonString);
তারিখের স্ট্রিং তৈরি করতে 'z' প্যাটার্ন ব্যবহার করবেন না যা একটি তারিখ কনস্ট্রাক্টরকে পাস করা হবে, কারণ কনস্ট্রাক্টর সর্বদা এটি পার্স করতে সক্ষম হবে না। শুধুমাত্র 'Z' প্যাটার্ন ব্যবহার করুন।
তারিখ গণিত
কিছু স্ক্রিপ্টের তারিখগুলির সাথে সাধারণ গণিত সম্পাদন করতে হবে, যেমন একটি নির্দিষ্ট তারিখের আগে বা পরে একটি তারিখ X দিন খুঁজে বের করা। তারিখ গণিত সম্পাদন করার সময়, getTime()
ব্যবহার করুন। একটি তারিখ অবজেক্টে getTime()
কল করা 1 জানুয়ারী, 1970 UTC এর শুরু থেকে মিলিসেকেন্ডের সংখ্যা প্রদান করে। আপনি এই মানটির উপর গণিত করতে পারেন, তারপর setTime()
ব্যবহার করে একটি তারিখ অবজেক্টে নতুন মান প্রয়োগ করুন বা একটি নতুন তারিখ অবজেক্ট তৈরি করার সময় এটিকে একটি প্যারামিটার হিসাবে প্রদান করুন।
যেমন:
const MILLIS_PER_DAY = 1000 * 60 * 60 * 24;
const now = new Date();
const yesterday = new Date(now.getTime() - MILLIS_PER_DAY);
এই উদাহরণে, yesterday
ঠিক 24 ঘন্টা আগে।
রিপোর্টিং
AdsApp.search()
ব্যবহার করে একটি প্রতিবেদন পুনরুদ্ধার করার সময়, GAQL ক্যোয়ারীতে তারিখগুলি yyyy-MM-dd
ফর্ম্যাটে উল্লেখ করতে হবে (উদাহরণস্বরূপ, 2025-06-30
হবে 30 জুন, 2025)।
একইভাবে, অনেক Google বিজ্ঞাপন স্ক্রিপ্ট অবজেক্টে উপলব্ধ getStatsFor()
পদ্ধতির জন্য একই ফর্ম্যাটে তারিখ উল্লেখ করতে হবে। এই বিন্যাসে তারিখ অবজেক্ট ফরম্যাট করতে Utilities.formatDate(date, timeZone, format)
ব্যবহার করুন।
উদাহরণস্বরূপ, এক থেকে তিন দিন আগে একটি প্রতিবেদন পুনরুদ্ধার করতে:
const MILLIS_PER_DAY = 1000 * 60 * 60 * 24;
const now = new Date();
const from = new Date(now.getTime() - 3 * MILLIS_PER_DAY);
const to = new Date(now.getTime() - 1 * MILLIS_PER_DAY);
const timeZone = AdsApp.currentAccount().getTimeZone();
const results = AdsApp.search(
'SELECT campaign.name, metrics.clicks' +
'FROM campaign ' +
'WHERE segments.date BETWEEN ' +
Utilities.formatDate(from, timeZone, 'yyyy-MM-dd') + ' AND ' +
Utilities.formatDate(to, timeZone, 'yyyy-MM-dd'));
স্প্রেডশীট
Google বিজ্ঞাপন স্ক্রিপ্ট প্রায়ই তারিখ বস্তু সহ একটি স্প্রেডশীটে আউটপুট লেখে। একটি তারিখ অবজেক্ট পাস করে স্প্রেডশীটে একটি সেল সেট করার সময়, স্প্রেডশীটের সময় অঞ্চলটি সেই তারিখটি ব্যাখ্যা করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, ধরুন আমাদের একটি স্প্রেডশীট আছে যার টাইম জোন প্যাসিফিক টাইমে সেট করা আছে:
// Suppose today is February 17, 2025 13:00:00 -0500 (Eastern Time)
const now = new Date();
spreadsheet.getRange('A1').setValue(now);
A1-এর মান হবে 17-ফেব্রুয়ারি-25 10:00:00।
স্প্রেডশীটে তারিখের বস্তুগুলি আপনার প্রত্যাশা অনুযায়ী লেখা হয়েছে তা নিশ্চিত করতে, স্প্রেডশীটের সময় অঞ্চলটি আপনার Google বিজ্ঞাপন অ্যাকাউন্টের সময় অঞ্চলের সাথে মেলে:
spreadsheet.setSpreadsheetTimeZone(AdsApp.currentAccount().getTimeZone());
এছাড়াও আপনি একটি স্প্রেডশীটের সময় ম্যানুয়ালি সেট করতে পারেন।