এই পৃষ্ঠায় ব্যাখ্যা করা হয়েছে যে কীভাবে Google Calendar API ব্যবহার করে Google Calendar ব্যবহারকারীদের অবস্থা দেখানোর জন্য ইভেন্ট তৈরি করতে হয়। স্ট্যাটাস ইভেন্টগুলি বর্ণনা করে যে ব্যবহারকারীরা কোথায় আছেন বা তারা কী করছেন, যার মধ্যে রয়েছে তারা ফোকাস টাইমে আছেন, অফিসের বাইরে আছেন, অথবা কোনও নির্দিষ্ট স্থান থেকে কাজ করছেন কিনা।
গুগল ক্যালেন্ডারে, ব্যবহারকারীরা তাদের কাস্টম স্ট্যাটাস এবং অবস্থান নির্দেশ করার জন্য ফোকাস টাইম, অফিসের বাইরে এবং কর্মস্থলের অবস্থানের ইভেন্ট তৈরি করতে পারেন। এই বৈশিষ্ট্যগুলি শুধুমাত্র প্রাথমিক ক্যালেন্ডারে এবং কিছু গুগল ক্যালেন্ডার ব্যবহারকারীর জন্য উপলব্ধ।
আরও বিস্তারিত জানার জন্য, Google Calendar-এ Use focus time এবং Turn working location on or off for users-এ যান।
ক্যালেন্ডার স্ট্যাটাস ইভেন্টগুলি পড়ুন এবং তালিকাভুক্ত করুন
আপনি ক্যালেন্ডার API-এর Events রিসোর্সে ক্যালেন্ডার স্ট্যাটাস ইভেন্টগুলি পড়তে এবং তালিকাভুক্ত করতে পারেন।
একটি স্ট্যাটাস ইভেন্ট পড়ার জন্য, ইভেন্টের eventId উল্লেখ করে events.get পদ্ধতিটি ব্যবহার করুন।
স্ট্যাটাস ইভেন্ট তালিকাভুক্ত করতে, events.list পদ্ধতিটি ব্যবহার করুন, eventTypes ক্ষেত্রে নিম্নলিখিত এক বা একাধিক মান উল্লেখ করুন:
-
'focusTime' -
'outOfOffice' -
'workingLocation'
তারপর, ফিরে আসা Event অবজেক্টগুলিতে, eventType ফিল্ডে অনুরোধকৃত মান আছে কিনা তা পরীক্ষা করুন এবং Google Calendar-এ ব্যবহারকারীর দ্বারা তৈরি স্ট্যাটাস সম্পর্কে বিস্তারিত জানতে সংশ্লিষ্ট ফিল্ডটি দেখুন:
স্ট্যাটাস ইভেন্টের পরিবর্তনগুলিতে সাবস্ক্রাইব করুন
আপনি ক্যালেন্ডার API-এর Events রিসোর্সে স্ট্যাটাস ইভেন্টের পরিবর্তনগুলিতে সাবস্ক্রাইব করতে পারেন।
events.watch পদ্ধতি ব্যবহার করুন, সাবস্ক্রাইব করতে চান এমন ক্যালেন্ডারের calendarId এবং eventTypes ক্ষেত্রে নিম্নলিখিত এক বা একাধিক মান উল্লেখ করুন:
-
'focusTime' -
'outOfOffice' -
'workingLocation'
ক্যালেন্ডার স্ট্যাটাস ইভেন্ট তৈরি এবং আপডেট করুন
একটি স্ট্যাটাস ইভেন্ট তৈরি করতে, আপনাকে events.insert পদ্ধতি ব্যবহার করে Events রিসোর্সের একটি উদাহরণ তৈরি করতে হবে, ইভেন্টের ধরণের জন্য প্রয়োজনীয় ক্ষেত্রগুলি সেট করতে হবে।
যদি আপনি events.update পদ্ধতি ব্যবহার করে স্ট্যাটাস ইভেন্ট আপডেট করেন, তাহলে ইভেন্টটিকে অবশ্যই প্রয়োজনীয় ক্ষেত্রগুলি বজায় রাখতে হবে।
ফোকাস টাইম তৈরি করুন
ফোকাস টাইম ইভেন্ট তৈরি করতে:
-
eventType'focusTime'এ সেট করুন। -
focusTimePropertiesক্ষেত্রটি অন্তর্ভুক্ত করুন। -
transparencyফিল্ডটি'opaque'তে সেট করুন। - ইভেন্টের
startএবংendক্ষেত্রগুলিকে একটি সময় নির্ধারিত ইভেন্ট হিসেবে সেট করুন (শুরু এবং শেষের সময় নির্দিষ্ট করে)।
ফোকাস টাইম সারাদিনের ইভেন্ট হতে পারে না।
বৈশিষ্ট্যের বিশদ বিবরণের জন্য, Google Calendar-এ ফোকাস টাইম ব্যবহার করুন বিভাগে যান
অফিসের বাইরে তৈরি করুন
অফিসে নেই এমন ইভেন্ট তৈরি করতে:
-
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পদ্ধতি ব্যবহার করে বিল্ডিং আইডি এবং বিল্ডিং লেবেল আনতে পারেন।
ব্যাচ এন্ডপয়েন্টের মাধ্যমে কর্মস্থলের ইভেন্ট তৈরি এবং আপডেট করা সমর্থিত নয়।
বৈশিষ্ট্যের বিশদ বিবরণের জন্য, আপনার কর্মঘণ্টা এবং অবস্থান সেট করুন এবং ব্যবহারকারীদের জন্য কর্মঘণ্টা চালু বা বন্ধ করুন বিভাগে যান।
ওভারল্যাপিং কর্মস্থলের ইভেন্টগুলি কীভাবে দেখাবেন
একজন ব্যবহারকারীর ক্যালেন্ডারে একই সময়ে একাধিক কর্মস্থলের ইভেন্ট থাকতে পারে যা ওভারল্যাপ করে, অর্থাৎ যেকোনো নির্দিষ্ট সময়ের জন্য একাধিক কর্মস্থল সেট করা থাকতে পারে। যেসব পরিস্থিতিতে ব্যবহারকারীকে শুধুমাত্র একটি অবস্থান দেখানো সম্ভব, সেসব ক্ষেত্রে একাধিক অ্যাপ্লিকেশন জুড়ে ধারাবাহিকভাবে সেই অবস্থানটি দেখানো উচিত। এটি করার সময়, কোন ইভেন্টটি দেখানো হবে তা বেছে নিতে নিম্নলিখিত নির্দেশিকাগুলি ব্যবহার করুন:
- সারাদিনের ইভেন্টের চেয়ে সময়ভিত্তিক ইভেন্টগুলি প্রাধান্য পায়।
- পুনরাবৃত্ত ঘটনা এবং তাদের ব্যতিক্রমগুলির উপর একক ঘটনা প্রাধান্য পায়।
- যে ঘটনাগুলি পরে শুরু হয় সেগুলি আগে শুরু হওয়া ঘটনার চেয়ে প্রাধান্য পায়।
- দীর্ঘ সময়কালের ইভেন্টের তুলনায় কম সময়কালের ইভেন্টগুলিকে প্রাধান্য দেওয়া হয়।
- পূর্বে তৈরি হওয়া ইভেন্টের চেয়ে সম্প্রতি তৈরি হওয়া ইভেন্টগুলি প্রাধান্য পায়।
- আংশিকভাবে ওভারল্যাপিং ইভেন্টগুলিকে দুটি ভিন্ন ইভেন্ট হিসেবে দেখানো উচিত যার প্রতিটির নিজস্ব কর্মস্থল থাকবে।
গুগল অ্যাপস স্ক্রিপ্টে স্ট্যাটাস ইভেন্ট তৈরি করুন
গুগল অ্যাপস স্ক্রিপ্ট হল একটি জাভাস্ক্রিপ্ট-ভিত্তিক ক্লাউড স্ক্রিপ্টিং ভাষা যা আপনাকে গুগল ওয়ার্কস্পেসের সাথে একীভূত ব্যবসায়িক অ্যাপ্লিকেশন তৈরি করতে দেয়। স্ক্রিপ্টগুলি একটি ব্রাউজার-ভিত্তিক কোড এডিটরে তৈরি করা হয় এবং সেগুলি গুগলের সার্ভারে সংরক্ষণ করা হয় এবং চালানো হয়। গুগল ক্যালেন্ডার এপিআইতে অনুরোধ পাঠানোর জন্য অ্যাপস স্ক্রিপ্ট ব্যবহার শুরু করতে গুগল অ্যাপস স্ক্রিপ্ট কুইকস্টার্ট দেখুন।
নিম্নলিখিত নির্দেশাবলীতে Google Apps Script-এ একটি উন্নত পরিষেবা হিসেবে Google Calendar API ব্যবহার করে কীভাবে স্ট্যাটাস ইভেন্ট পরিচালনা করতে হয় তা বর্ণনা করা হয়েছে। Google Calendar API রিসোর্স এবং পদ্ধতির সম্পূর্ণ তালিকার জন্য, রেফারেন্স ডকুমেন্টেশন দেখুন।
স্ক্রিপ্ট তৈরি এবং সেট আপ করুন
- script.google.com/create এ গিয়ে একটি স্ক্রিপ্ট তৈরি করুন।
- Services এর পাশের বাম পেনে, Add a service ক্লিক করুন।
- গুগল ক্যালেন্ডার এপিআই নির্বাচন করুন এবং অ্যাড এ ক্লিক করুন।
- সক্রিয় করার পরে, APIটি বাম প্যানেলে প্রদর্শিত হবে। API-তে উপলব্ধ পদ্ধতি এবং ক্লাসগুলি সম্পাদকে ক্যালেন্ডার কীওয়ার্ড ব্যবহার করে তালিকাভুক্ত করা যেতে পারে।
(ঐচ্ছিক) গুগল ক্লাউড প্রোজেক্ট আপডেট করুন
প্রতিটি Google Apps Script প্রকল্পের সাথে একটি সংযুক্ত Google Cloud প্রকল্প থাকে। আপনার স্ক্রিপ্টটি Google Apps Script স্বয়ংক্রিয়ভাবে তৈরি করা ডিফল্ট প্রকল্পটি ব্যবহার করতে পারে। আপনি যদি একটি কাস্টম Google Cloud প্রকল্প ব্যবহার করতে চান, তাহলে আপনার স্ক্রিপ্টের সাথে সম্পর্কিত প্রকল্পটি আপডেট করার জন্য নিম্নলিখিত পদক্ষেপগুলি গ্রহণ করুন।
- এডিটরের বাম দিকে, Project Settings ক্লিক করুন।
- গুগল ক্লাউড প্ল্যাটফর্ম (জিসিপি) প্রজেক্টের অধীনে, প্রজেক্ট পরিবর্তন করুন এ ক্লিক করুন।
- ডেভেলপার প্রিভিউ প্রোগ্রামে থাকা গুগল ক্লাউড প্রোজেক্টের প্রোজেক্ট নম্বরটি লিখুন এবং প্রোজেক্ট সেট করুন এ ক্লিক করুন।
- বাম দিকে, কোড এডিটরে ফিরে যেতে এডিটর নির্বাচন করুন।
স্ক্রিপ্টে কোড যোগ করুন
নিম্নলিখিত কোড নমুনাটি আপনার প্রাথমিক ক্যালেন্ডারে স্ট্যাটাস ইভেন্টগুলি কীভাবে তৈরি করবেন, পড়বেন এবং তালিকাভুক্ত করবেন তা দেখায়।
কোড এডিটরে নিম্নলিখিতটি পেস্ট করুন।
/** 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 এ ক্লিক করুন।
- প্রথম এক্সিকিউশনে, এটি আপনাকে অ্যাক্সেস অনুমোদন করতে অনুরোধ করবে। পর্যালোচনা করুন এবং অ্যাপস স্ক্রিপ্টকে আপনার ক্যালেন্ডার অ্যাক্সেস করার অনুমতি দিন।
- আপনি উইন্ডোর নীচে প্রদর্শিত এক্সিকিউশন লগে স্ক্রিপ্ট এক্সিকিউশনের ফলাফল পরীক্ষা করতে পারেন।
এই পৃষ্ঠায় ব্যাখ্যা করা হয়েছে যে কীভাবে Google Calendar API ব্যবহার করে Google Calendar ব্যবহারকারীদের অবস্থা দেখানোর জন্য ইভেন্ট তৈরি করতে হয়। স্ট্যাটাস ইভেন্টগুলি বর্ণনা করে যে ব্যবহারকারীরা কোথায় আছেন বা তারা কী করছেন, যার মধ্যে রয়েছে তারা ফোকাস টাইমে আছেন, অফিসের বাইরে আছেন, অথবা কোনও নির্দিষ্ট স্থান থেকে কাজ করছেন কিনা।
গুগল ক্যালেন্ডারে, ব্যবহারকারীরা তাদের কাস্টম স্ট্যাটাস এবং অবস্থান নির্দেশ করার জন্য ফোকাস টাইম, অফিসের বাইরে এবং কর্মস্থলের অবস্থানের ইভেন্ট তৈরি করতে পারেন। এই বৈশিষ্ট্যগুলি শুধুমাত্র প্রাথমিক ক্যালেন্ডারে এবং কিছু গুগল ক্যালেন্ডার ব্যবহারকারীর জন্য উপলব্ধ।
আরও বিস্তারিত জানার জন্য, Google Calendar-এ Use focus time এবং Turn working location on or off for users-এ যান।
ক্যালেন্ডার স্ট্যাটাস ইভেন্টগুলি পড়ুন এবং তালিকাভুক্ত করুন
আপনি ক্যালেন্ডার API-এর Events রিসোর্সে ক্যালেন্ডার স্ট্যাটাস ইভেন্টগুলি পড়তে এবং তালিকাভুক্ত করতে পারেন।
একটি স্ট্যাটাস ইভেন্ট পড়ার জন্য, ইভেন্টের eventId উল্লেখ করে events.get পদ্ধতিটি ব্যবহার করুন।
স্ট্যাটাস ইভেন্ট তালিকাভুক্ত করতে, events.list পদ্ধতিটি ব্যবহার করুন, eventTypes ক্ষেত্রে নিম্নলিখিত এক বা একাধিক মান উল্লেখ করুন:
-
'focusTime' -
'outOfOffice' -
'workingLocation'
তারপর, ফিরে আসা Event অবজেক্টগুলিতে, eventType ফিল্ডে অনুরোধকৃত মান আছে কিনা তা পরীক্ষা করুন এবং Google Calendar-এ ব্যবহারকারীর দ্বারা তৈরি স্ট্যাটাস সম্পর্কে বিস্তারিত জানতে সংশ্লিষ্ট ফিল্ডটি দেখুন:
স্ট্যাটাস ইভেন্টের পরিবর্তনগুলিতে সাবস্ক্রাইব করুন
আপনি ক্যালেন্ডার API-এর Events রিসোর্সে স্ট্যাটাস ইভেন্টের পরিবর্তনগুলিতে সাবস্ক্রাইব করতে পারেন।
events.watch পদ্ধতি ব্যবহার করুন, সাবস্ক্রাইব করতে চান এমন ক্যালেন্ডারের calendarId এবং eventTypes ক্ষেত্রে নিম্নলিখিত এক বা একাধিক মান উল্লেখ করুন:
-
'focusTime' -
'outOfOffice' -
'workingLocation'
ক্যালেন্ডার স্ট্যাটাস ইভেন্ট তৈরি এবং আপডেট করুন
একটি স্ট্যাটাস ইভেন্ট তৈরি করতে, আপনাকে events.insert পদ্ধতি ব্যবহার করে Events রিসোর্সের একটি উদাহরণ তৈরি করতে হবে, ইভেন্টের ধরণের জন্য প্রয়োজনীয় ক্ষেত্রগুলি সেট করতে হবে।
যদি আপনি events.update পদ্ধতি ব্যবহার করে স্ট্যাটাস ইভেন্ট আপডেট করেন, তাহলে ইভেন্টটিকে অবশ্যই প্রয়োজনীয় ক্ষেত্রগুলি বজায় রাখতে হবে।
ফোকাস টাইম তৈরি করুন
ফোকাস টাইম ইভেন্ট তৈরি করতে:
-
eventType'focusTime'এ সেট করুন। -
focusTimePropertiesক্ষেত্রটি অন্তর্ভুক্ত করুন। -
transparencyফিল্ডটি'opaque'তে সেট করুন। - ইভেন্টের
startএবংendক্ষেত্রগুলিকে একটি সময় নির্ধারিত ইভেন্ট হিসেবে সেট করুন (শুরু এবং শেষের সময় নির্দিষ্ট করে)।
ফোকাস টাইম সারাদিনের ইভেন্ট হতে পারে না।
বৈশিষ্ট্যের বিশদ বিবরণের জন্য, Google Calendar-এ ফোকাস টাইম ব্যবহার করুন বিভাগে যান
অফিসের বাইরে তৈরি করুন
অফিসে নেই এমন ইভেন্ট তৈরি করতে:
-
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পদ্ধতি ব্যবহার করে বিল্ডিং আইডি এবং বিল্ডিং লেবেল আনতে পারেন।
ব্যাচ এন্ডপয়েন্টের মাধ্যমে কর্মস্থলের ইভেন্ট তৈরি এবং আপডেট করা সমর্থিত নয়।
বৈশিষ্ট্যের বিশদ বিবরণের জন্য, আপনার কর্মঘণ্টা এবং অবস্থান সেট করুন এবং ব্যবহারকারীদের জন্য কর্মঘণ্টা চালু বা বন্ধ করুন বিভাগে যান।
ওভারল্যাপিং কর্মস্থলের ইভেন্টগুলি কীভাবে দেখাবেন
একজন ব্যবহারকারীর ক্যালেন্ডারে একই সময়ে একাধিক কর্মস্থলের ইভেন্ট থাকতে পারে যা ওভারল্যাপ করে, অর্থাৎ যেকোনো নির্দিষ্ট সময়ের জন্য একাধিক কর্মস্থল সেট করা থাকতে পারে। যেসব পরিস্থিতিতে ব্যবহারকারীকে শুধুমাত্র একটি অবস্থান দেখানো সম্ভব, সেসব ক্ষেত্রে একাধিক অ্যাপ্লিকেশন জুড়ে ধারাবাহিকভাবে সেই অবস্থানটি দেখানো উচিত। এটি করার সময়, কোন ইভেন্টটি দেখানো হবে তা বেছে নিতে নিম্নলিখিত নির্দেশিকাগুলি ব্যবহার করুন:
- সারাদিনের ইভেন্টের চেয়ে সময়ভিত্তিক ইভেন্টগুলি প্রাধান্য পায়।
- পুনরাবৃত্ত ঘটনা এবং তাদের ব্যতিক্রমগুলির উপর একক ঘটনা প্রাধান্য পায়।
- যে ঘটনাগুলি পরে শুরু হয় সেগুলি আগে শুরু হওয়া ঘটনার চেয়ে প্রাধান্য পায়।
- দীর্ঘ সময়কালের ইভেন্টের তুলনায় কম সময়কালের ইভেন্টগুলিকে প্রাধান্য দেওয়া হয়।
- পূর্বে তৈরি হওয়া ইভেন্টের চেয়ে সম্প্রতি তৈরি হওয়া ইভেন্টগুলি প্রাধান্য পায়।
- আংশিকভাবে ওভারল্যাপিং ইভেন্টগুলিকে দুটি ভিন্ন ইভেন্ট হিসেবে দেখানো উচিত যার প্রতিটির নিজস্ব কর্মস্থল থাকবে।
গুগল অ্যাপস স্ক্রিপ্টে স্ট্যাটাস ইভেন্ট তৈরি করুন
গুগল অ্যাপস স্ক্রিপ্ট হল একটি জাভাস্ক্রিপ্ট-ভিত্তিক ক্লাউড স্ক্রিপ্টিং ভাষা যা আপনাকে গুগল ওয়ার্কস্পেসের সাথে একীভূত ব্যবসায়িক অ্যাপ্লিকেশন তৈরি করতে দেয়। স্ক্রিপ্টগুলি একটি ব্রাউজার-ভিত্তিক কোড এডিটরে তৈরি করা হয় এবং সেগুলি গুগলের সার্ভারে সংরক্ষণ করা হয় এবং চালানো হয়। গুগল ক্যালেন্ডার এপিআইতে অনুরোধ পাঠানোর জন্য অ্যাপস স্ক্রিপ্ট ব্যবহার শুরু করতে গুগল অ্যাপস স্ক্রিপ্ট কুইকস্টার্ট দেখুন।
নিম্নলিখিত নির্দেশাবলীতে Google Apps Script-এ একটি উন্নত পরিষেবা হিসেবে Google Calendar API ব্যবহার করে কীভাবে স্ট্যাটাস ইভেন্ট পরিচালনা করতে হয় তা বর্ণনা করা হয়েছে। Google Calendar API রিসোর্স এবং পদ্ধতির সম্পূর্ণ তালিকার জন্য, রেফারেন্স ডকুমেন্টেশন দেখুন।
স্ক্রিপ্ট তৈরি এবং সেট আপ করুন
- script.google.com/create এ গিয়ে একটি স্ক্রিপ্ট তৈরি করুন।
- Services এর পাশের বাম পেনে, Add a service ক্লিক করুন।
- গুগল ক্যালেন্ডার এপিআই নির্বাচন করুন এবং অ্যাড এ ক্লিক করুন।
- সক্রিয় করার পরে, APIটি বাম প্যানেলে প্রদর্শিত হবে। API-তে উপলব্ধ পদ্ধতি এবং ক্লাসগুলি সম্পাদকে ক্যালেন্ডার কীওয়ার্ড ব্যবহার করে তালিকাভুক্ত করা যেতে পারে।
(ঐচ্ছিক) গুগল ক্লাউড প্রোজেক্ট আপডেট করুন
প্রতিটি Google Apps Script প্রকল্পের সাথে একটি সংযুক্ত Google Cloud প্রকল্প থাকে। আপনার স্ক্রিপ্টটি Google Apps Script স্বয়ংক্রিয়ভাবে তৈরি করা ডিফল্ট প্রকল্পটি ব্যবহার করতে পারে। আপনি যদি একটি কাস্টম Google Cloud প্রকল্প ব্যবহার করতে চান, তাহলে আপনার স্ক্রিপ্টের সাথে সম্পর্কিত প্রকল্পটি আপডেট করার জন্য নিম্নলিখিত পদক্ষেপগুলি গ্রহণ করুন।
- এডিটরের বাম দিকে, Project Settings ক্লিক করুন।
- গুগল ক্লাউড প্ল্যাটফর্ম (জিসিপি) প্রজেক্টের অধীনে, প্রজেক্ট পরিবর্তন করুন এ ক্লিক করুন।
- ডেভেলপার প্রিভিউ প্রোগ্রামে থাকা গুগল ক্লাউড প্রোজেক্টের প্রোজেক্ট নম্বরটি লিখুন এবং প্রোজেক্ট সেট করুন এ ক্লিক করুন।
- বাম দিকে, কোড এডিটরে ফিরে যেতে এডিটর নির্বাচন করুন।
স্ক্রিপ্টে কোড যোগ করুন
নিম্নলিখিত কোড নমুনাটি আপনার প্রাথমিক ক্যালেন্ডারে স্ট্যাটাস ইভেন্টগুলি কীভাবে তৈরি করবেন, পড়বেন এবং তালিকাভুক্ত করবেন তা দেখায়।
কোড এডিটরে নিম্নলিখিতটি পেস্ট করুন।
/** 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 এ ক্লিক করুন।
- প্রথম এক্সিকিউশনে, এটি আপনাকে অ্যাক্সেস অনুমোদন করতে অনুরোধ করবে। পর্যালোচনা করুন এবং অ্যাপস স্ক্রিপ্টকে আপনার ক্যালেন্ডার অ্যাক্সেস করার অনুমতি দিন।
- আপনি উইন্ডোর নীচে প্রদর্শিত এক্সিকিউশন লগে স্ক্রিপ্ট এক্সিকিউশনের ফলাফল পরীক্ষা করতে পারেন।