এই পৃষ্ঠায় eventType প্রপার্টি এবং গুগল ক্যালেন্ডার এপিআই-তে উপলব্ধ ইভেন্ট টাইপগুলোর বিবরণ ব্যাখ্যা করা হয়েছে।
গুগল ক্যালেন্ডার ব্যবহারকারীদের সাধারণ ইভেন্টের পাশাপাশি নির্দিষ্ট ব্যবহারের জন্য এবং নিজস্ব বৈশিষ্ট্যসহ ইভেন্ট তৈরি করার সুযোগ দেয়।
এপিআই-এর নিম্নলিখিত স্থানগুলিতে ইভেন্টের ধরণটি খুঁজে পাওয়া যাবে:
- সমস্ত ইভেন্ট একটি
eventTypeসহ ফেরত দেওয়া হয়। - ইভেন্ট রিসোর্স তৈরি বা আপডেট করার সময়
eventTypeসেট করতে হবে। সেট করা না থাকলে,'default'টাইপ ব্যবহৃত হবে। - নির্দিষ্ট ধরনের ইভেন্টের তালিকা পেতে
Events:listকলেeventTypesউল্লেখ করা যেতে পারে। কোনো ধরন উল্লেখ না করা হলে, সব ধরনের ইভেন্টই ফেরত দেওয়া হবে। - নির্দিষ্ট ধরনের ইভেন্টের আপডেটে সাবস্ক্রাইব করার জন্য
Events:watchকলেeventTypesউল্লেখ করা যেতে পারে। যদি কোনো টাইপ উল্লেখ না করা হয়, তাহলে অনুরোধটি সব ধরনের ইভেন্টে সাবস্ক্রাইব করে ফেলবে।
ডিফল্ট ইভেন্ট
default ইভেন্ট টাইপের ইভেন্টগুলো গুগল ক্যালেন্ডার এপিআই-এর অন্যতম প্রধান রিসোর্স হিসেবে তৈরি ও ব্যবহৃত হয়। এগুলোতে বিভিন্ন ধরনের প্রপার্টি রয়েছে, যা ব্যবহার করে ইভেন্টটিকে আরও কাস্টমাইজ করা যায়।
গুগল ক্যালেন্ডার ইভেন্ট নিয়ে কাজ শুরু করতে 'ইভেন্ট তৈরি করুন' দেখুন।
জন্মদিন
জন্মদিন হলো দিনব্যাপী এক বিশেষ উৎসব, যা প্রতি বছর ফিরে আসে।
ব্যবহারকারীরা গুগল ক্যালেন্ডারে ম্যানুয়ালি জন্মদিনের ইভেন্ট তৈরি করতে পারেন। এছাড়াও, ব্যবহারকারীরা যখন গুগল কন্ট্যাক্টস- এ কোনো ব্যক্তিকে যুক্ত করেন এবং তার জন্মদিন ও অন্যান্য গুরুত্বপূর্ণ তারিখ অন্তর্ভুক্ত করেন, তখন জন্মদিনের তথ্য গুগল ক্যালেন্ডারের সাথে সিঙ্ক হয়ে যায়। ব্যবহারকারীদের নিজেদের জন্মদিনও তাদের গুগল অ্যাকাউন্ট প্রোফাইল থেকে গুগল ক্যালেন্ডারে সিঙ্ক হয়ে যায়।
জন্মদিনের ইভেন্টগুলো পড়ার জন্য গুগল ক্যালেন্ডার এপিআই-তে get , instances এবং list মেথড রয়েছে। শুধুমাত্র জন্মদিনের ইভেন্টগুলো তালিকাভুক্ত করার জন্য ` eventTypes 'birthday' হিসেবে সেট করা যেতে পারে। যদি কোনো টাইপ নির্দিষ্ট না করা হয়, তবে জন্মদিনগুলো অন্যান্য সব ধরনের ইভেন্টের পাশাপাশি তালিকাভুক্ত হবে।
ফেরত আসা Event অবজেক্টগুলোতে, এই বিশেষ ইভেন্টটি সম্পর্কে আরও বিস্তারিত জানতে birthdayProperties ফিল্ডটি পরীক্ষা করুন। birthdayProperties নিম্নলিখিত ফিল্ডগুলো রয়েছে:
-
type: এই বিশেষ অনুষ্ঠানের ধরণ, এটি জন্মদিন, বিবাহবার্ষিকী বা অন্য কোনো গুরুত্বপূর্ণ তারিখ কিনা। -
customTypeName: এই বিশেষ ইভেন্টের জন্য ব্যবহারকারী-নির্দিষ্ট লেবেল।type'custom'হিসেবে সেট করা হলে এটি স্বয়ংক্রিয়ভাবে পূরণ হয়ে যায়। -
contact: এই বিশেষ ইভেন্টটি যে কন্ট্যাক্টের সাথে সংযুক্ত, তার রিসোর্স নাম (যদি থাকে)। এর ফরম্যাট হলো'people/c12345'এবং এটি পিপল এপিআই (People API) থেকে কন্ট্যাক্টের বিবরণ সংগ্রহ করতে ব্যবহার করা যেতে পারে।
এপিআইটি নিম্নলিখিত স্পেসিফিকেশন সহ insert মেথড ব্যবহার করে জন্মদিনের ইভেন্ট তৈরি করার সুযোগ দেয়:
-
eventType'birthday'হিসেবে সেট করা হয়েছে। -
startএবংendফিল্ডগুলোতে এমন একটি দিনব্যাপী ইভেন্ট নির্ধারণ করতে হবে যা ঠিক একদিন ধরে চলবে। -
visibilityফিল্ডের মান অবশ্যই'private'হতে হবে। -
transparencyফিল্ডের মান অবশ্যই'transparent'হতে হবে। - বার্ষিক পুনরাবৃত্তি থাকা প্রয়োজন, যার অর্থ হলো
recurrenceফিল্ডটি অবশ্যই'RRULE:FREQ=YEARLY'হতে হবে। ২৯শে ফেব্রুয়ারি তারিখে হওয়া জন্মদিনের ইভেন্টগুলোর জন্য নিম্নলিখিত পুনরাবৃত্তির নিয়মটি থাকতে হবে:'RRULE:FREQ=YEARLY;BYMONTH=2;BYMONTHDAY=-1'। - এতে
colorId,summaryএবংremindersথাকতে পারে। -
birthdayPropertiesথাকতে পারে। যদি নির্দিষ্ট করা থাকে, তাহলেtypeঅবশ্যই'birthday'হতে হবে এবংcustomTypeNameওcontactউভয়ই খালি থাকতে হবে। - অন্য কোনো ইভেন্ট প্রপার্টি থাকতে পারবে না।
এপিআইটি update এবং patch মেথড ব্যবহার করে জন্মদিনের ইভেন্টের ` colorId , ` summary এবং reminders আপডেট করার সুযোগ দেয়। ইভেন্টের তারিখ পরিবর্তন করার জন্য start এবং end ফিল্ডও আপডেট করা যায়। এক্ষেত্রে, নতুন ভ্যালুগুলোকে এমন একটি দিনব্যাপী ইভেন্ট হিসেবে সংজ্ঞায়িত করতে হবে যা ঠিক একদিন ধরে চলে। যদি কোনো ইভেন্ট কোনো contact সাথে লিঙ্ক করা থাকে, অথবা এর type 'self' হয়, তাহলে জন্মদিনের ইভেন্টের টাইমিংয়ের বিবরণ আপডেট করা যায় না।
গুগল ক্যালেন্ডার এপিআই কাস্টম birthdayProperties সহ জন্মদিনের ইভেন্ট তৈরি করতে বা এই প্রপার্টিগুলো আপডেট করার অনুমতি দেয় না। পিপল এপিআই (People API) ব্যবহার করে গুরুত্বপূর্ণ তারিখগুলো সম্পাদনা করা যায় এবং এই পরিবর্তনগুলো গুগল ক্যালেন্ডারের সাথে সিঙ্ক হয়ে যায়। একইভাবে, ব্যবহারকারীরা তাদের গুগল অ্যাকাউন্ট প্রোফাইলে নিজেদের জন্মদিন সম্পাদনা করতে পারেন এবং সেটিও গুগল ক্যালেন্ডারের সাথে সিঙ্ক হয়ে যায়।
অসমর্থিত উপায়ে জন্মতারিখ তৈরি বা আপডেট করার অনুরোধ ব্যর্থ হবে। এক্ষেত্রে, সমস্যাটি শনাক্ত করতে ত্রুটির বার্তাটি খতিয়ে দেখুন।
এপিআইটি জন্মদিনের ইভেন্ট import সমর্থন করে; তবে, ইভেন্টটি একটি ডিফল্ট ইভেন্ট হিসেবে ইম্পোর্ট করা হবে। অন্য কথায়, এর eventType হবে 'default' ।
গুগল ক্যালেন্ডারে জন্মদিনের ইভেন্টের পরিবর্তনগুলিতে সাবস্ক্রাইব করার জন্য এপিআই-টি ' watch ' মেথড সমর্থন করে। জন্মদিনের ইভেন্টের আপডেটগুলিতে সাবস্ক্রাইব করার জন্য ' eventTypes 'birthday' হিসেবে সেট করা যেতে পারে। যদি কোনো টাইপ নির্দিষ্ট না করা হয়, তাহলে জন্মদিন সহ সব ধরনের ইভেন্টেই সাবস্ক্রাইব করা হবে।
গুগল ক্যালেন্ডার এপিআই-এর delete মেথড ব্যবহার করে জন্মদিনের ইভেন্টগুলো মুছে ফেলা যায়। গুগল ক্যালেন্ডার থেকে জন্মদিনের ইভেন্ট মুছে ফেললে গুগল কন্ট্যাক্টস বা গুগল অ্যাকাউন্ট প্রোফাইলের ডেটার উপর কোনো প্রভাব পড়ে না।
move বা update পদ্ধতি ব্যবহার করে জন্মদিনের ইভেন্টের আয়োজক পরিবর্তন করা সমর্থিত নয়।
জিমেইল থেকে ইভেন্ট
জিমেইল থেকে স্বয়ংক্রিয়ভাবে তৈরি হওয়া ইভেন্টগুলোর ইভেন্ট টাইপ হলো 'fromGmail' ।
গুগল ক্যালেন্ডার এপিআই-এর insert মেথড ব্যবহার করে এই ধরনের ইভেন্ট তৈরি করা যায় না।
এই এপিআই-এর মাধ্যমে update এবং patch মেথড ব্যবহার করে colorId , reminders , visibility , transparency , status , attendees , private এবং shared এক্সটেন্ডেড প্রপার্টিগুলো আপডেট করা যায়।
জিমেইল থেকে ইভেন্ট পড়ার জন্য এপিআই-টি get এবং list মেথড সমর্থন করে। শুধুমাত্র জিমেইল থেকে তৈরি হওয়া ইভেন্টগুলো তালিকাভুক্ত করার জন্য eventTypes 'fromGmail' হিসেবে সেট করা যেতে পারে। যদি কোনো টাইপ নির্দিষ্ট না করা হয়, তাহলে জিমেইল থেকে আসা ইভেন্টগুলো অন্য সব ধরনের ইভেন্টের পাশাপাশি তালিকাভুক্ত হবে।
এপিআইটি গুগল ক্যালেন্ডারে জিমেইল থেকে আসা ইভেন্টের পরিবর্তন সাবস্ক্রাইব করার জন্য ' watch ' মেথড সমর্থন করে। যদি কোনো টাইপ নির্দিষ্ট না করা হয়, তাহলে 'fromGmail' সহ সব ধরনের ইভেন্ট টাইপ সাবস্ক্রাইব করা হবে।
গুগল ক্যালেন্ডার এপিআই-এর delete মেথড ব্যবহার করে জিমেইল থেকে ইভেন্ট মুছে ফেলা যায়।
জিমেইল থেকে move বা update পদ্ধতি ব্যবহার করে কোনো ইভেন্টের আয়োজক পরিবর্তন করা সমর্থিত নয়।
মনোযোগের সময়, অফিসের বাইরে এবং কর্মস্থল
গুগল ক্যালেন্ডার এপিআই ব্যবহার করে এমন ইভেন্ট তৈরি ও পরিচালনা করা যায়, যা গুগল ক্যালেন্ডার ব্যবহারকারীদের অবস্থা প্রদর্শন করে।
এই বৈশিষ্ট্যগুলি শুধুমাত্র প্রাথমিক ক্যালেন্ডারে এবং কিছু গুগল ক্যালেন্ডার ব্যবহারকারীদের জন্য উপলব্ধ। আরও জানতে ‘ফোকাস টাইম’, ‘আউট অফ অফিস’ এবং ‘ওয়ার্কিং লোকেশন’ ইভেন্টগুলি পরিচালনা দেখুন।
গুগল অ্যাপস স্ক্রিপ্টে ইভেন্টের প্রকারভেদগুলো অন্বেষণ করুন
গুগল অ্যাপস স্ক্রিপ্ট হলো একটি জাভাস্ক্রিপ্ট-ভিত্তিক ক্লাউড স্ক্রিপ্টিং ভাষা, যা আপনাকে গুগল ওয়ার্কস্পেসের সাথে সমন্বিত ব্যবসায়িক অ্যাপ্লিকেশন তৈরি করতে দেয়। স্ক্রিপ্টগুলো একটি ব্রাউজার-ভিত্তিক কোড এডিটরে তৈরি করা হয় এবং সেগুলো গুগলের সার্ভারে সংরক্ষিত ও চালিত হয়। গুগল ক্যালেন্ডার এপিআই-তে অনুরোধ পাঠাতে অ্যাপস স্ক্রিপ্ট ব্যবহার শুরু করার জন্য গুগল অ্যাপস স্ক্রিপ্ট কুইকস্টার্ট- ও দেখুন।
নিম্নলিখিত নির্দেশাবলীতে গুগল অ্যাপস স্ক্রিপ্টে একটি অ্যাডভান্সড সার্ভিস হিসেবে গুগল ক্যালেন্ডার এপিআই ব্যবহার করে ইভেন্টগুলি কীভাবে পড়া এবং পরিচালনা করা যায় তা বর্ণনা করা হয়েছে। গুগল ক্যালেন্ডার এপিআই-এর রিসোর্স এবং মেথডগুলির সম্পূর্ণ তালিকার জন্য, রেফারেন্স ডকুমেন্টেশন দেখুন।
স্ক্রিপ্ট তৈরি এবং সেট আপ করুন
- script.google.com/create -এ গিয়ে একটি স্ক্রিপ্ট তৈরি করুন।
- বাম দিকের প্যানেলে Services-এর পাশে থাকা Add a service- ক্লিক করুন।
- Google Calendar API নির্বাচন করুন এবং Add-এ ক্লিক করুন।
- সক্রিয় করার পর, এপিআইটি বাম প্যানে প্রদর্শিত হয়। এডিটরে ক্যালেন্ডার কীওয়ার্ডটি ব্যবহার করে এপিআই-এর উপলব্ধ মেথড ও ক্লাসগুলোর তালিকা দেখা যায়।
(ঐচ্ছিক) গুগল ক্লাউড প্রজেক্ট আপডেট করুন
প্রতিটি গুগল অ্যাপস স্ক্রিপ্ট প্রজেক্টের সাথে একটি গুগল ক্লাউড প্রজেক্ট যুক্ত থাকে। আপনার স্ক্রিপ্টটি গুগল অ্যাপস স্ক্রিপ্ট দ্বারা স্বয়ংক্রিয়ভাবে তৈরি ডিফল্ট প্রজেক্টটি ব্যবহার করতে পারে। আপনি যদি একটি কাস্টম গুগল ক্লাউড প্রজেক্ট ব্যবহার করতে চান, তবে ‘অন্য একটি স্ট্যান্ডার্ড ক্লাউড প্রজেক্টে স্যুইচ করুন ’ দেখুন। গুগল ক্লাউড প্রজেক্ট সেট করার পরে, কোড এডিটরে ফিরে যেতে বাম দিকে ‘এডিটর নির্বাচন করুন।
স্ক্রিপ্টে কোড যোগ করুন
নিম্নলিখিত কোড নমুনাটি দেখায় কিভাবে বিভিন্ন eventType মান ব্যবহার করে ইভেন্ট তালিকাভুক্ত করতে, পড়তে এবং তৈরি করতে হয়।
নিম্নলিখিতটি কোড এডিটরে পেস্ট করুন।
const CALENDAR_ID = 'CALENDAR_ID' || 'primary'; /** Lists default events. */ function listDefaultEvents() { listEvents('default'); } /** Lists birthday events. */ function listBirthdays() { listEvents('birthday'); } /** Lists events from Gmail. */ function listEventsFromGmail() { listEvents('fromGmail'); } /** * Lists events with the given event type. If no type is specified, lists all events. * See https://developers.google.com/workspace/calendar/api/v3/reference/events/list */ function listEvents(eventType = undefined) { // Query parameters for the list request. const optionalArgs = { eventTypes: eventType ? [eventType] : undefined, singleEvents: true, timeMax: '2024-07-30T00:00:00+01:00', timeMin: '2024-07-29T00:00:00+01:00', } try { var response = Calendar.Events.list(CALENDAR_ID, optionalArgs); response.items.forEach(event => console.log(event)); } catch (exception) { console.log(exception.message); } } /** * Reads the event with the given eventId. * See https://developers.google.com/workspace/calendar/api/v3/reference/events/get */ function readEvent() { try { var response = Calendar.Events.get(CALENDAR_ID, 'EVENT_ID'); console.log(response); } catch (exception) { console.log(exception.message); } } /** Creates a default event. */ function createDefaultEvent() { const event = { start: { dateTime: '2024-07-30T10:30:00+01:00'}, end: { dateTime: '2024-07-30T12:30:00+01:00'}, description: 'Created from Apps Script.', eventType: 'default', summary: 'Sample event', } createEvent(event); } /** Creates a birthday event. */ function createBirthday() { const event = { start: { date: '2024-01-29' }, end: { date: '2024-01-30' }, eventType: 'birthday', recurrence: ["RRULE:FREQ=YEARLY"], summary: "My friend's birthday", transparency: "transparent", visibility: "private", } createEvent(event); } /** * Creates a Calendar event. * See https://developers.google.com/workspace/calendar/api/v3/reference/events/insert */ function createEvent(event) { try { var response = Calendar.Events.insert(event, CALENDAR_ID); console.log(response); } catch (exception) { console.log(exception.message); } }নিম্নলিখিতগুলি প্রতিস্থাপন করুন:
-
CALENDAR_ID: যে ক্যালেন্ডার থেকে ইভেন্ট সংগ্রহ ও তৈরি করতে হবে, তার ইমেল ঠিকানা। এই কনস্ট্যান্টটি প্রাথমিকভাবে'primary'তে সেট করা থাকে, যা সাইন-ইন করা ব্যবহারকারীর প্রাথমিক ক্যালেন্ডার অ্যাক্সেস করার একটি কীওয়ার্ড। এই মান পরিবর্তন করলে আপনি আপনার অ্যাক্সেস থাকা অন্যান্য ব্যবহারকারীদের ক্যালেন্ডারের ইভেন্টগুলোও পড়তে পারবেন। -
EVENT_ID: ইভেন্টের আইডি। ইভেন্ট আইডিগুলো পাওয়ার জন্য আপনি Events:list কল করতে পারেন।
-
কোড নমুনাটি চালান
- কোড এডিটরের উপরে, ড্রপ-ডাউন মেনু থেকে চালানোর জন্য ফাংশনটি নির্বাচন করুন এবং রান (Run ) বোতামে ক্লিক করুন।
- প্রথমবার চালানোর সময়, এটি আপনাকে অ্যাক্সেসের অনুমতি দিতে বলবে। পর্যালোচনা করুন এবং অ্যাপস স্ক্রিপ্টকে আপনার ক্যালেন্ডার অ্যাক্সেস করার অনুমতি দিন।
- উইন্ডোর নিচে প্রদর্শিত এক্সিকিউশন লগ- এ আপনি স্ক্রিপ্ট নির্বাহের ফলাফল খতিয়ে দেখতে পারেন।