इस पेज पर Google Calendar API का इस्तेमाल करके, ऐसे इवेंट बनाने का तरीका बताया गया है जो Google Calendar इस्तेमाल करने वाले लोगों की स्थिति दिखाते हैं. स्टेटस इवेंट से पता चलता है कि उपयोगकर्ता कहां हैं या वे क्या कर रहे हैं. इनमें यह भी शामिल होता है कि वे फ़ोकस टाइम में हैं, छुट्टी पर हैं या किसी खास जगह से काम कर रहे हैं.
Google Calendar में, उपयोगकर्ता फ़ोकस टाइम, छुट्टी पर होने, और काम करने की जगह के इवेंट बनाकर अपने कस्टम स्टेटस और जगह के बारे में बता सकते हैं. ये सुविधाएं सिर्फ़ मुख्य कैलेंडर और Google Calendar के कुछ उपयोगकर्ताओं के लिए उपलब्ध हैं.
ज़्यादा जानकारी के लिए, Google Calendar में फ़ोकस टाइम इस्तेमाल करें पर जाएं. इसके बाद, अपने काम करने की जगह की जानकारी को चालू या बंद करें पर जाएं.
Calendar पर सेट की गई स्थिति वाले इवेंट पढ़ें और उनकी सूची बनाएं
Calendar API के
Events
संसाधन में, Calendar की स्थिति वाले इवेंट पढ़े और उनकी सूची बनाई जा सकती है.
स्टेटस इवेंट को पढ़ने के लिए, events.get
तरीके का इस्तेमाल करें. इसमें इवेंट के eventId
के बारे में जानकारी दें.
स्टेटस वाले इवेंट की सूची बनाने के लिए, events.list
तरीके का इस्तेमाल करें. इसके लिए, eventTypes
फ़ील्ड में इनमें से एक या एक से ज़्यादा वैल्यू डालें:
'focusTime'
'outOfOffice'
'workingLocation'
इसके बाद, दिखाए गए Event
ऑब्जेक्ट में, जांच करें कि eventType
फ़ील्ड में अनुरोध की गई वैल्यू है या नहीं. साथ ही, उपयोगकर्ता ने Google Calendar में जो स्थिति बनाई है उसकी जानकारी के लिए, उससे जुड़े फ़ील्ड पर जाएं:
Calendar पर सेट की गई स्थिति वाले इवेंट बनाना और उन्हें अपडेट करना
स्टेटस इवेंट बनाने के लिए, आपको 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) प्रोजेक्ट में जाकर, प्रोजेक्ट बदलें पर क्लिक करें.
- 'डेवलपर झलक कार्यक्रम' में मौजूद Google Cloud प्रोजेक्ट का प्रोजेक्ट नंबर डालें और प्रोजेक्ट सेट करें पर क्लिक करें.
- कोड एडिटर पर वापस जाने के लिए, बाईं ओर मौजूद Editor चुनें.
स्क्रिप्ट में कोड जोड़ें
यहां दिए गए कोड सैंपल में, आपके मुख्य कैलेंडर पर स्टेटस इवेंट बनाने, पढ़ने, और उनकी सूची बनाने का तरीका बताया गया है.
इसे कोड एडिटर में चिपकाएं.
/** 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/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/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/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/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 को अपना कैलेंडर ऐक्सेस करने की अनुमति दें और इसकी समीक्षा करें.
- विंडो के सबसे नीचे दिखने वाले एक्ज़ीक्यूशन लॉग में जाकर, स्क्रिप्ट चलने के नतीजों की जांच की जा सकती है.