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

इस गाइड में कैलेंडर, इवेंट, और एक-दूसरे के साथ उनके संबंध के बारे में जानकारी दी गई है.

कैलेंडर छापने की सेवा

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

इवेंट

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

इवेंट के टाइप

Google Calendar में, एक और बार-बार होने वाले इवेंट का इस्तेमाल किया जा सकता है:

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

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

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

आयोजक

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

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

प्राइमरी कैलेंडर और अन्य कैलेंडर

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

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

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

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

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

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

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

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

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

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

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

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

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

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

बार-बार होने वाले फ़ील्ड में, स्ट्रिंग का एक कलेक्शन होता है. इसमें एक या इससे ज़्यादा RRULE, RDATE या EXDATE प्रॉपर्टी होती हैं. इनके बारे में आरएफ़सी 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 को शुरू होने वाला एक पूरे दिन का इवेंट और उसे पूरे महीने में हर 3 दिन में दोहराया जाएगा. इसमें 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 टाइम ज़ोन आइडेंटिफ़ायर का इस्तेमाल करके टाइम ज़ोन की जानकारी दी जाती है.

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

कैलेंडर का समय क्षेत्र

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

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

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

बार-बार होने वाले इवेंट के लिए, हमेशा एक टाइमज़ोन दिया जाना चाहिए. इवेंट को बार-बार होने वाले इवेंट को बढ़ाने के लिए, इस आईडी को सेट करना ज़रूरी है.