এই নির্দেশিকাটি ক্যালেন্ডার, ঘটনা এবং তাদের একে অপরের সাথে সম্পর্ক বর্ণনা করে।
ক্যালেন্ডার
ক্যালেন্ডার হলো সম্পর্কিত ইভেন্টের একটি সংগ্রহ, যার সাথে অতিরিক্ত মেটাডেটা যেমন সারাংশ, ডিফল্ট সময় অঞ্চল, অবস্থান ইত্যাদি থাকে। প্রতিটি ক্যালেন্ডার একটি আইডি দ্বারা চিহ্নিত করা হয়, যা একটি ইমেল ঠিকানা। ক্যালেন্ডারগুলি অন্যদের সাথে ভাগ করা যেতে পারে। প্রাথমিক ক্যালেন্ডারগুলি তাদের সংশ্লিষ্ট ব্যবহারকারী অ্যাকাউন্টের মালিকানাধীন, অন্যান্য ক্যালেন্ডারগুলি একক ডেটা মালিকের মালিকানাধীন।
ইভেন্টগুলি
একটি ইভেন্ট হল একটি নির্দিষ্ট তারিখ বা সময়সীমার সাথে সম্পর্কিত একটি বস্তু। ইভেন্টগুলি একটি অনন্য আইডি দ্বারা চিহ্নিত করা হয়। শুরু এবং শেষ তারিখ-সময় ছাড়াও, ইভেন্টগুলিতে সারাংশ, বিবরণ, অবস্থান, স্থিতি, অনুস্মারক, সংযুক্তি ইত্যাদির মতো অন্যান্য ডেটা থাকে।
ইভেন্টের ধরণ
গুগল ক্যালেন্ডার একক এবং পুনরাবৃত্ত ইভেন্ট সমর্থন করে:
- একটি ঘটনা একটি অনন্য ঘটনার প্রতিনিধিত্ব করে।
- একটি পুনরাবৃত্ত ঘটনা একাধিক ঘটনার সংজ্ঞা দেয়।
ইভেন্টগুলি সময়সূচী অনুসারে বা সারাদিন ধরেও হতে পারে:
- একটি নির্দিষ্ট সময়ের দুটি নির্দিষ্ট বিন্দুর মধ্যে একটি টাইমড ইভেন্ট ঘটে। টাইমড ইভেন্টগুলি কখন ঘটবে তা নির্দিষ্ট করার জন্য
start.dateTimeএবংend.dateTimeক্ষেত্র ব্যবহার করে। - একটি সারাদিনের ইভেন্ট পুরো একটা দিন বা একটানা দিনের সিরিজ জুড়ে বিস্তৃত। সারাদিনের ইভেন্টগুলি কখন ঘটবে তা নির্দিষ্ট করার জন্য
start.dateএবংend.dateফিল্ড ব্যবহার করে। মনে রাখবেন যে সারাদিনের ইভেন্টগুলির জন্য টাইমজোন ফিল্ডের কোনও তাৎপর্য নেই।
আয়োজকরা
ইভেন্টগুলির একটি মাত্র সংগঠক থাকে যা হল ক্যালেন্ডার যেখানে ইভেন্টের মূল কপি থাকে। ইভেন্টগুলিতে একাধিক অংশগ্রহণকারীও থাকতে পারে। একজন অংশগ্রহণকারী সাধারণত একজন আমন্ত্রিত ব্যবহারকারীর প্রাথমিক ক্যালেন্ডার।
নিম্নলিখিত চিত্রটি ক্যালেন্ডার, ইভেন্ট এবং অন্যান্য সম্পর্কিত উপাদানগুলির মধ্যে ধারণাগত সম্পর্ক দেখায়:

প্রাথমিক ক্যালেন্ডার এবং অন্যান্য ক্যালেন্ডার
একটি প্রাথমিক ক্যালেন্ডার হল একটি বিশেষ ধরণের ক্যালেন্ডার যা একটি একক ব্যবহারকারীর অ্যাকাউন্টের সাথে যুক্ত। এই ক্যালেন্ডারটি প্রতিটি নতুন ব্যবহারকারীর অ্যাকাউন্টের জন্য স্বয়ংক্রিয়ভাবে তৈরি হয় এবং এর আইডি সাধারণত ব্যবহারকারীর প্রাথমিক ইমেল ঠিকানার সাথে মিলে যায়। যতক্ষণ পর্যন্ত অ্যাকাউন্টটি বিদ্যমান থাকবে, ততক্ষণ পর্যন্ত এর প্রাথমিক ক্যালেন্ডারটি ব্যবহারকারী কখনই মুছে ফেলতে বা "মালিকানাধীন" করতে পারবেন না। তবে, এটি এখনও অন্যান্য ব্যবহারকারীদের সাথে ভাগ করা যেতে পারে।
প্রাথমিক ক্যালেন্ডার ছাড়াও, আপনি স্পষ্টভাবে অন্যান্য যেকোনো ক্যালেন্ডার তৈরি করতে পারেন। এই ক্যালেন্ডারগুলি পরিবর্তন করা, মুছে ফেলা এবং অন্যদের সাথে ভাগ করা যেতে পারে। এই ধরনের ক্যালেন্ডারগুলিতে একজন ডেটা মালিকের সর্বোচ্চ সুযোগ-সুবিধা থাকে, যার মধ্যে ক্যালেন্ডার মুছে ফেলার একচেটিয়া অধিকারও অন্তর্ভুক্ত। ডেটা মালিকের অ্যাক্সেস লেভেল ডাউনগ্রেড করা যাবে না। ডেটা মালিককে প্রাথমিকভাবে ক্যালেন্ডার তৈরিকারী ব্যবহারকারী হিসাবে নির্ধারণ করা হয়, তবে ডেটা মালিকানা Google ক্যালেন্ডার UI-তে স্থানান্তর করা যেতে পারে।
ক্যালেন্ডার এবং ক্যালেন্ডার তালিকা
ক্যালেন্ডার সংগ্রহটি সমস্ত বিদ্যমান ক্যালেন্ডারের প্রতিনিধিত্ব করে। এটি ক্যালেন্ডার তৈরি এবং মুছে ফেলার জন্য ব্যবহার করা যেতে পারে। আপনি ক্যালেন্ডারে অ্যাক্সেস সহ সমস্ত ব্যবহারকারীর মধ্যে ভাগ করা গ্লোবাল বৈশিষ্ট্যগুলি পুনরুদ্ধার বা সেট করতে পারেন। উদাহরণস্বরূপ, একটি ক্যালেন্ডারের শিরোনাম এবং ডিফল্ট সময় অঞ্চল হল গ্লোবাল বৈশিষ্ট্য।
ক্যালেন্ডারলিস্ট হল সমস্ত ক্যালেন্ডার এন্ট্রির একটি সংগ্রহ যা একজন ব্যবহারকারী তাদের তালিকায় যোগ করেছেন (ওয়েব UI এর বাম প্যানেলে দেখানো হয়েছে)। আপনি এটি ব্যবহার করে ব্যবহারকারীদের তালিকায়/থেকে বিদ্যমান ক্যালেন্ডার যোগ করতে এবং সরাতে পারেন। আপনি এটি ব্যবহারকারী-নির্দিষ্ট ক্যালেন্ডার বৈশিষ্ট্যের মান পুনরুদ্ধার এবং সেট করতেও ব্যবহার করতে পারেন, যেমন ডিফল্ট অনুস্মারক। আরেকটি উদাহরণ হল ফোরগ্রাউন্ড রঙ, যেহেতু বিভিন্ন ব্যবহারকারী একই ক্যালেন্ডারের জন্য বিভিন্ন রঙ সেট করতে পারেন।
নিম্নলিখিত টেবিলটি দুটি সংগ্রহের জন্য ক্রিয়াকলাপের অর্থের তুলনা করে:
| অপারেশন | ক্যালেন্ডার | ক্যালেন্ডার তালিকা |
|---|---|---|
insert | একটি নতুন গৌণ ক্যালেন্ডার তৈরি করে। এই ক্যালেন্ডারটি স্রষ্টার ক্যালেন্ডার তালিকায়ও যোগ করা হয়, এবং ক্যালেন্ডারটি মুছে ফেলা বা স্থানান্তরিত না করা পর্যন্ত এটি সরানো যাবে না। | ব্যবহারকারীর তালিকায় একটি বিদ্যমান ক্যালেন্ডার সন্নিবেশ করায়। |
delete | একটি গৌণ ক্যালেন্ডার মুছে ফেলে। | ব্যবহারকারীর তালিকা থেকে একটি ক্যালেন্ডার সরিয়ে দেয়। |
get | ক্যালেন্ডার মেটাডেটা যেমন শিরোনাম, সময় অঞ্চল পুনরুদ্ধার করে। | মেটাডেটা এবং ব্যবহারকারী-নির্দিষ্ট কাস্টমাইজেশন যেমন রঙ বা ওভাররাইড রিমাইন্ডার পুনরুদ্ধার করে। |
patch / update | ক্যালেন্ডার মেটাডেটা পরিবর্তন করে। | ব্যবহারকারী-নির্দিষ্ট ক্যালেন্ডার বৈশিষ্ট্য পরিবর্তন করে। |
পুনরাবৃত্ত ইভেন্ট
কিছু ঘটনা নিয়মিত সময়সূচীতে একাধিকবার ঘটে, যেমন সাপ্তাহিক সভা, জন্মদিন এবং ছুটির দিন। শুরু এবং শেষের সময় ভিন্ন হওয়া ছাড়াও, এই পুনরাবৃত্তিমূলক ঘটনাগুলি প্রায়শই একই রকম হয়।
নির্দিষ্ট সময়সূচী অনুসারে পুনরাবৃত্তি হলে ঘটনাগুলিকে পুনরাবৃত্ত বলা হয়। একক ঘটনা পুনরাবৃত্তিহীন এবং কেবল একবারই ঘটে।
পুনরাবৃত্তির নিয়ম
একটি পুনরাবৃত্ত ইভেন্টের সময়সূচী দুটি অংশে সংজ্ঞায়িত করা হয়েছে:
এর শুরু এবং শেষ ক্ষেত্র (যা প্রথম ঘটনাকে সংজ্ঞায়িত করে, যেন এটি কেবল একটি স্বতন্ত্র একক ঘটনা), এবং
এর পুনরাবৃত্তি ক্ষেত্র (যা সময়ের সাথে সাথে ঘটনাটি কীভাবে পুনরাবৃত্তি করা উচিত তা নির্ধারণ করে)।
পুনরাবৃত্তি ক্ষেত্রে RFC 5545 তে সংজ্ঞায়িত এক বা একাধিক RRULE , RDATE বা EXDATE বৈশিষ্ট্য উপস্থাপন করে এমন স্ট্রিংগুলির একটি অ্যারে রয়েছে।
RRULE বৈশিষ্ট্যটি সবচেয়ে গুরুত্বপূর্ণ কারণ এটি ঘটনার পুনরাবৃত্তির জন্য একটি নিয়মিত নিয়ম সংজ্ঞায়িত করে। এটি বেশ কয়েকটি উপাদান নিয়ে গঠিত। এর মধ্যে কয়েকটি হল:
FREQ— ঘটনাটি কতবার পুনরাবৃত্তি করা উচিত (যেমনDAILYবাWEEKLY)। প্রয়োজনীয়।INTERVAL—FREQসাথে একসাথে কাজ করে ইভেন্টটি কতবার পুনরাবৃত্তি করা উচিত তা নির্দিষ্ট করে। উদাহরণস্বরূপ,FREQ=DAILY;INTERVAL=2মানে প্রতি দুই দিনে একবার।COUNT— এই ঘটনাটি কতবার পুনরাবৃত্তি করা উচিত।UNTIL— যে তারিখ বা তারিখ-সময় পর্যন্ত ঘটনাটি পুনরাবৃত্তি করা উচিত (সমেত)।BYDAY— সপ্তাহের যে দিনগুলিতে ঘটনাটি পুনরাবৃত্তি করা উচিত (SU,MO,TU, ইত্যাদি)। অন্যান্য অনুরূপ উপাদানগুলির মধ্যে রয়েছেBYMONTH,BYYEARDAY, এবংBYHOUR।
RDATE প্রোপার্টি অতিরিক্ত তারিখ বা তারিখ-সময় নির্দিষ্ট করে যখন ইভেন্টটি ঘটবে। উদাহরণস্বরূপ, RDATE;VALUE=DATE:19970101,19970120 । RRULE দ্বারা আওতাভুক্ত নয় এমন অতিরিক্ত ঘটনা যোগ করতে এটি ব্যবহার করুন।
EXDATE প্রপার্টিটি RDATE এর অনুরূপ, কিন্তু কখন ঘটনাটি ঘটবে না তা তারিখ বা তারিখ-সময় নির্দিষ্ট করে। অর্থাৎ, সেই ঘটনাগুলি বাদ দেওয়া উচিত। এটি পুনরাবৃত্তি নিয়ম দ্বারা তৈরি একটি বৈধ উদাহরণ নির্দেশ করবে।
EXDATE এবং RDATE একটি টাইম জোন থাকতে পারে এবং সারাদিনের ইভেন্টের জন্য তারিখ (তারিখ-সময় নয়) হতে হবে।
প্রতিটি বৈশিষ্ট্য পুনরাবৃত্তি ক্ষেত্রের মধ্যে একাধিকবার ঘটতে পারে। পুনরাবৃত্তিকে সমস্ত RRULE এবং RDATE নিয়মের মিলন হিসাবে সংজ্ঞায়িত করা হয়, সমস্ত EXDATE নিয়ম দ্বারা বাদ দেওয়া নিয়মগুলি বাদ দিয়ে।
এখানে পুনরাবৃত্ত ঘটনার কিছু উদাহরণ দেওয়া হল:
১৫ সেপ্টেম্বর, ২০১৫ থেকে শুরু করে প্রতি মঙ্গলবার ও শুক্রবার সকাল ৬টা থেকে ৭টা পর্যন্ত অনুষ্ঠিত একটি ইভেন্ট এবং ২৯ সেপ্টেম্বর পঞ্চম ঘটনার পর থামবে:
... "start": { "dateTime": "2015-09-15T06:00:00+02:00", "timeZone": "Europe/Zurich" }, "end": { "dateTime": "2015-09-15T07:00:00+02:00", "timeZone": "Europe/Zurich" }, "recurrence": [ "RRULE:FREQ=WEEKLY;COUNT=5;BYDAY=TU,FR" ], …১ জুন, ২০১৫ থেকে শুরু হওয়া এবং মাসজুড়ে প্রতি ৩ দিন অন্তর পুনরাবৃত্তি হওয়া একটি পুরোদিনব্যাপী অনুষ্ঠান, ১০ জুন বাদে কিন্তু ৯ ও ১১ জুন সহ:
... "start": { "date": "2015-06-01" }, "end": { "date": "2015-06-02" }, "recurrence": [ "EXDATE;VALUE=DATE:20150610", "RDATE;VALUE=DATE:20150609,20150611", "RRULE:FREQ=DAILY;UNTIL=20150628;INTERVAL=3" ], …
উদাহরণ এবং ব্যতিক্রম
একটি পুনরাবৃত্ত ঘটনা বেশ কয়েকটি ঘটনা নিয়ে গঠিত: বিভিন্ন সময়ে এর নির্দিষ্ট ঘটনা। এই ঘটনাগুলি নিজেই ঘটনা হিসাবে কাজ করে।
পুনরাবৃত্ত ইভেন্ট পরিবর্তনগুলি হয় পুরো পুনরাবৃত্ত ইভেন্ট (এবং এর সমস্ত উদাহরণ) কে প্রভাবিত করতে পারে, অথবা শুধুমাত্র পৃথক উদাহরণগুলিকে প্রভাবিত করতে পারে। যেসব উদাহরণ তাদের মূল পুনরাবৃত্ত ইভেন্ট থেকে পৃথক হয় তাদের ব্যতিক্রম বলা হয়।
উদাহরণস্বরূপ, একটি ব্যতিক্রমের সারাংশ ভিন্ন হতে পারে, শুরুর সময় ভিন্ন হতে পারে, অথবা শুধুমাত্র সেই ইনস্ট্যান্সে অতিরিক্ত অংশগ্রহণকারীদের আমন্ত্রণ জানানো হতে পারে। আপনি পুনরাবৃত্ত ইভেন্টটি না সরিয়েও একটি ইনস্ট্যান্স সম্পূর্ণরূপে বাতিল করতে পারেন (ইনস্ট্যান্স বাতিলকরণ ইভেন্ট status প্রতিফলিত হয়)।
গুগল ক্যালেন্ডার এপিআই-এর মাধ্যমে পুনরাবৃত্ত ইভেন্ট এবং ইনস্ট্যান্সগুলির সাথে কীভাবে কাজ করবেন তার উদাহরণ এখানে পাওয়া যাবে।
সময় অঞ্চল
একটি সময় অঞ্চল এমন একটি অঞ্চলকে নির্দিষ্ট করে যা একটি অভিন্ন মান সময় পালন করে। Google Calendar API-তে, আপনি IANA সময় অঞ্চল শনাক্তকারী ব্যবহার করে সময় অঞ্চল নির্দিষ্ট করেন।
আপনি ক্যালেন্ডার এবং ইভেন্ট উভয়ের জন্যই সময় অঞ্চল সেট করতে পারেন। নিম্নলিখিত বিভাগগুলি এই সেটিংসের প্রভাব বর্ণনা করে।
ক্যালেন্ডারের সময় অঞ্চল
ক্যালেন্ডারের টাইম জোনকে ডিফল্ট টাইম জোনও বলা হয় কারণ এর কোয়েরি ফলাফলের উপর প্রভাব পড়ে। ক্যালেন্ডার টাইম জোন events.get() , events.list() , এবং events.instances() পদ্ধতি দ্বারা সময়ের মানগুলি কীভাবে ব্যাখ্যা বা উপস্থাপন করা হয় তা প্রভাবিত করে।
- কোয়েরি ফলাফলের সময়-অঞ্চল রূপান্তর
-
get(),list(), এবংinstances()পদ্ধতির ফলাফলগুলিtimeZoneপ্যারামিটারে আপনার নির্দিষ্ট করা টাইম জোনে ফেরত পাঠানো হয়। যদি আপনি এই প্যারামিটারটি বাদ দেন, তাহলে এই সমস্ত পদ্ধতিগুলি ডিফল্ট হিসাবে ক্যালেন্ডার টাইম জোন ব্যবহার করে। - সারাদিনের ইভেন্টগুলিকে সময়-বন্ধনীযুক্ত প্রশ্নের সাথে মেলানো
-
list()এবংinstances()পদ্ধতিগুলি আপনাকে শুরু এবং শেষের সময় ফিল্টার নির্দিষ্ট করতে দেয়, এবং পদ্ধতিটি নির্দিষ্ট পরিসরে থাকা দৃষ্টান্তগুলি ফেরত দেয়। ক্যালেন্ডার টাইম জোনটি সারা দিনের ইভেন্টগুলির শুরু এবং শেষের সময় গণনা করতে ব্যবহৃত হয় যাতে তারা ফিল্টার স্পেসিফিকেশনের মধ্যে পড়ে কিনা তা নির্ধারণ করা যায়।
ইভেন্টের সময় অঞ্চল
ইভেন্টের ইনস্ট্যান্সের শুরু এবং শেষের সময় থাকে; এই সময়ের স্পেসিফিকেশনে টাইম জোন অন্তর্ভুক্ত থাকতে পারে। আপনি বিভিন্ন উপায়ে টাইম জোন নির্দিষ্ট করতে পারেন; নিম্নলিখিতগুলি একই সময় নির্দিষ্ট করে:
-
dateTimeক্ষেত্রে একটি টাইম জোন অফসেট অন্তর্ভুক্ত করুন, উদাহরণস্বরূপ2017-01-25T09:00:00-0500। - কোনও অফসেট ছাড়াই সময় নির্দিষ্ট করুন, উদাহরণস্বরূপ
2017-01-25T09:00:00,timeZoneক্ষেত্রটি খালি রেখে (এটি পরোক্ষভাবে ডিফল্ট সময় অঞ্চল ব্যবহার করে)। - অফসেট ছাড়াই সময় নির্দিষ্ট করুন, উদাহরণস্বরূপ
2017-01-25T09:00:00, কিন্তু সময় অঞ্চল নির্দিষ্ট করতেtimeZoneক্ষেত্রটি ব্যবহার করুন।
আপনি যদি চান তাহলে UTC-তে ইভেন্টের সময়ও নির্দিষ্ট করতে পারেন:
- UTC তে সময় উল্লেখ করুন:
2017-01-25T14:00:00Zঅথবা একটি শূন্য অফসেট ব্যবহার করুন2017-01-25T14:00:00+0000।
এই সকল ক্ষেত্রে ইভেন্ট টাইমের অভ্যন্তরীণ উপস্থাপনা একই রকম, কিন্তু timeZone ফিল্ড সেট করলে ইভেন্টের সাথে একটি টাইম জোন সংযুক্ত হয়, ঠিক যেমন আপনি Calendar UI ব্যবহার করে একটি ইভেন্ট টাইম জোন সেট করেন :

পুনরাবৃত্ত ইভেন্টের সময় অঞ্চল
পুনরাবৃত্ত ইভেন্টের জন্য সর্বদা একটি একক টাইমজোন নির্দিষ্ট করতে হবে। ইভেন্টের পুনরাবৃত্তি প্রসারিত করার জন্য এটি প্রয়োজন।