Odaklanma zamanı, ofis dışında ve çalışma yeri etkinliklerini yönetme

Bu sayfada, Google Takvim kullanıcılarının durumunu gösteren etkinlikler oluşturmak için Google Takvim API'sının nasıl kullanılacağı açıklanmaktadır. Durum etkinlikleri, kullanıcıların odaklanma zamanı, ofis dışında veya belirli bir yerden çalışma durumu dahil olmak üzere nerede olduklarını veya ne yaptıklarını açıklar.

Kullanıcılar, Google Takvim'de özel durumlarını ve yerlerini belirtmek için odaklanma zamanı, ofis dışında ve çalışma yeri etkinlikleri oluşturabilir. Bu özellikler yalnızca birincil takvimlerde ve bazı Google Takvim kullanıcıları tarafından kullanılabilir.

Ayrıntılı bilgi için Google Takvim'de odaklanma zamanını kullanma ve Kullanıcılar için çalışma yerini etkinleştirme veya devre dışı bırakma başlıklı makaleleri inceleyin.

Takvim durumu etkinliklerini okuma ve listeleme

Takvim durumu etkinliklerini, Calendar API'nin Events kaynağında okuyabilir ve listeleyebilirsiniz.

Bir durum etkinliğini okumak için etkinliğin eventId özelliğini belirterek events.get yöntemini kullanın.

Durum etkinliklerini listelemek için events.list yöntemini kullanarak eventTypes alanında aşağıdaki değerlerden birini veya daha fazlasını belirtin:

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

Ardından, döndürülen Event nesnelerinde eventType alanında istenen değerin bulunup bulunmadığını kontrol edin ve kullanıcının Google Takvim'de oluşturduğu durumla ilgili ayrıntılar için ilgili alana bakın:

Durum etkinliklerindeki değişikliklere abone ol

Takvim API'sinin Events kaynağında durum etkinliklerindeki değişikliklere abone olabilirsiniz.

Abone olunacak Takvim için calendarId değerini ve eventTypes alanında aşağıdaki değerlerden bir veya daha fazlasını belirterek events.watch yöntemini kullanın:

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

Takvim durum etkinliklerini oluşturma ve güncelleme

Durum etkinliği oluşturmak için events.insert yöntemini kullanarak ve etkinlik türü için gerekli alanları ayarlayarak Events kaynağının bir örneğini oluşturursunuz.

Durum etkinliğini events.update yöntemini kullanarak güncellerseniz etkinlikte zorunlu alanlar bulunmalıdır.

Odaklanma zamanı oluştur

Odaklanma zamanı etkinliği oluşturmak için:

  • eventType değerini 'focusTime' olarak ayarlayın.
  • focusTimeProperties alanını ekleyin.
  • transparency alanını 'opaque' olarak ayarlayın.
  • Etkinliğin start ve end alanlarını zamanlanmış bir etkinlik olarak ayarlayın (başlangıç ve bitiş zamanları belirtilir).
    Odaklanma zamanları tüm gün süren etkinlikler olamaz.

Özellik ayrıntıları için Google Takvim'de odaklanma zamanını kullanma başlıklı makaleyi inceleyin.

Ofis dışında oluştur

Ofis dışında etkinliği oluşturmak için:

  • eventType değerini 'outOfOffice' olarak ayarlayın.
  • outOfOfficeProperties alanını ekleyin.
  • transparency alanını 'opaque' olarak ayarlayın.
  • Etkinliğin start ve end alanlarını zamanlanmış bir etkinlik olarak ayarlayın (başlangıç ve bitiş zamanları belirtilir).
    Ofis dışında etkinlikleri tüm gün süren etkinlik olamaz.

Özellik ayrıntıları için Ofis dışında olduğunuzu gösterme başlıklı makaleyi inceleyin

Çalışma yeri oluştur

Çalışma yeri etkinliği oluşturmak için:

  • eventType değerini 'workingLocation' olarak ayarlayın.
  • workingLocationProperties alanını ekleyin.
  • visibility alanını 'public' olarak ayarlayın.
  • transparency alanını 'transparent' olarak ayarlayın.
  • Etkinliğin start ve end alanlarını aşağıdakilerden birine ayarlayın:

    • Zamanlanmış bir etkinlik (başlangıç ve bitiş zamanları belirtilmiş şekilde);
    • Tam olarak bir günü kapsayan tüm gün süren bir etkinlik (başlangıç ve bitiş tarihleri belirtilmiş olarak).

    Tüm gün süren çalışma yeri etkinlikleri birden çok güne yayılamaz, ancak zamanlı etkinlikler birden fazla günü kapsayabilir.

Aşağıdaki alanlar isteğe bağlıdır ancak officeLocation eklerken en iyi kullanıcı deneyimi için önerilir:

Toplu uç noktalar üzerinden çalışma yeri etkinliklerinin oluşturulması ve güncellenmesi desteklenmez.

Özellik ayrıntıları için Çalışma saatlerinizi ve konumunuzu ayarlama ve Kullanıcılar için çalışma yerini etkinleştirme veya devre dışı bırakma başlıklı makalelere göz atın.

Çakışan çalışma yeri etkinliklerini gösterme

Bir kullanıcının takviminde aynı anda birden fazla çalışma yeri etkinliği bulunabilir. Bu etkinlikler çakışabilir. Diğer bir deyişle, herhangi bir zaman için birden fazla çalışma yeri ayarlanmış olabilir. Kullanıcıya yalnızca tek bir konumun gösterilebildiği durumlarda, söz konusu konum birden çok uygulamada tutarlı bir şekilde gösterilmelidir. Bunu yaparken, hangi etkinliğin gösterileceğini seçmek için aşağıdaki yönergeleri kullanın:

  • Zamanlanmış etkinlikler, tüm gün süren etkinliklere göre önceliklidir.
  • Tek etkinlikler, düzenli etkinliklere ve bunların istisnalarına göre önceliklidir.
  • Daha sonra başlayan etkinlikler, daha erken başlayan etkinliklere göre önceliklidir.
  • Kısa süreli etkinlikler, uzun süreli etkinliklerden önceliklidir.
  • Yeni oluşturulan etkinlikler, daha önce oluşturulan etkinliklere göre önceliklidir.
  • Kısmen çakışan etkinlikler, her biri kendi çalışma yeri olan iki farklı etkinlik olarak gösterilmelidir.

Google Apps Komut Dosyası'nda durum etkinlikleri oluşturma

Google Apps Komut Dosyası, Google Workspace ile entegre olan iş uygulamaları oluşturmanıza olanak tanıyan, JavaScript tabanlı bir bulut komut dosyası dilidir. Komut dosyaları tarayıcı tabanlı bir kod düzenleyicide geliştirilir ve Google'ın sunucularında saklanıp çalıştırılır. Google Calendar API'ye istek göndermek amacıyla Apps Komut Dosyası'nı kullanmaya başlamak için Google Apps Komut Dosyası hızlı başlangıç kılavuzu sayfasına da göz atın.

Aşağıdaki talimatlarda, durum etkinliklerini Google Apps Komut Dosyası'nda gelişmiş bir hizmet olarak Google Calendar API'yi kullanarak nasıl yöneteceğiniz açıklanmaktadır. Google Calendar API kaynaklarının ve yöntemlerinin tam listesi için referans belgelerine bakın.

Komut dosyasını oluşturup ayarlayın

  1. script.google.com/create adresine giderek bir komut dosyası oluşturun.
  2. Sol bölmede, Hizmetler'in yanında Hizmet ekle'yi tıklayın .
  3. Google Calendar API'yi seçin ve Add (Ekle) seçeneğini tıklayın.
  4. Etkinleştirildikten sonra API, sol bölmede görünür. API'daki kullanılabilir yöntemler ve sınıflar, düzenleyicide Takvim anahtar kelimesi kullanılarak listelenebilir.

(İsteğe bağlı) Google Cloud projesini güncelleme

Her Google Apps Komut Dosyası projesinin ilişkili bir Google Cloud projesi vardır. Komut dosyanız, Google Apps Komut Dosyası'nın otomatik olarak oluşturduğu varsayılan projeyi kullanabilir. Özel bir Google Cloud projesi kullanmak istiyorsanız komut dosyanızla ilişkilendirilmiş projeyi güncellemek için aşağıdaki adımları uygulayın.

  1. Düzenleyicinin sol tarafında Proje Ayarları'nı tıklayın.
  2. Google Cloud Platform (GCP) Project (Google Cloud Platform (GCP) Projesi) bölümünde Change project (Projeyi değiştir) seçeneğini tıklayın.
  3. Geliştirici Önizleme Programı'ndaki Google Cloud projesinin proje numarasını girin ve Proje ayarla'yı tıklayın.
  4. Kod düzenleyiciye dönmek için sol tarafta Düzenleyici'yi seçin.

Komut dosyasına kod ekleyin

Aşağıdaki kod örneğinde, birincil takviminizde durum etkinliklerini nasıl oluşturacağınız, okuyacağınız ve listeleyeceğiniz gösterilmektedir.

  1. Aşağıdakini kod düzenleyiciye yapıştırın.

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

Kod örneğini çalıştırma

  1. Kod düzenleyicinin üzerinde, açılır menüden çalıştırılacak işlevi seçin ve Çalıştır'ı tıklayın.
  2. İlk yürütmede erişimi yetkilendirmeniz istenir. Apps Komut Dosyası'nı inceleyip takviminize erişmesine izin verin.
  3. Komut dosyası yürütme işleminin sonuçlarını, pencerenin en altında görünen Execution Log'ta (Yürütme Günlüğü) inceleyebilirsiniz.