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

इस गाइड में कैलेंडर, इवेंट, और एक-दूसरे के साथ उनके रिश्ते के बारे में बताया गया है.

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

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

इवेंट

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

इवेंट के टाइप

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 टाइम ज़ोन आइडेंटिफ़ायर का इस्तेमाल करके टाइम ज़ोन की जानकारी दी जाती है.

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

कैलेंडर का टाइम ज़ोन

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

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

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

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