ফোকাস সময়, অফিসের বাইরে এবং কাজের অবস্থানের ইভেন্টগুলি পরিচালনা করুন

এই পৃষ্ঠাটি ব্যাখ্যা করে যে কীভাবে Google ক্যালেন্ডার ব্যবহারকারীদের অবস্থা দেখায় এমন ইভেন্ট তৈরি করতে Google ক্যালেন্ডার API ব্যবহার করতে হয়। স্ট্যাটাস ইভেন্টগুলি বর্ণনা করে যে ব্যবহারকারীরা কোথায় আছেন বা তারা কী করছেন, তারা ফোকাস টাইমে আছেন কিনা, অফিসের বাইরে আছেন কিনা বা একটি নির্দিষ্ট অবস্থান থেকে কাজ করছেন।

Google ক্যালেন্ডারে, ব্যবহারকারীরা তাদের কাস্টম স্থিতি এবং অবস্থান নির্দেশ করতে ফোকাস সময়, অফিসের বাইরে এবং কাজের অবস্থানের ইভেন্ট তৈরি করতে পারে। এই বৈশিষ্ট্যগুলি শুধুমাত্র প্রাথমিক ক্যালেন্ডারে এবং কিছু Google ক্যালেন্ডার ব্যবহারকারীদের জন্য উপলব্ধ৷

আরও বিশদ বিবরণের জন্য, Google ক্যালেন্ডারে ফোকাস সময় ব্যবহার করুন এবং ব্যবহারকারীদের জন্য কাজের অবস্থান চালু বা বন্ধ করুন এ যান

পড়ুন এবং ক্যালেন্ডার স্থিতি ইভেন্ট তালিকা

আপনি ক্যালেন্ডার API এর Events রিসোর্সে ক্যালেন্ডার স্থিতি ইভেন্টগুলি পড়তে এবং তালিকাভুক্ত করতে পারেন৷

একটি স্ট্যাটাস ইভেন্ট পড়তে, events.get পদ্ধতি ব্যবহার করুন, ইভেন্টের eventId উল্লেখ করে।

স্থিতি ইভেন্টগুলি তালিকাভুক্ত করতে, eventTypes ক্ষেত্রে নিম্নলিখিত এক বা একাধিক মান উল্লেখ করে, events.list পদ্ধতি ব্যবহার করুন:

  • 'focusTime'
  • 'outOfOffice'
  • 'workingLocation'

তারপরে, প্রত্যাবর্তিত Event অবজেক্টে, eventType ক্ষেত্রের অনুরোধকৃত মান আছে কিনা তা পরীক্ষা করুন এবং Google ক্যালেন্ডারে ব্যবহারকারীর দ্বারা তৈরি স্থিতি সম্পর্কে বিশদ বিবরণের জন্য সংশ্লিষ্ট ক্ষেত্রটি পড়ুন:

অবস্থা ইভেন্টে পরিবর্তন সাবস্ক্রাইব করুন

আপনি ক্যালেন্ডার API এর Events রিসোর্সে স্থিতি ইভেন্টে পরিবর্তনের সদস্যতা নিতে পারেন।

events.watch পদ্ধতি ব্যবহার করুন, সদস্যতা নিতে ক্যালেন্ডারের calendarId উল্লেখ করে এবং eventTypes ক্ষেত্রে নিম্নলিখিত মানগুলির মধ্যে এক বা একাধিক:

  • 'focusTime'
  • 'outOfOffice'
  • 'workingLocation'

ক্যালেন্ডার স্থিতি ইভেন্টগুলি তৈরি এবং আপডেট করুন৷

একটি স্ট্যাটাস ইভেন্ট তৈরি করতে, আপনি events.insert পদ্ধতি ব্যবহার করে Events রিসোর্সের একটি উদাহরণ তৈরি করুন, ইভেন্ট প্রকারের জন্য প্রয়োজনীয় ক্ষেত্রগুলি সেট করুন।

আপনি যদি events.update পদ্ধতি ব্যবহার করে স্থিতি ইভেন্ট আপডেট করেন, ইভেন্টটি অবশ্যই প্রয়োজনীয় ক্ষেত্রগুলি বজায় রাখতে হবে।

ফোকাস সময় তৈরি করুন

ফোকাস টাইম ইভেন্ট তৈরি করতে:

  • eventType 'focusTime' এ সেট করুন।
  • focusTimeProperties ক্ষেত্র অন্তর্ভুক্ত করুন।
  • transparency ক্ষেত্রটি 'opaque' এ সেট করুন।
  • ইভেন্টের start এবং end ক্ষেত্রগুলিকে একটি টাইমড ইভেন্ট হিসাবে সেট করুন (শুরু এবং শেষের সময় নির্দিষ্ট করা আছে)।
    ফোকাস সময় সারাদিনের ইভেন্ট হতে পারে না।

বৈশিষ্ট্যের বিশদ বিবরণের জন্য, Google ক্যালেন্ডারে ফোকাস সময় ব্যবহার করুন- এ যান

অফিসের বাইরে তৈরি করুন

অফিসের বাইরে একটি ইভেন্ট তৈরি করতে:

  • eventType 'outOfOffice' এ সেট করুন।
  • outOfOfficeProperties ক্ষেত্র অন্তর্ভুক্ত করুন।
  • transparency ক্ষেত্রটি 'opaque' এ সেট করুন।
  • ইভেন্টের start এবং end ক্ষেত্রগুলিকে একটি টাইমড ইভেন্ট হিসাবে সেট করুন (শুরু এবং শেষের সময় নির্দিষ্ট করা আছে)।
    অফিসের বাইরে ইভেন্ট সারাদিনের ইভেন্ট হতে পারে না।

বৈশিষ্ট্যের বিশদ বিবরণের জন্য, আপনি যখন অফিসের বাইরে থাকবেন তখন শোতে যান

কাজের অবস্থান তৈরি করুন

একটি কাজের অবস্থান ইভেন্ট তৈরি করতে:

  • eventType 'workingLocation' এ সেট করুন।
  • workingLocationProperties ক্ষেত্র অন্তর্ভুক্ত করুন।
  • visibility ক্ষেত্রটি 'public' এ সেট করুন।
  • transparency ক্ষেত্রটি 'transparent' এ সেট করুন।
  • ইভেন্টের start এবং end ক্ষেত্রগুলি হতে সেট করুন:

    • একটি টাইমড ইভেন্ট (শুরু এবং শেষ সময় নির্দিষ্ট করা আছে);
    • একটি সারাদিনের ইভেন্ট (শুরু এবং শেষের তারিখ নির্দিষ্ট করে) যা ঠিক একদিন জুড়ে থাকে।

    সারাদিনের কাজের অবস্থানের ইভেন্টগুলি একাধিক দিন ব্যপ্ত হতে পারে না, তবে সময়ের ইভেন্ট হতে পারে।

নিম্নলিখিত ক্ষেত্রগুলি ঐচ্ছিক কিন্তু একটি officeLocation সন্নিবেশ করার সময় সর্বোত্তম ব্যবহারকারীর অভিজ্ঞতার জন্য সুপারিশ করা হয়:

  • workingLocationProperties.officeLocation.buildingId : এটি প্রতিষ্ঠানের রিসোর্স ডাটাবেসের একটি buildingId সাথে মেলে। এটি ব্যবহারকারীদের সমস্ত ক্যালেন্ডার বৈশিষ্ট্যগুলি থেকে উপকৃত হতে সাহায্য করে, উদাহরণস্বরূপ রুমের পরামর্শ৷
  • workingLocationProperties.officeLocation.label : এটি সেই লেবেল যা ক্যালেন্ডার ওয়েব এবং মোবাইল ক্লায়েন্টে দেখানো হয়। আপনি resources.buildings.list পদ্ধতি ব্যবহার করে বিল্ডিং আইডি এবং বিল্ডিং লেবেল আনতে পারেন।

ব্যাচ এন্ডপয়েন্টের মাধ্যমে কাজের লোকেশন ইভেন্ট তৈরি এবং আপডেট করা সমর্থিত নয়।

বৈশিষ্ট্যের বিবরণের জন্য, আপনার কাজের সময় এবং অবস্থান সেট করুন এবং ব্যবহারকারীদের জন্য কাজের অবস্থান চালু বা বন্ধ করুন এ যান

ওভারল্যাপিং কাজের অবস্থান ইভেন্টগুলি কীভাবে দেখাবেন

একজন ব্যবহারকারী তাদের ক্যালেন্ডারে একই সময়ে একাধিক কাজের অবস্থানের ইভেন্ট থাকতে পারে যা ওভারল্যাপ করে, যার অর্থ যে কোনও নির্দিষ্ট সময়ের জন্য একাধিক কাজের অবস্থান সেট থাকতে পারে। পরিস্থিতিতে যখন শুধুমাত্র একটি একক অবস্থান ব্যবহারকারীকে দেখানো যেতে পারে, তাদের একাধিক অ্যাপ্লিকেশন জুড়ে ধারাবাহিকভাবে সেই অবস্থানটি দেখানো উচিত। এটি করার সময়, কোন ইভেন্টটি দেখানো হবে তা চয়ন করতে নিম্নলিখিত নির্দেশিকাগুলি ব্যবহার করুন:

  • সময়ের ইভেন্টগুলি সারাদিনের ইভেন্টগুলির চেয়ে অগ্রাধিকার নেয়।
  • পুনরাবৃত্ত ইভেন্ট এবং তাদের ব্যতিক্রমগুলির চেয়ে একক ঘটনা প্রাধান্য পায়।
  • যে ইভেন্টগুলি পরে শুরু হয় সেগুলি আগে শুরু হওয়া ইভেন্টগুলির চেয়ে অগ্রাধিকার পায়।
  • কম সময়কালের ইভেন্টগুলি বেশি সময়কালের ঘটনাগুলির চেয়ে অগ্রাধিকার পায়।
  • সাম্প্রতিককালে তৈরি ইভেন্টগুলি আগে তৈরি হওয়া ইভেন্টগুলির চেয়ে অগ্রাধিকার পায়।
  • আংশিকভাবে ওভারল্যাপিং ইভেন্টগুলিকে তাদের নিজস্ব কাজের অবস্থান সহ দুটি ভিন্ন ইভেন্ট হিসাবে দেখানো উচিত।

Google Apps স্ক্রিপ্টে স্ট্যাটাস ইভেন্ট তৈরি করুন

Google Apps Script হল একটি JavaScript-ভিত্তিক ক্লাউড স্ক্রিপ্টিং ভাষা যা আপনাকে Google Workspace-এর সাথে একীভূত ব্যবসার অ্যাপ্লিকেশন তৈরি করতে দেয়। স্ক্রিপ্টগুলি একটি ব্রাউজার-ভিত্তিক কোড এডিটরে তৈরি করা হয় এবং সেগুলি Google এর সার্ভারে সংরক্ষণ করা হয় এবং চালানো হয়। Google ক্যালেন্ডার API-এ অনুরোধ পাঠাতে Apps Script ব্যবহার শুরু করতে Google Apps Script quickstart দেখুন।

Google Apps স্ক্রিপ্টে একটি উন্নত পরিষেবা হিসাবে Google ক্যালেন্ডার API ব্যবহার করে কীভাবে স্ট্যাটাস ইভেন্টগুলি পরিচালনা করবেন তা নিম্নলিখিত নির্দেশাবলী বর্ণনা করে৷ Google ক্যালেন্ডার API সংস্থান এবং পদ্ধতিগুলির একটি সম্পূর্ণ তালিকার জন্য, রেফারেন্স ডকুমেন্টেশন দেখুন।

স্ক্রিপ্ট তৈরি করুন এবং সেট আপ করুন

  1. script.google.com/create এ গিয়ে একটি স্ক্রিপ্ট তৈরি করুন।
  2. পরিষেবাগুলির পাশে বাম ফলকে, একটি পরিষেবা যোগ ক্লিক করুন৷
  3. Google ক্যালেন্ডার API নির্বাচন করুন এবং যোগ করুন ক্লিক করুন।
  4. সক্রিয় করার পরে, API বাম ফলকে প্রদর্শিত হবে। এপিআই-এ উপলব্ধ পদ্ধতি এবং ক্লাসগুলি সম্পাদকে ক্যালেন্ডার কীওয়ার্ড ব্যবহার করে তালিকাভুক্ত করা যেতে পারে।

(ঐচ্ছিক) Google ক্লাউড প্রকল্প আপডেট করুন

প্রতিটি Google Apps স্ক্রিপ্ট প্রকল্পের একটি সংশ্লিষ্ট Google ক্লাউড প্রকল্প রয়েছে৷ আপনার স্ক্রিপ্ট ডিফল্ট প্রকল্প ব্যবহার করতে পারে যা Google Apps স্ক্রিপ্ট স্বয়ংক্রিয়ভাবে তৈরি করে। আপনি যদি একটি কাস্টম Google ক্লাউড প্রকল্প ব্যবহার করতে চান তবে আপনার স্ক্রিপ্টের সাথে যুক্ত প্রকল্পটি আপডেট করতে নিম্নলিখিত পদক্ষেপগুলি নিন৷

  1. সম্পাদকের বাম দিকে, প্রকল্প সেটিংস ক্লিক করুন।
  2. Google ক্লাউড প্ল্যাটফর্ম (GCP) প্রকল্পের অধীনে, প্রকল্প পরিবর্তন করুন ক্লিক করুন।
  3. ডেভেলপার প্রিভিউ প্রোগ্রামে থাকা Google ক্লাউড প্রজেক্টের প্রজেক্ট নম্বরটি লিখুন এবং সেট প্রজেক্টে ক্লিক করুন।
  4. বাম দিকে, কোড এডিটরে ফিরে যেতে এডিটর নির্বাচন করুন।

স্ক্রিপ্টে কোড যোগ করুন

নিম্নলিখিত কোড নমুনা দেখায় কিভাবে আপনার প্রাথমিক ক্যালেন্ডারে স্থিতি ইভেন্ট তৈরি, পড়তে এবং তালিকাভুক্ত করতে হয়।

  1. কোড এডিটরে নিম্নলিখিত পেস্ট করুন।

    /** 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}`;
    }
    

কোড নমুনা চালান

  1. কোড এডিটরের উপরে, ড্রপ-ডাউন মেনু থেকে চালানোর জন্য ফাংশনটি নির্বাচন করুন এবং Run এ ক্লিক করুন।
  2. প্রথম সঞ্চালনে, এটি আপনাকে অ্যাক্সেস অনুমোদন করতে অনুরোধ করে। পর্যালোচনা করুন এবং অ্যাপস স্ক্রিপ্টকে আপনার ক্যালেন্ডার অ্যাক্সেস করার অনুমতি দিন।
  3. আপনি উইন্ডোর নীচে প্রদর্শিত এক্সিকিউশন লগে স্ক্রিপ্ট সম্পাদনের ফলাফলগুলি পরিদর্শন করতে পারেন।