कैलेंडर और इवेंट

इस गाइड में कैलेंडर, इवेंट, और उनके बीच के संबंध के बारे में बताया गया है.

कैलेंडर

कैलेंडर, एक-दूसरे से मिलते-जुलते इवेंट का कलेक्शन होता है. इसमें अन्य मेटाडेटा भी होता है, जैसे कि खास जानकारी, डिफ़ॉल्ट टाइम ज़ोन, जगह वगैरह. हर कैलेंडर की पहचान एक आईडी से होती है, जो एक ईमेल पता होता है. कैलेंडर के एक से ज़्यादा मालिक हो सकते हैं.

इवेंट

इवेंट, किसी खास तारीख या समयसीमा से जुड़ा ऑब्जेक्ट होता है. इवेंट की पहचान, यूनीक आईडी से की जाती है. इवेंट में, शुरू और खत्म होने की तारीख-समय के अलावा, अन्य डेटा भी शामिल होता है. जैसे, खास जानकारी, ब्यौरा, जगह, स्टेटस, रिमाइंडर, अटैचमेंट वगैरह.

इवेंट के टाइप

Google Calendar में सिंगल और बार-बार होने वाले इवेंट बनाने की सुविधा है:

  • एक इवेंट, किसी खास घटना को दिखाता है.
  • बार-बार होने वाले इवेंट में, इवेंट के दोहराए जाने की जानकारी होती है.

इवेंट तय समय या पूरे दिन के लिए भी सेट किए जा सकते हैं:

  • समय पर होने वाला इवेंट, समय के दो खास पॉइंट के बीच होता है. तय समय पर होने वाले इवेंट, start.dateTime और end.dateTime फ़ील्ड का इस्तेमाल करके यह बताते हैं कि वे कब होते हैं.
  • पूरे दिन चलने वाला इवेंट, पूरे दिन या लगातार कई दिनों तक चलता है. पूरे दिन होने वाले इवेंट के होने का समय बताने के लिए, start.date और end.date फ़ील्ड का इस्तेमाल किया जाता है. ध्यान दें कि पूरे दिन चलने वाले इवेंट के लिए, टाइमज़ोन फ़ील्ड का कोई मतलब नहीं है.

आयोजक

इवेंट का एक आयोजक होता है. यह वह कैलेंडर होता है जिसमें इवेंट की मुख्य कॉपी होती है. इवेंट में एक से ज़्यादा मेहमान भी शामिल हो सकते हैं. आम तौर पर, मीटिंग में शामिल होने वाले व्यक्ति का मुख्य कैलेंडर, मीटिंग में शामिल होने के लिए न्योता पाने वाले उपयोगकर्ता का कैलेंडर होता है.

यहां दिया गया डायग्राम, कैलेंडर, इवेंट, और उनसे जुड़े अन्य एलिमेंट के बीच के संबंध को दिखाता है:

मुख्य कैलेंडर और अन्य कैलेंडर

प्राइमरी कैलेंडर, एक उपयोगकर्ता खाते से जुड़ा एक खास तरह का कैलेंडर होता है. यह कैलेंडर, हर नए उपयोगकर्ता खाते के लिए अपने-आप बन जाता है. आम तौर पर, इसका आईडी उपयोगकर्ता के मुख्य ईमेल पते से मेल खाता है. जब तक खाता मौजूद है, तब तक उसका मुख्य कैलेंडर कभी भी मिटाया नहीं जा सकता. इसके अलावा, उपयोगकर्ता उसके "मालिकाना हक" को भी नहीं हटा सकता. हालांकि, इसे अब भी दूसरे उपयोगकर्ताओं के साथ शेयर किया जा सकता है.

प्राइमरी कैलेंडर के अलावा, आपके पास कई और कैलेंडर बनाने का विकल्प होता है. इन कैलेंडर में बदलाव किया जा सकता है, उन्हें मिटाया जा सकता है, और कई उपयोगकर्ताओं के साथ शेयर किया जा सकता है.

कैलेंडर और कैलेंडर की सूची

कैलेंडर कलेक्शन में, सभी मौजूदा कैलेंडर दिखते हैं. इसका इस्तेमाल कैलेंडर बनाने और मिटाने के लिए किया जा सकता है. आपके पास कैलेंडर का ऐक्सेस रखने वाले सभी उपयोगकर्ताओं के साथ शेयर की गई ग्लोबल प्रॉपर्टी को वापस पाने या सेट करने का विकल्प भी होता है. उदाहरण के लिए, कैलेंडर का टाइटल और डिफ़ॉल्ट समय क्षेत्र, ग्लोबल प्रॉपर्टी हैं.

CalendarList, उन सभी कैलेंडर एंट्री का कलेक्शन होता है जिन्हें उपयोगकर्ता ने अपनी सूची में जोड़ा है. यह सूची, वेब यूज़र इंटरफ़ेस के बाएं पैनल में दिखती है. इसका इस्तेमाल करके, उपयोगकर्ताओं की सूची में मौजूदा कैलेंडर जोड़े और हटाए जा सकते हैं. इसका इस्तेमाल, उपयोगकर्ता के हिसाब से कैलेंडर प्रॉपर्टी की वैल्यू को वापस पाने और सेट करने के लिए भी किया जाता है. जैसे, डिफ़ॉल्ट रिमाइंडर. फ़ोरग्राउंड का रंग भी एक उदाहरण है, क्योंकि अलग-अलग उपयोगकर्ताओं के पास एक ही कैलेंडर के लिए अलग-अलग रंग सेट करने का विकल्प होता है.

यहां दी गई टेबल में, दोनों कलेक्शन के लिए ऑपरेशन के मतलब की तुलना की गई है:

कार्रवाई कैलेंडर CalendarList
insert इससे एक नया सेकंडरी कैलेंडर बन जाता है. डिफ़ॉल्ट रूप से, यह कैलेंडर क्रिएटर की कैलेंडर सूची में भी जोड़ दिया जाता है. उपयोगकर्ता की सूची में कोई मौजूदा कैलेंडर डालता है.
delete सेकंडरी कैलेंडर मिटाता है. उपयोगकर्ता की सूची से कैलेंडर को हटाता है.
get कैलेंडर का मेटाडेटा दिखाता है. जैसे, टाइटल, टाइम ज़ोन. मेटाडेटा के साथ-साथ, उपयोगकर्ता के हिसाब से किए गए बदलावों की जानकारी भी पाता है. जैसे, रंग या रिमाइंडर बदलना.
patch/update कैलेंडर के मेटाडेटा में बदलाव करता है. उपयोगकर्ता के हिसाब से कैलेंडर प्रॉपर्टी में बदलाव करता है.

बार-बार होने वाले इवेंट

कुछ इवेंट, नियमित शेड्यूल के हिसाब से कई बार होते हैं. जैसे, हर हफ़्ते होने वाली मीटिंग, जन्मदिन, और छुट्टियां. शुरू और खत्म होने के समय के अलावा, अक्सर ये दोहराए जाने वाले इवेंट एक जैसे होते हैं.

अगर इवेंट किसी तय शेड्यूल के हिसाब से दोहराए जाते हैं, तो उन्हें बार-बार होने वाले इवेंट कहा जाता है. सिंगल इवेंट, बार-बार नहीं होते और सिर्फ़ एक बार होते हैं.

बार-बार होने का नियम

बार-बार होने वाले इवेंट का शेड्यूल दो हिस्सों में तय किया जाता है:

  • इसके शुरू और खत्म होने के फ़ील्ड (जो पहली बार होने की जानकारी देते हैं, जैसे कि यह सिर्फ़ एक स्टैंडअलोन इवेंट है), और

  • दोहराए जाने की जानकारी देने वाला फ़ील्ड (इससे यह तय होता है कि इवेंट को समय के साथ कैसे दोहराया जाना चाहिए).

बार-बार होने वाली कार्रवाई के फ़ील्ड में, एक या एक से ज़्यादा RRULE, RDATE या EXDATE प्रॉपर्टी की जानकारी देने वाली स्ट्रिंग का कलेक्शन होता है. इन प्रॉपर्टी के बारे में RFC 5545 में बताया गया है.

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 नियमों से बाहर रखा गया है.

बार-बार होने वाले इवेंट के कुछ उदाहरण यहां दिए गए हैं:

  1. ऐसा इवेंट जो हर मंगलवार और शुक्रवार सुबह 6 बजे से सुबह 7 बजे तक होता है. यह इवेंट 15 सितंबर, 2015 से शुरू हुआ और 29 सितंबर को पांचवें इवेंट के बाद बंद हो गया:

    ...
    "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"
    ],
    
    
  2. पूरे दिन चलने वाला इवेंट, जो 1 जून, 2015 से शुरू होगा और पूरे महीने में हर तीन दिन के अंतराल पर दोहराया जाएगा. इसमें 10 जून को शामिल नहीं किया जाएगा, लेकिन 9 और 11 जून को शामिल किया जाएगा:

    ...
    "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 की मदद से, बार-बार होने वाले इवेंट और इंस्टेंस के साथ काम करने का तरीका जानने के लिए, यहां जाएं.

समय क्षेत्र

टाइम ज़ोन से किसी ऐसे इलाके के बारे में पता चलता है जहां एक जैसा स्टैंडर्ड टाइम लागू होता है. Google Calendar API में, IANA टाइम ज़ोन आइडेंटिफ़ायर का इस्तेमाल करके टाइम ज़ोन तय किए जाते हैं.

कैलेंडर और इवेंट, दोनों के लिए टाइम ज़ोन सेट किया जा सकता है. नीचे दिए गए सेक्शन में, इन सेटिंग के असर के बारे में बताया गया है.

Calendar का टाइम ज़ोन

कैलेंडर के टाइम ज़ोन को डिफ़ॉल्ट टाइम ज़ोन भी कहा जाता है. ऐसा इसलिए, क्योंकि क्वेरी के नतीजों पर इसका असर पड़ता है. कैलेंडर के टाइम ज़ोन से, समय की वैल्यू को 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 फ़ील्ड का इस्तेमाल करें.

अगर आप चाहें, तो इवेंट के समय को यूटीसी में भी बताया जा सकता है:

  • यूटीसी में समय बताएं: 2017-01-25T14:00:00Z या शून्य ऑफ़सेट 2017-01-25T14:00:00+0000 का इस्तेमाल करें.

इन सभी मामलों में, इवेंट के समय का इंटरनल दिखावट एक जैसा होता है. हालांकि, timeZone फ़ील्ड सेट करने पर, इवेंट में टाइम ज़ोन जुड़ जाता है. ठीक उसी तरह जैसे Calendar के यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके, इवेंट का टाइम ज़ोन सेट करने पर होता है:

किसी इवेंट का टाइम ज़ोन दिखाने वाला स्क्रीनशॉट फ़्रैगमेंट

बार-बार होने वाले इवेंट का टाइम ज़ोन

बार-बार होने वाले इवेंट के लिए, हमेशा एक ही टाइमज़ोन तय करना ज़रूरी है. इवेंट के दोहराए जाने की अवधि बढ़ाने के लिए, यह ज़रूरी है.