इस पेज पर, Google Calendar API का इस्तेमाल करके ऐसे इवेंट बनाने का तरीका बताया गया है जिनसे Google Calendar के उपयोगकर्ताओं की स्थिति दिखती है. स्टेटस इवेंट से यह पता चलता है कि उपयोगकर्ता कहां हैं या वे क्या कर रहे हैं. इसमें यह भी शामिल है कि वे फ़ोकस टाइम में हैं, छुट्टी पर हैं या किसी जगह से काम कर रहे हैं.
Google Calendar में, उपयोगकर्ता फ़ोकस टाइम, छुट्टी पर होने, और काम करने की जगह के इवेंट बना सकते हैं. इससे वे अपनी पसंद के मुताबिक स्थिति और जगह की जानकारी दे सकते हैं. ये सुविधाएं सिर्फ़ मुख्य कैलेंडर पर उपलब्ध हैं. साथ ही, ये Google Calendar के कुछ उपयोगकर्ताओं के लिए भी उपलब्ध हैं.
ज़्यादा जानकारी के लिए, Google Calendar में फ़ोकस टाइम का इस्तेमाल करना और उपयोगकर्ताओं के लिए काम करने की जगह की जानकारी को चालू या बंद करना लेख पढ़ें.
कैलेंडर के स्टेटस इवेंट को पढ़ना और उनकी सूची बनाना
Calendar API के Events
संसाधन में, कैलेंडर की स्थिति से जुड़े इवेंट पढ़े जा सकते हैं और उनकी सूची बनाई जा सकती है.
स्टेटस इवेंट को पढ़ने के लिए, events.get
तरीके का इस्तेमाल करें. साथ ही, इवेंट का eventId
तय करें.
स्टेटस इवेंट की सूची बनाने के लिए, events.list
तरीके का इस्तेमाल करें. साथ ही, eventTypes
फ़ील्ड में यहां दी गई एक या उससे ज़्यादा वैल्यू डालें:
'focusTime'
'outOfOffice'
'workingLocation'
इसके बाद, Event
ऑब्जेक्ट में यह देखें कि eventType
फ़ील्ड में अनुरोध की गई वैल्यू मौजूद है या नहीं. साथ ही, Google Calendar में उपयोगकर्ता की ओर से बनाए गए स्टेटस के बारे में ज़्यादा जानने के लिए, इससे जुड़े फ़ील्ड पर जाएं:
स्टेटस इवेंट में होने वाले बदलावों की सूचना पाने के लिए सदस्यता लेना
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
से मेल खाना चाहिए. इससे उपयोगकर्ताओं को Calendar की सभी सुविधाओं का फ़ायदा मिलता है. जैसे, कमरे के सुझाव.workingLocationProperties.officeLocation.label
: यह वह लेबल है जो Calendar के वेब और मोबाइल क्लाइंट पर दिखता है.resources.buildings.list
तरीके का इस्तेमाल करके, बिल्डिंग आईडी और बिल्डिंग लेबल फ़ेच किए जा सकते हैं.
बैच एंडपॉइंट के ज़रिए, काम करने की जगह की जानकारी वाले इवेंट न तो बनाए जा सकते हैं और न ही अपडेट किए जा सकते हैं.
इस सुविधा के बारे में ज़्यादा जानने के लिए, अपने काम के घंटे और जगह की जानकारी सेट करना और उपयोगकर्ताओं के लिए, काम करने की जगह की जानकारी दिखाने की सेटिंग चालू या बंद करना लेख पढ़ें
काम करने की जगह से जुड़े ओवरलैप होने वाले इवेंट दिखाने का तरीका
कोई उपयोगकर्ता अपने कैलेंडर में एक ही समय पर, काम करने की कई जगहों के इवेंट जोड़ सकता है. ये इवेंट एक-दूसरे से ओवरलैप हो सकते हैं. इसका मतलब है कि किसी भी समय के लिए, काम करने की कई जगहों की जानकारी सेट की जा सकती है. जब किसी उपयोगकर्ता को सिर्फ़ एक जगह की जानकारी दिखाई जा सकती है, तो उसे कई ऐप्लिकेशन में लगातार उसी जगह की जानकारी दिखनी चाहिए. ऐसा करते समय, यह तय करने के लिए इन दिशा-निर्देशों का पालन करें कि कौनसी घटना दिखानी है:
- तय समय वाले इवेंट को पूरे दिन होने वाले इवेंट से ज़्यादा प्राथमिकता मिलती है.
- एक बार होने वाले इवेंट को बार-बार होने वाले इवेंट और उनके अपवादों से ज़्यादा प्राथमिकता दी जाती है.
- जो इवेंट बाद में शुरू होते हैं उन्हें उन इवेंट के मुकाबले ज़्यादा प्राथमिकता मिलती है जो पहले शुरू होते हैं.
- कम अवधि वाले इवेंट को ज़्यादा अवधि वाले इवेंट की तुलना में प्राथमिकता दी जाती है.
- हाल ही में बनाए गए इवेंट को, पहले बनाए गए इवेंट के मुकाबले ज़्यादा प्राथमिकता दी जाती है.
- कुछ समय के लिए एक-दूसरे से ओवरलैप होने वाले इवेंट को दो अलग-अलग इवेंट के तौर पर दिखाया जाना चाहिए. साथ ही, हर इवेंट के लिए काम करने की जगह की जानकारी अलग-अलग होनी चाहिए.
Google Apps Script में स्टेटस इवेंट बनाना
Google Apps Script, JavaScript पर आधारित क्लाउड स्क्रिप्टिंग भाषा है. इसकी मदद से, कारोबार के लिए ऐसे ऐप्लिकेशन बनाए जा सकते हैं जो Google Workspace के साथ काम करते हैं. स्क्रिप्ट, ब्राउज़र पर आधारित कोड एडिटर में डेवलप की जाती हैं. साथ ही, इन्हें Google के सर्वर पर सेव और चलाया जाता है. Google Calendar API को अनुरोध भेजने के लिए, Apps Script का इस्तेमाल शुरू करने के लिए, Google Apps Script की क्विकस्टार्ट गाइड भी देखें.
यहां दिए गए निर्देशों में, Google Apps Script में ऐडवांस सेवा के तौर पर Google Calendar API का इस्तेमाल करके, स्टेटस इवेंट मैनेज करने का तरीका बताया गया है. Google Calendar API के संसाधनों और तरीकों की पूरी सूची देखने के लिए, रेफ़रंस दस्तावेज़ देखें.
स्क्रिप्ट बनाना और उसे सेट अप करना
- script.google.com/create पर जाकर, स्क्रिप्ट बनाएं.
- बाईं ओर मौजूद पैनल में, सेवाएं के बगल में, सेवा जोड़ें पर क्लिक करें .
- Google Calendar API को चुनें और जोड़ें पर क्लिक करें.
- चालू होने के बाद, एपीआई बाईं ओर मौजूद पैनल में दिखता है. एपीआई में उपलब्ध तरीकों और क्लास की सूची देखने के लिए, एडिटर में Calendar कीवर्ड का इस्तेमाल किया जा सकता है.
(ज़रूरी नहीं) Google Cloud प्रोजेक्ट अपडेट करना
हर Google Apps Script प्रोजेक्ट, किसी Google Cloud प्रोजेक्ट से जुड़ा होता है. आपकी स्क्रिप्ट, Google Apps Script की ओर से अपने-आप बनाए गए डिफ़ॉल्ट प्रोजेक्ट का इस्तेमाल कर सकती है. अगर आपको कस्टम Google Cloud प्रोजेक्ट का इस्तेमाल करना है, तो अपनी स्क्रिप्ट से जुड़े प्रोजेक्ट को अपडेट करने के लिए, यह तरीका अपनाएं.
- एडिटर की बाईं ओर, प्रोजेक्ट की सेटिंग पर क्लिक करें.
- Google Cloud Platform (GCP) प्रोजेक्ट में जाकर, प्रोजेक्ट बदलें पर क्लिक करें.
- Developer Preview Program में शामिल Google Cloud प्रोजेक्ट का प्रोजेक्ट नंबर डालें. इसके बाद, प्रोजेक्ट सेट करें पर क्लिक करें.
- बाईं ओर, एडिटर को चुनें, ताकि आप वापस कोड एडिटर पर जा सकें.
स्क्रिप्ट में कोड जोड़ना
यहां दिए गए कोड के सैंपल में, मुख्य कैलेंडर पर स्टेटस इवेंट बनाने, पढ़ने, और उनकी सूची बनाने का तरीका बताया गया है.
यहां दिए गए कोड को कोड एडिटर में चिपकाएं.
/** 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}`; }
कोड सैंपल को चलाएं
- कोड एडिटर के ऊपर मौजूद ड्रॉप-डाउन मेन्यू से, चलाने के लिए फ़ंक्शन चुनें. इसके बाद, चलाएं पर क्लिक करें.
- पहली बार इस सुविधा का इस्तेमाल करने पर, आपसे ऐक्सेस करने की अनुमति मांगी जाती है. Apps Script को अपने कैलेंडर का ऐक्सेस देने के लिए, इसकी समीक्षा करें.
- विंडो में सबसे नीचे दिखने वाले Execution Log में, स्क्रिप्ट के नतीजे देखे जा सकते हैं.