এই পৃষ্ঠায় ব্যাখ্যা করা হয়েছে কীভাবে গুগল ক্যালেন্ডার এপিআই ব্যবহার করে এমন ইভেন্ট তৈরি করা যায় যা গুগল ক্যালেন্ডার ব্যবহারকারীদের স্ট্যাটাস দেখায়। স্ট্যাটাস ইভেন্টগুলো বর্ণনা করে যে ব্যবহারকারীরা কোথায় আছেন বা কী করছেন, যার মধ্যে অন্তর্ভুক্ত রয়েছে তারা ফোকাস টাইমে আছেন, অফিসের বাইরে আছেন, বা কোনো নির্দিষ্ট স্থান থেকে কাজ করছেন কিনা।
গুগল ক্যালেন্ডারে, ব্যবহারকারীরা তাদের নিজস্ব স্ট্যাটাস ও অবস্থান নির্দেশ করার জন্য ফোকাস টাইম, আউট অফ অফিস এবং ওয়ার্কিং লোকেশন ইভেন্ট তৈরি করতে পারেন। এই ফিচারগুলো শুধুমাত্র প্রাইমারি ক্যালেন্ডারে এবং কিছু নির্দিষ্ট গুগল ক্যালেন্ডার ব্যবহারকারীর জন্য উপলব্ধ।
আরও বিস্তারিত জানতে, Google Calendar-এ ফোকাস টাইম ব্যবহার করুন এবং ব্যবহারকারীদের জন্য কাজের অবস্থান চালু বা বন্ধ করুন দেখুন ।
ক্যালেন্ডারের স্ট্যাটাস ইভেন্টগুলো পড়ুন এবং তালিকাভুক্ত করুন
আপনি ক্যালেন্ডার এপিআই-এর Events রিসোর্সে ক্যালেন্ডারের স্ট্যাটাস ইভেন্টগুলো পড়তে ও তালিকাভুক্ত করতে পারেন।
কোনো স্ট্যাটাস ইভেন্ট পড়তে, ইভেন্টের eventId উল্লেখ করে events.get মেথডটি ব্যবহার করুন।
স্ট্যাটাস ইভেন্টগুলোর তালিকা করতে, events.list মেথডটি ব্যবহার করুন এবং eventTypes ফিল্ডে নিম্নলিখিত এক বা একাধিক মান উল্লেখ করুন:
-
'focusTime' -
'outOfOffice' -
'workingLocation'
তারপর, ফেরত আসা Event অবজেক্টগুলিতে, পরীক্ষা করে দেখুন যে eventType ফিল্ডটিতে অনুরোধ করা মানটি আছে কিনা, এবং Google Calendar-এ ব্যবহারকারীর তৈরি করা স্ট্যাটাসটির বিশদ বিবরণের জন্য সংশ্লিষ্ট ফিল্ডটি দেখুন:
স্ট্যাটাস ইভেন্টের পরিবর্তন সম্পর্কে জানতে সাবস্ক্রাইব করুন
আপনি ক্যালেন্ডার এপিআই-এর Events রিসোর্সে স্ট্যাটাস ইভেন্টের পরিবর্তনগুলিতে সাবস্ক্রাইব করতে পারেন।
events.watch মেথডটি ব্যবহার করুন, এবং যে ক্যালেন্ডারটি সাবস্ক্রাইব করতে চান তার calendarId ও eventTypes ফিল্ডে নিম্নলিখিত এক বা একাধিক ভ্যালু উল্লেখ করুন:
-
'focusTime' -
'outOfOffice' -
'workingLocation'
ক্যালেন্ডারের স্ট্যাটাস ইভেন্ট তৈরি এবং আপডেট করুন
একটি স্ট্যাটাস ইভেন্ট তৈরি করতে, আপনাকে events.insert মেথড ব্যবহার করে Events রিসোর্সের একটি ইনস্ট্যান্স তৈরি করতে হবে এবং ইভেন্ট টাইপের জন্য প্রয়োজনীয় ফিল্ডগুলো সেট করতে হবে।
যদি আপনি events.update মেথড ব্যবহার করে স্ট্যাটাস ইভেন্ট আপডেট করেন, তাহলে ইভেন্টটিতে প্রয়োজনীয় ফিল্ডগুলো অবশ্যই বজায় রাখতে হবে।
মনোযোগের জন্য সময় তৈরি করুন
একটি ফোকাস টাইম ইভেন্ট তৈরি করতে:
-
eventTypeকে'focusTime'এ সেট করুন। -
focusTimePropertiesফিল্ডটি অন্তর্ভুক্ত করুন। -
transparencyক্ষেত্রটি'opaque'এ সেট করুন। - ইভেন্টের
startএবংendক্ষেত্রগুলিকে একটি সময়-ভিত্তিক ইভেন্ট হিসাবে সেট করুন (শুরু এবং শেষের সময় নির্দিষ্ট করে দিয়ে)।
ফোকাস টাইম সারাদিনের কার্যক্রম হতে পারে না।
ফিচারের বিস্তারিত জানতে, গুগল ক্যালেন্ডারে ফোকাস টাইম ব্যবহার করুন -এ যান।
অফিসের বাইরে তৈরি করুন
অফিসের বাইরে কোনো ইভেন্ট তৈরি করতে:
-
eventType'outOfOffice'এ সেট করুন। -
outOfOfficePropertiesফিল্ডটি অন্তর্ভুক্ত করুন। -
transparencyক্ষেত্রটি'opaque'এ সেট করুন। - ইভেন্টের
startএবংendক্ষেত্রগুলিকে একটি সময়-ভিত্তিক ইভেন্ট হিসাবে সেট করুন (শুরু এবং শেষের সময় নির্দিষ্ট করে দিয়ে)।
অফিসের বাইরের অনুষ্ঠানগুলো সারাদিনের অনুষ্ঠান হতে পারবে না।
ফিচারের বিস্তারিত জানতে, 'আপনি অফিসের বাইরে থাকলে দেখান' -এ যান।
কাজের অবস্থান তৈরি করুন
একটি কার্যকরী অবস্থান ইভেন্ট তৈরি করতে:
-
eventType'workingLocation'এ সেট করুন। -
workingLocationPropertiesফিল্ডটি অন্তর্ভুক্ত করুন। -
visibilityফিল্ডটি'public'এ সেট করুন। -
transparencyক্ষেত্রটি'transparent'এ সেট করুন। ইভেন্টের
startএবংendফিল্ডগুলো নিম্নলিখিতগুলির মধ্যে যেকোনো একটিতে সেট করুন:- একটি সময়-নির্ধারিত ইভেন্ট (যার শুরু এবং শেষের সময় নির্দিষ্ট করা থাকে);
- একটি দিনব্যাপী অনুষ্ঠান (যার শুরু ও শেষের তারিখ নির্দিষ্ট করা থাকে) যা ঠিক একদিন ধরে চলে।
সারাদিনব্যাপী কর্মস্থলের অনুষ্ঠান একাধিক দিন ধরে চলতে পারে না, কিন্তু সময়-ভিত্তিক অনুষ্ঠান চলতে পারে।
officeLocation যোগ করার সময় সর্বোত্তম ব্যবহারকারীর অভিজ্ঞতার জন্য নিম্নলিখিত ক্ষেত্রগুলি ঐচ্ছিক হলেও পূরণ করার পরামর্শ দেওয়া হয়:
-
workingLocationProperties.officeLocation.buildingId: এটি অবশ্যই প্রতিষ্ঠানের রিসোর্স ডাটাবেসের একটিbuildingIdসাথে মিলতে হবে। এটি ব্যবহারকারীদের ক্যালেন্ডারের সমস্ত বৈশিষ্ট্য, যেমন রুম সাজেশনের সুবিধা পেতে সাহায্য করে। -
workingLocationProperties.officeLocation.label: এটি সেই লেবেল যা ক্যালেন্ডার ওয়েব এবং মোবাইল ক্লায়েন্টে দেখানো হয়। আপনিresources.buildings.listমেথড ব্যবহার করে বিল্ডিং আইডি এবং বিল্ডিং লেবেল পেতে পারেন।
ব্যাচ এন্ডপয়েন্টের মাধ্যমে ওয়ার্কিং লোকেশন ইভেন্ট তৈরি এবং আপডেট করা সমর্থিত নয়।
ফিচারের বিস্তারিত জানতে, 'আপনার কাজের সময় ও অবস্থান সেট করুন' এবং 'ব্যবহারকারীদের জন্য কাজের অবস্থান চালু বা বন্ধ করুন'- এ যান।
ওভারল্যাপিং ওয়ার্কিং লোকেশন ইভেন্টগুলি কীভাবে দেখাবেন
একজন ব্যবহারকারীর ক্যালেন্ডারে একই সময়ে একাধিক কর্মস্থলের ইভেন্ট থাকতে পারে যা একে অপরের সাথে ওভারল্যাপ করে, যার অর্থ হলো যেকোনো নির্দিষ্ট সময়ে একাধিক কর্মস্থল সেট করা থাকতে পারে। যখন ব্যবহারকারীকে শুধুমাত্র একটি অবস্থান দেখানো সম্ভব হয়, তখন একাধিক অ্যাপ্লিকেশন জুড়ে সেই অবস্থানটিই ধারাবাহিকভাবে দেখানো উচিত। এটি করার সময়, কোন ইভেন্টটি দেখানো হবে তা বেছে নিতে নিম্নলিখিত নির্দেশিকাগুলো ব্যবহার করুন:
- সারাদিনের ইভেন্টের চেয়ে নির্দিষ্ট সময়ের ইভেন্টগুলো অগ্রাধিকার পাবে।
- পুনরাবৃত্তিমূলক ঘটনা এবং সেগুলোর ব্যতিক্রমের ওপর একক ঘটনাগুলোর অগ্রাধিকার থাকে।
- যে ঘটনাগুলো পরে শুরু হয়, সেগুলো আগে শুরু হওয়া ঘটনাগুলোর চেয়ে অগ্রাধিকার পায়।
- দীর্ঘ সময়কালের ঘটনাগুলোর চেয়ে স্বল্প সময়কালের ঘটনাগুলো অগ্রাধিকার পায়।
- সম্প্রতি তৈরি হওয়া ইভেন্টগুলো আগে তৈরি হওয়া ইভেন্টগুলোর চেয়ে অগ্রাধিকার পায়।
- আংশিকভাবে ওভারল্যাপ করা ইভেন্টগুলোকে দুটি ভিন্ন ইভেন্ট হিসেবে দেখানো উচিত, যার প্রত্যেকটির নিজস্ব ওয়ার্কিং লোকেশন থাকবে।
গুগল অ্যাপস স্ক্রিপ্টে স্ট্যাটাস ইভেন্ট তৈরি করুন
গুগল অ্যাপস স্ক্রিপ্ট হলো একটি জাভাস্ক্রিপ্ট-ভিত্তিক ক্লাউড স্ক্রিপ্টিং ভাষা, যা আপনাকে গুগল ওয়ার্কস্পেসের সাথে সমন্বিত ব্যবসায়িক অ্যাপ্লিকেশন তৈরি করতে দেয়। স্ক্রিপ্টগুলো একটি ব্রাউজার-ভিত্তিক কোড এডিটরে তৈরি করা হয় এবং সেগুলো গুগলের সার্ভারে সংরক্ষিত ও চালিত হয়। গুগল ক্যালেন্ডার এপিআই-তে অনুরোধ পাঠাতে অ্যাপস স্ক্রিপ্ট ব্যবহার শুরু করার জন্য গুগল অ্যাপস স্ক্রিপ্ট কুইকস্টার্ট- ও দেখুন।
নিম্নলিখিত নির্দেশাবলীতে বর্ণনা করা হয়েছে কিভাবে গুগল অ্যাপস স্ক্রিপ্টে একটি অ্যাডভান্সড সার্ভিস হিসেবে গুগল ক্যালেন্ডার এপিআই ব্যবহার করে স্ট্যাটাস ইভেন্টগুলো পরিচালনা করা যায়। গুগল ক্যালেন্ডার এপিআই-এর রিসোর্স এবং মেথডগুলোর সম্পূর্ণ তালিকার জন্য, রেফারেন্স ডকুমেন্টেশন দেখুন।
স্ক্রিপ্ট তৈরি এবং সেট আপ করুন
- script.google.com/create -এ গিয়ে একটি স্ক্রিপ্ট তৈরি করুন।
- বাম দিকের প্যানেলে Services-এর পাশে থাকা Add a service- ক্লিক করুন।
- Google Calendar API নির্বাচন করুন এবং Add-এ ক্লিক করুন।
- After enabled, the API appears on the left pane. Available methods and classes in the API can be listed using the Calendar keyword in the editor.
(ঐচ্ছিক) গুগল ক্লাউড প্রজেক্ট আপডেট করুন
প্রতিটি গুগল অ্যাপস স্ক্রিপ্ট প্রজেক্টের সাথে একটি গুগল ক্লাউড প্রজেক্ট যুক্ত থাকে। আপনার স্ক্রিপ্টটি গুগল অ্যাপস স্ক্রিপ্ট দ্বারা স্বয়ংক্রিয়ভাবে তৈরি ডিফল্ট প্রজেক্টটি ব্যবহার করতে পারে। আপনি যদি একটি কাস্টম গুগল ক্লাউড প্রজেক্ট ব্যবহার করতে চান, তবে আপনার স্ক্রিপ্টের সাথে যুক্ত প্রজেক্টটি আপডেট করার জন্য নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করুন।
- এডিটরের বাম দিকে, প্রজেক্ট ক্লিক করুন।
- Google Cloud Platform (GCP) Project- এর অধীনে, Change project-এ ক্লিক করুন।
- ডেভেলপার প্রিভিউ প্রোগ্রামে থাকা গুগল ক্লাউড প্রজেক্টের প্রজেক্ট নম্বরটি প্রবেশ করান এবং 'সেট প্রজেক্ট'-এ ক্লিক করুন।
- বাম দিকে, কোড এডিটরে ফিরে যেতে ‘এডিটর নির্বাচন করুন।
স্ক্রিপ্টে কোড যোগ করুন
নিম্নলিখিত কোড নমুনাটি দেখায় কিভাবে আপনার প্রাথমিক ক্যালেন্ডারে স্ট্যাটাস ইভেন্ট তৈরি, পড়া এবং তালিকাভুক্ত করা যায়।
নিম্নলিখিতটি কোড এডিটরে পেস্ট করুন।
/** Creates a focus time event. */ function createFocusTime() { const event = { start: { dateTime: '2023-11-14T10:00:00+01:00' }, end: { dateTime: '2023-11-14T12:00:00+01:00' }, eventType: 'focusTime', focusTimeProperties: { chatStatus: 'doNotDisturb', autoDeclineMode: 'declineOnlyNewConflictingInvitations', declineMessage: 'Declined because I am in focus time.', } } createEvent(event); } /** Creates an out of office event. */ function createOutOfOffice() { const event = { start: { dateTime: '2023-11-15T10:00:00+01:00' }, end: { dateTime: '2023-11-15T18:00:00+01:00' }, eventType: 'outOfOffice', outOfOfficeProperties: { autoDeclineMode: 'declineOnlyNewConflictingInvitations', declineMessage: 'Declined because I am on vacation.', } } createEvent(event); } /** Creates a working location event. */ function createWorkingLocation() { const event = { start: { date: "2023-06-01" }, end: { date: "2023-06-02" }, eventType: "workingLocation", visibility: "public", transparency: "transparent", workingLocationProperties: { type: 'customLocation', customLocation: { label: "a custom location" }, } } createEvent(event); } /** * Creates a Calendar event. * See https://developers.google.com/workspace/calendar/api/v3/reference/events/insert */ function createEvent(event) { const calendarId = 'primary'; try { var response = Calendar.Events.insert(event, calendarId); var event = (response.eventType === 'workingLocation') ? parseWorkingLocation(response) : response; 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() { const calendarId = 'primary'; // Replace with a valid eventId. const eventId = "sample-event-id"; try { var response = Calendar.Events.get(calendarId, eventId); var event = (response.eventType === 'workingLocation') ? parseWorkingLocation(response) : response; console.log(event); } catch (exception) { console.log(exception.message); } } /** Lists focus time events. */ function listFocusTimes() { listEvents('focusTime'); } /** Lists out of office events. */ function listOutOfOffices() { listEvents('outOfOffice'); } /** Lists working location events. */ function listWorkingLocations() { listEvents('workingLocation'); } /** * Lists events with the given event type. * See https://developers.google.com/workspace/calendar/api/v3/reference/events/list */ function listEvents(eventType = 'default') { const calendarId = 'primary' // Query parameters for the list request. const optionalArgs = { eventTypes: [eventType], showDeleted: false, singleEvents: true, timeMax: '2023-04-01T00:00:00+01:00', timeMin: '2023-03-27T00:00:00+01:00', } try { var response = Calendar.Events.list(calendarId, optionalArgs); response.items.forEach(event => console.log(eventType === 'workingLocation' ? parseWorkingLocation(event) : event)); } catch (exception) { console.log(exception.message); } } /** * Parses working location properties of an event into a string. * See https://developers.google.com/workspace/calendar/api/v3/reference/events#resource */ function parseWorkingLocation(event) { if (event.eventType != "workingLocation") { throw new Error("'" + event.summary + "' is not a working location event."); } var location = 'No Location'; const workingLocation = event.workingLocationProperties; if (workingLocation) { if (workingLocation.type === 'homeOffice') { location = 'Home'; } if (workingLocation.type === 'officeLocation') { location = workingLocation.officeLocation.label; } if (workingLocation.type === 'customLocation') { location = workingLocation.customLocation.label; } } return `${event.start.date}: ${location}`; }
কোড নমুনাটি চালান
- কোড এডিটরের উপরে, ড্রপ-ডাউন মেনু থেকে চালানোর জন্য ফাংশনটি নির্বাচন করুন এবং রান (Run ) বোতামে ক্লিক করুন।
- প্রথমবার চালানোর সময়, এটি আপনাকে অ্যাক্সেসের অনুমতি দিতে বলবে। পর্যালোচনা করুন এবং অ্যাপস স্ক্রিপ্টকে আপনার ক্যালেন্ডার অ্যাক্সেস করার অনুমতি দিন।
- উইন্ডোর নিচে প্রদর্শিত এক্সিকিউশন লগ- এ আপনি স্ক্রিপ্ট নির্বাহের ফলাফল খতিয়ে দেখতে পারেন।