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'nin nasıl kullanılacağı açıklanmaktadır. Durum etkinlikleri, kullanıcıların nerede olduklarını veya ne yaptıklarını (ör. odaklanma zamanında olup olmadıkları, ofiste olup olmadıkları ya da belirli bir konumdan çalışıp çalışmadıkları) açıklar.

Kullanıcılar, Google Takvim'de özel durumlarını ve konumlarını 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.

Daha fazla bilgi için Google Takvim'de odaklanma süresini 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 API'sinin Events kaynağında Takvim durumu etkinliklerini okuyabilir ve listeleyebilirsiniz.

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

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ğeri içerdiğini 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 olma

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

Abone olunacak Takvim'in calendarId değerini belirterek events.watch yöntemini kullanın 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.insert yöntemini kullanarak Events kaynağının bir örneğini oluşturur ve etkinlik türü için gerekli alanları ayarlarsınız.

Durum etkinliğini events.update yöntemini kullanarak güncellerseniz etkinlikte zorunlu alanlar korunmalı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ış etkinlik olacak şekilde 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ı ö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ış etkinlik olacak şekilde ayarlayın (başlangıç ve bitiş zamanları belirtilir).
    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ış etkinlik (başlangıç ve bitiş zamanları belirtilmiş);
    • Tam olarak bir gün süren tüm gün etkinliği (başlangıç ve bitiş tarihleri belirtilmiş).

    Tüm gün çalışma yeri etkinlikleri birden fazla güne yayılamaz ancak zamanlanmış etkinlikler yayılabilir.

Aşağıdaki alanlar isteğe bağlıdır ancak officeLocation eklerken en iyi kullanıcı deneyimi için ö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 belirtme 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 çakışan birden fazla çalışma yeri etkinliği olabilir. Bu da belirli bir zaman için birden fazla çalışma yeri ayarlanabileceği anlamına gelir. Kullanıcıya yalnızca tek bir konumun gösterilebileceği durumlarda, bu konum birden fazla uygulamada tutarlı bir şekilde gösterilmelidir. Bu işlemi 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 seferlik etkinlikler, yinelenen etkinlikler ve bunların istisnaları üzerinde önceliklidir.
  • Daha geç başlayan etkinlikler, daha erken başlayan etkinliklere göre önceliklidir.
  • Daha kısa süreli etkinlikler, daha uzun süreli etkinliklere göre önceliklidir.
  • Daha yeni oluşturulan etkinlikler, daha önce oluşturulan etkinliklere göre önceliklidir.
  • Kısmen örtüşen 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 depolanır ve ç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ılavuzuna da bakın.

Aşağıdaki talimatlarda, Google Apps Komut Dosyası'nda gelişmiş hizmet olarak Google Takvim API'yi kullanarak durum etkinliklerinin nasıl yönetileceği açıklanmaktadır. Google Calendar API kaynaklarının ve yöntemlerinin tam listesi için referans dokümanlarına bakın.

Komut dosyasını oluşturup 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ştirilen API, sol bölmede görünür. API'deki kullanılabilir yöntemler ve sınıflar, düzenleyicide Takvim anahtar kelimesi kullanılarak listelenir.

(İ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ş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. Kod düzenleyiciye geri dönmek için sol taraftaki Düzenleyici'yi seçin.

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/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 ü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ırma sırasında erişimi yetkilendirmenizi ister. Apps Script'in takviminize erişmesine izin verin.
  3. Komut dosyası yürütme sonuçlarını, pencerenin en altında görünen Yürütme Günlüğü'nde inceleyebilirsiniz.