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

Bu sayfada, Google Calendar API'yi kullanarak Google Takvim kullanıcılarının durumunu gösteren etkinliklerin nasıl oluşturulacağı açıklanmaktadır. Durum etkinlikleri, kullanıcıların nerede olduğunu veya ne yaptığını (ör. odaklanma zamanında olup olmadığı, ofis dışında olup olmadığı ya da belirli bir konumdan çalışıp çalışmadığı) açıklar.

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

Daha fazla 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

Calendar API'nin Events kaynağındaki takvim durumu etkinliklerini okuyabilir ve listeleyebilirsiniz.

Durum etkinliğini okumak için events.get yöntemini kullanın ve etkinliğin eventId değerini belirtin.

Durum etkinliklerini listelemek için events.list yöntemini kullanın ve 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ının istenen değere sahip olup olmadığını inceleyin ve Google Takvim'de kullanıcı tarafından oluşturulan durumla ilgili ayrıntılar için ilgili alana bakın:

Durum etkinliklerindeki değişikliklere abone olma

Calendar API'nin Events kaynağındaki durum etkinliklerinde yapılan değişikliklere abone olabilirsiniz.

Abone olunacak takvimin events.watch yöntemini kullanarak calendarId değerini ve eventTypes alanında aşağıdaki değerlerden birini veya daha fazlasını belirtin:

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

Takvim durumu etkinlikleri oluşturma ve güncelleme

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

Etkinlik durumunu events.update yöntemini kullanarak güncellerseniz etkinlik, gerekli alanları korumalıdır.

Odaklanma zamanı oluşturma

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

  • eventType öğesini '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 (başlangıç ve bitiş zamanları belirtilmiş) olarak ayarlayın.
    Odaklanma zamanları tüm gün süren etkinlikler olamaz.

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

Ofis dışında mesajı oluşturma

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

  • eventType öğesini '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 (başlangıç ve bitiş zamanları belirtilmiş) olarak ayarlayın.
    Ofis dışında etkinlikleri tüm gün süren etkinlikler olamaz.

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

Çalışma yeri oluşturma

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

  • eventType öğesini '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ı şu şekilde ayarlayın:

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

    Tüm gün süren çalışma yeri etkinlikleri birden fazla günü kapsayamaz ancak zamanlı etkinlikler kapsayabilir.

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

Toplu uç noktalar aracılığıyla çalışma yeri etkinlikleri oluşturma ve güncelleme desteklenmez.

Özellik ayrıntıları için Çalışma saatlerinizi ve yerinizi ayarlama ve Kullanıcılar için çalışma yerini etkinleştirme veya devre dışı bırakma başlıklı makaleleri inceleyin.

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

Bir kullanıcının takviminde aynı anda birden fazla çalışma yeri etkinliği olabilir. Bu etkinlikler çakışır. Yani belirli bir zamanda birden fazla çalışma yeri ayarlanmış olabilir. Kullanıcıya yalnızca tek bir konumun gösterilebildiği durumlarda, bu konum birden fazla 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 etkinliklerden önceliklidir.
  • Tek seferlik etkinlikler, yinelenen etkinliklere ve bunların istisnalarına göre önceliklidir.
  • Daha sonra başlayan etkinlikler, daha önce başlayan etkinliklere göre önceliklidir.
  • Süresi daha kısa olan etkinlikler, süresi daha uzun olan etkinliklere göre önceliklidir.
  • Daha yakın zamanda oluşturulan etkinlikler, daha önce oluşturulan etkinliklere göre önceliklidir.
  • Kısmen çakışan etkinlikler, her biri kendi çalışma konumuna sahip 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 depolanıp çalıştırılır. Google Calendar API'ye istek göndermek için Apps Komut Dosyası'nı kullanmaya başlamak üzere Google Apps Komut Dosyası hızlı başlangıç kılavuzu'na da bakın.

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

Komut dosyasını oluşturma ve ayarlama

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

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

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şkili 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) Projesi bölümünde Projeyi değiştir'i tıklayın.
  3. Geliştirici Önizleme Programı'nda bulunan Google Cloud projesinin proje numarasını girin ve Projeyi ayarla'yı tıklayın.
  4. Sol tarafta Düzenleyici'yi seçerek kod düzenleyiciye geri dönün.

Komut dosyasına kod ekleme

Aşağıdaki kod örneğinde, birincil takviminizde durum etkinliklerinin nasıl oluşturulacağı, okunacağı ve listeleneceği gösterilmektedir.

  1. Aşağıdaki kodu 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/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}`;
    }
    

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

  1. Kod düzenleyicinin üst kısmındaki açılır menüden çalıştırılacak işlevi seçin ve Çalıştır'ı tıklayın.
  2. İlk çalıştırmada erişimi yetkilendirmeniz istenir. Apps Komut Dosyası'nın takviminize erişmesine izin verin.
  3. Komut dosyası yürütme sonuçlarını pencerenin alt kısmında görünen Yürütme Günlüğü'nde inceleyebilirsiniz.