Takvimler ve etkinlikler

Bu kılavuzda takvimler, etkinlikler ve bunların birbirleriyle olan ilişkileri açıklanmaktadır.

Takvimler

Takvim, özet, varsayılan saat dilimi, konum gibi ek meta verilerle birlikte ilgili etkinliklerin bir koleksiyonudur. Her takvim, e-posta adresi olan bir kimlikle tanımlanır. Takvimlerin birden fazla sahibi olabilir.

Etkinlikler

Etkinlik, belirli bir tarih veya saat aralığıyla ilişkilendirilmiş bir nesnedir. Etkinlikler benzersiz bir kimlikle tanımlanır. Etkinlikler, başlangıç ve bitiş tarihi ve saatinin yanı sıra özet, açıklama, konum, durum, hatırlatıcılar, ekler vb. gibi diğer verileri de içerir.

Etkinlik türleri

Google Takvim, tek ve tekrarlanan etkinlikleri destekler:

  • Tek bir etkinlik, benzersiz bir olayı temsil eder.
  • Yinelenen etkinlikler birden fazla gerçekleşmeyi tanımlar.

Etkinlikler zamanlanmış veya tüm gün da olabilir:

  • Zamanlanmış etkinlikler, belirli iki zaman aralığı arasında gerçekleşir. Zamanlanmış etkinlikler, ne zaman gerçekleşeceklerini belirtmek için start.dateTime ve end.dateTime alanlarını kullanır.
  • Tüm gün süren etkinlikler bir günün tamamını veya art arda gelen bir dizi günü kapsar. Tam gün etkinlikler, ne zaman gerçekleştiklerini belirtmek için start.date ve end.date alanlarını kullanır. Saat dilimi alanının tüm gün süren etkinlikler için anlamlı olmadığını unutmayın.

Düzenleyenler

Etkinliklerin tek bir düzenleyeni vardır. Bu, etkinliğin ana kopyasını içeren takvimdir. Etkinlikler birden fazla katılımcıya da sahip olabilir. Katılımcı, genellikle davet edilen kullanıcının birincil takvimidir.

Aşağıdaki diyagramda takvimler, etkinlikler ve ilgili diğer öğeler arasındaki kavramsal ilişki gösterilmektedir:

Birincil takvimler ve diğer takvimler

Birincil takvim, tek bir kullanıcı hesabıyla ilişkili özel bir takvim türüdür. Bu takvim, her yeni kullanıcı hesabı için otomatik olarak oluşturulur ve kimliği genellikle kullanıcının birincil e-posta adresiyle eşleşir. Hesap mevcut olduğu sürece birincil takvimi hiçbir zaman silinemez veya kullanıcı tarafından "sahipliği kaldırılamaz". Ancak bu öğe diğer kullanıcılarla paylaşılabilir.

Birincil takvime ek olarak istediğiniz sayıda başka takvim oluşturabilirsiniz. Bu takvimler değiştirilebilir, silinebilir ve birden fazla kullanıcı arasında paylaşılabilir.

Takvim ve takvim listesi

Takvimler koleksiyonu, mevcut tüm takvimleri temsil eder. Takvim oluşturmak ve silmek için kullanılabilir. Ayrıca, bir takvime erişimi olan tüm kullanıcılar arasında paylaşılan genel özellikleri alabilir veya ayarlayabilirsiniz. Örneğin, bir takvimin başlığı ve varsayılan saat dilimi global özelliklerdir.

CalendarList, kullanıcının listesine eklediği tüm takvim girişlerinin bir koleksiyonudur (web kullanıcı arayüzünün sol panelinde gösterilir). Mevcut takvimleri kullanıcı listesine eklemek ve listeden kaldırmak için bu seçeneği kullanabilirsiniz. Ayrıca, varsayılan hatırlatıcılar gibi kullanıcıya özgü takvim özelliklerinin değerlerini almak ve ayarlamak için de bu özelliği kullanırsınız. Farklı kullanıcılar aynı takvim için farklı renkler ayarlayabileceğinden ön plan rengi de buna örnek verilebilir.

Aşağıdaki tabloda, iki koleksiyon için işlemlerin anlamı karşılaştırılmıştır:

İşlem Takvimler CalendarList
insert Yeni bir ikincil takvim oluşturur. Bu takvim varsayılan olarak içerik üreticinin takvim listesine de eklenir. Mevcut bir takvimi kullanıcının listesine ekler.
delete İkincil bir takvimi siler. Bir takvimi kullanıcının listesinden kaldırır.
get Takvim meta verilerini (ör. başlık, saat dilimi) alır. Meta verileri ve renk veya hatırlatıcıları geçersiz kılma gibi kullanıcıya özel özelleştirmeleri alır.
patch/update Takvim meta verilerinde değişiklik yapma Kullanıcıya özgü takvim özelliklerini değiştirir.

Düzenli etkinlikler

Haftalık toplantılar, doğum günleri ve tatiller gibi bazı etkinlikler düzenli bir programda birden çok kez gerçekleşir. Bu tekrarlanan etkinliklerin başlangıç ve bitiş zamanları farklı olsa da genellikle aynıdır.

Belirli bir programa göre tekrarlanan etkinliklere düzenli denir. Tek etkinlikler tekrarlanmaz ve yalnızca bir kez gerçekleşir.

Yinelenme kuralı

Yinelenen bir etkinliğin programı iki bölümde tanımlanır:

  • Başlangıç ve bitiş alanları (ilk oluşumu, tek başına tek bir etkinlikmiş gibi tanımlar) ve

  • Yinelenme alanı (etkinliğin zaman içinde nasıl tekrarlanacağını tanımlar).

Tekrarlama alanı, RFC 5545'te tanımlandığı gibi bir veya daha fazla RRULE, RDATE ya da EXDATE özelliğini temsil eden bir dize dizisi içerir.

Etkinliğin tekrarlanması için normal bir kural tanımladığı için RRULE mülkü en önemlisidir. Bu işlem birkaç bileşenden oluşur. Bunlardan bazıları şunlardır:

  • FREQ: Etkinliğin tekrarlanma sıklığı (ör. DAILY veya WEEKLY). Zorunlu.

  • INTERVAL: Etkinliğin ne sıklıkta tekrarlanacağını belirtmek için FREQ ile birlikte çalışır. Örneğin, FREQ=DAILY;INTERVAL=2 iki günde bir anlamına gelir.

  • COUNT: Bu etkinliğin tekrarlanma sayısı.

  • UNTIL: Etkinliğin tekrarlanacağı tarih veya tarih saati (dahil).

  • BYDAY: Etkinliğin tekrarlanacağı haftanın günleri (SU, MO, TU vb.). Benzer diğer bileşenler arasında BYMONTH, BYYEARDAY ve BYHOUR bulunur.

RDATE mülkü, etkinlik gerçekleşmelerinin gerçekleşmesi gereken ek tarihleri veya tarih saatlerini belirtir. Örneğin, RDATE;VALUE=DATE:19970101,19970120. RRULE kapsamında olmayan ek oluşumlar eklemek için bunu kullanın.

EXDATE özelliği, RDATE'ye benzer ancak etkinliğin olmaması gereken tarihleri veya tarih saatlerini belirtir. Yani bu oluşumlar hariç tutulmalıdır. Bu, yineleme kuralı tarafından oluşturulan geçerli bir örneği işaret etmelidir.

EXDATE ve RDATE bir saat dilimi içerebilir ve tüm gün süren etkinlikler için tarih (tarih ve saat değil) olmalıdır.

Bu özelliklerin her biri, yineleme alanında birden çok kez bulunabilir. Tekrar, tüm RRULE ve RDATE kurallarının birleşimi eksi tüm EXDATE kuralları tarafından hariç tutulanlar olarak tanımlanır.

Yinelenen etkinliklere ilişkin bazı örnekler aşağıda verilmiştir:

  1. 15 Eylül 2015'ten itibaren her Salı ve Cuma günü 06:00-07:00 arasında gerçekleşen ve 29 Eylül'deki beşinci gerçekleşme işleminden sonra sona eren bir etkinlik:

    ...
    "start": {
     "dateTime": "2015-09-15T06:00:00+02:00",
     "timeZone": "Europe/Zurich"
    },
    "end": {
     "dateTime": "2015-09-15T07:00:00+02:00",
     "timeZone": "Europe/Zurich"
    },
    "recurrence": [
     "RRULE:FREQ=WEEKLY;COUNT=5;BYDAY=TU,FR"
    ],
    …
    
  2. 1 Haziran 2015'te başlayan ve 10 Haziran hariç olmak üzere ayın tamamında 3 günde bir yinelenen, tüm gün süren bir etkinlik (9 ve 11 Haziran dahil):

    ...
    "start": {
     "date": "2015-06-01"
    },
    "end": {
     "date": "2015-06-02"
    },
    "recurrence": [
     "EXDATE;VALUE=DATE:20150610",
     "RDATE;VALUE=DATE:20150609,20150611",
     "RRULE:FREQ=DAILY;UNTIL=20150628;INTERVAL=3"
    ],
    …
    

Örnekler ve istisnalar

Yinelenen bir etkinlik, farklı zamanlarda gerçekleşen belirli oluşumları kapsayan birkaç örnek içerir. Bu örnekler de etkinlik gibi davranır.

Yinelenen etkinlik değişiklikleri, yinelenen etkinliğin tamamını (ve tüm örneklerini) veya yalnızca tek bir örneğini etkileyebilir. Üst öğe olan yinelenen etkinlikten farklı olan örneklere istisna denir.

Örneğin, istisnalar farklı bir özete, farklı bir başlangıç saatine veya yalnızca söz konusu oturuma davet edilen ek katılımcılara sahip olabilir. Düzenli etkinliği kaldırmadan da bir örneği tamamen iptal edebilirsiniz (örnek iptalleri etkinliğe status yansıtılır).

Google Calendar API aracılığıyla yinelenen etkinlikler ve örneklerle çalışma örneklerini burada bulabilirsiniz.

Saat dilimleri

Saat dilimi, tek bir standart saatin geçerli olduğu bir bölgeyi belirtir. Google Takvim API'sinde, IANA saat dilimi tanımlayıcılarını kullanarak saat dilimlerini belirtirsiniz.

Hem takvimler hem de etkinlikler için saat dilimini ayarlayabilirsiniz. Aşağıdaki bölümlerde bu ayarların etkileri açıklanmaktadır.

Takvim saat dilimi

Takvim saat dilimi, sorgu sonuçları üzerindeki etkileri nedeniyle varsayılan saat dilimi olarak da bilinir. Takvim saat dilimi, events.get(), events.list() ve events.instances() yöntemleri tarafından zaman değerlerinin yorumlanma veya sunulma şeklini etkiler.

Sorgu sonucu saat dilimi dönüşümü
get(), list() ve instances() yöntemlerinin sonuçları, timeZone parametresinde belirttiğiniz saat diliminde döndürülür. Bu parametreyi atlarsanız bu yöntemlerin tümü varsayılan olarak takvim saat dilimini kullanır.
Tüm gün süren etkinlikleri zaman aralığıyla belirtilen sorgularla eşleştirme
list() ve instances() yöntemleri, başlangıç ve bitiş zamanı filtrelerini belirtmenize olanak tanır. Bu yöntemler, belirtilen aralığa giren örnekleri döndürür. Takvim saat dilimi, tüm gün süren etkinliklerin filtre spesifikasyonuna uyup uymadığını belirlemek için başlangıç ve bitiş zamanlarını hesaplamak amacıyla kullanılır.

Etkinlik saat dilimi

Etkinlik örnekleri bir başlangıç ve bitiş zamanına sahiptir. Bu zamanların belirtilmesi saat dilimini içerebilir. Saat dilimini birkaç şekilde belirtebilirsiniz. Aşağıdakilerin tümü aynı zamanı belirtir:

  • dateTime alanına bir saat dilimi ofseti ekleyin (ör. 2017-01-25T09:00:00-0500).
  • Saati, timeZone alanını boş bırakarak (bu durumda varsayılan saat dilimi kullanılır) 2017-01-25T09:00:00 gibi bir ofset olmadan belirtin.
  • Saati, saat farkı olmadan belirtin (ör. 2017-01-25T09:00:00). Ancak saat dilimini belirtmek için timeZone alanını kullanın.

Dilerseniz etkinlik zamanlarını UTC olarak da belirtebilirsiniz:

  • UTC olarak zamanı belirtin: 2017-01-25T14:00:00Z veya sıfır saat farkı kullanın 2017-01-25T14:00:00+0000.

Etkinlik zamanının dahili gösterimi tüm bu durumlarda aynıdır ancak timeZone alanının ayarlanması, tıpkı Takvim kullanıcı arayüzünü kullanarak etkinlik saat dilimini ayarladığınızda olduğu gibi etkinliğe bir saat dilimi ekler:

Bir etkinliğin saat dilimini gösteren ekran görüntüsü parçası

Düzenli etkinlik saat dilimi

Yinelenen etkinlikler için her zaman tek bir saat dilimi belirtilmelidir. Etkinliğin tekrarlarını genişletmek için gereklidir.