Takvimler ve etkinlikler

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

Takvimler

Takvim, ilgili etkinliklerin yanı sıra özet, varsayılan saat dilimi, konum gibi ek meta verilerden oluşan bir koleksiyondur. Her takvim bir e-posta adresi olan bir kimlikle tanımlanır. Takvimlerin birden çok sahibi olabilir.

Etkinlikler

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

Etkinlik türleri

Google Takvim, tek ve yinelenen etkinlikleri destekler:

  • Tek bir etkinlik, benzersiz bir olayı temsil eder.
  • Yinelenen etkinlik birden fazla tekrarı tanımlar.

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

  • Zamanlanmış bir etkinlik, zaman içindeki iki belirli nokta 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 bir etkinlik, bir günün tamamını veya art arda birkaç gün sürer. Tüm gün süren etkinlikler ne zaman gerçekleşeceklerini 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üzenleyicisi vardır. Bu, etkinliğin ana kopyasını içeren takvimdir. Etkinliklerde birden fazla katılımcı da olabilir. Katılımcı, genellikle davet edilen bir kullanıcının birincil takvimidir.

Aşağıdaki şemada takvimler, etkinlikler ve diğer ilgili öğ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 takvim kimliği genellikle kullanıcının birincil e-posta adresiyle eşleşir. Hesap mevcut olduğu sürece, kullanıcının birincil takvimi hiçbir zaman silinemez veya kullanıcının "sahip olmadığı" bir takvim bulunamaz. Ancak diğer kullanıcılarla paylaşmaya devam edebilirsiniz.

Birincil takvime ek olarak, istediğiniz sayıda başka takvimi açıkça oluşturabilirsiniz. Bu takvimler değiştirilebilir, silinebilir ve birden çok 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, takvime erişimi olan tüm kullanıcılar arasında paylaşılan genel özellikleri de alabilir veya ayarlayabilirsiniz. Örneğin, takvimin başlığı ve varsayılan saat dilimi genel özelliklerdir.

CalendarList, kullanıcının listelerine eklediği tüm takvim girişlerinin yer aldığı bir koleksiyondur (web arayüzünün sol panelinde gösterilir). Mevcut takvimleri kullanıcı listesine eklemek veya listeden kaldırmak için bu aracı kullanabilirsiniz. Varsayılan hatırlatıcılar gibi kullanıcıya özgü takvim özelliklerinin değerlerini almak ve ayarlamak için de bunu kullanabilirsiniz. Diğer bir örnek de ön plan rengidir. Çünkü aynı takvim için farklı kullanıcılar farklı renklere sahip olabilir.

Aşağıdaki tabloda iki koleksiyondaki 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 Başlık, saat dilimi gibi takvim meta verilerini alır. Meta verilerin yanı sıra, renk veya geçersiz kılma hatırlatıcıları gibi kullanıcıya özel özelleştirmeleri alır.
patch/update Takvim meta verilerini değiştirir. Kullanıcıya özel takvim özelliklerini değiştirir.

Düzenli etkinlikler

Haftalık toplantılar, doğum günleri ve tatiller gibi bazı etkinlikler düzenli olarak birden çok kez gerçekleşir. Başlangıç ve bitiş zamanlarının farklı olması dışında, tekrarlanan bu etkinlikler genellikle aynıdır.

Belirli bir programa göre tekrarlanan etkinlikler yinelenen olarak adlandırılır. Tek etkinlikler yinelenmez ve yalnızca bir kez gerçekleşir.

Yinelenme kuralı

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

  • Başlangıç ve bitiş alanları (bu yalnızca bağımsız tek bir etkinlikmiş gibi ilk tekrarı tanımlar) ve

  • Yinelenme alanı (etkinliğin zaman içinde nasıl tekrarlanması gerektiğini tanımlar).

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

RRULE özelliği, etkinliğin tekrarlanması için normal bir kural tanımladığından en önemli özelliktir. Birkaç bileşenden oluşur. Bunlardan bazıları:

  • FREQ: Etkinliğin tekrarlanması gereken sıklık (DAILY veya WEEKLY gibi). Zorunludur.

  • INTERVAL — Etkinliğin ne sıklıkta tekrarlanması gerektiğini 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 saat (bu tarih ve saat dahil).

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

RDATE özelliği, etkinliğin gerçekleşmesi gereken ek tarihleri veya tarih ve saatleri belirtir. Örneğin, RDATE;VALUE=DATE:19970101,19970120. RRULE kapsamında olmayan ekstra tekrarları eklemek için bunu kullanın.

EXDATE özelliği, RDATE özelliğine benzer ancak etkinliğin gerçekleşmemesi gereken tarihleri veya saatleri belirtir. Yani, bu oluşumlar hariç tutulmalıdır. Bu, yineleme kuralı tarafından oluşturulan geçerli bir örneğe yönlendirmelidir.

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

Özelliklerin her biri, yineleme alanında birden çok kez gerçekleşebilir. Yinelenme, tüm RRULE ve RDATE kurallarının toplamından tüm EXDATE kuralları tarafından hariç tutulanların çıkarılmasıyla tanımlanır.

Aşağıda, yinelenen etkinliklere ilişkin bazı örnekler verilmiştir:

  1. 15 Eylül 2015 tarihinden itibaren her Salı ve Cuma 06:00'dan 07:00'ye kadar gerçekleşen ve 29 Eylül'deki beşinci olaydan sonra duran 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 ay boyunca 3 günde bir tekrarlanan, 10 Haziran hariç ancak 9 ve 11 Haziran da dahil olmak üzere tüm gün süren bir etkinlik:

    ...
    "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

Düzenli bir etkinlik birkaç örneğinden oluşur, yani etkinliğin farklı zamanlarda tekrarlanması. Bu örnekler etkinlik olarak görev yapar.

Yinelenen etkinlik değişiklikleri, yinelenen etkinliğin tamamını (ve tüm örneklerini) veya yalnızca tekil örnekleri etkileyebilir. Üst öğelerin düzenli etkinliğinden farklı olan örneklere istisnalar adı verilir.

Örneğin, bir istisnanın farklı bir özeti, farklı bir başlangıç zamanı veya yalnızca bu örneğe davet edilen ek katılımcıları olabilir. Ayrıca, düzenli etkinliği kaldırmadan bir örneği tamamen iptal edebilirsiniz (örnek iptalleri etkinliğe status yansıtılır).

Google Calendar API aracılığıyla düzenli etkinlikler ve örneklerle nasıl çalışabileceğinize dair örnekleri burada bulabilirsiniz.

Saat dilimleri

Saat dilimi, tek tip standart saate uyan bir bölgeyi belirtir. Google Calendar API'de, saat dilimlerini IANA saat dilimi tanımlayıcılarını kullanarak 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

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

Sorgu sonucu saat dilimi dönüştürme
get(), list() ve instances() yöntemlerinin sonuçları, timeZone parametresinde belirttiğiniz saat diliminde döndürülür. Bu parametreyi çıkarırsanız bu yöntemlerin tümü varsayılan olarak takvim saat dilimini kullanır.
Tüm gün etkinliklerini zaman basamaklı sorgularla eşleştirme
list() ve instances() yöntemleri, belirtilen aralıkta yer alan döndürülen örnekleri kullanarak başlangıç ve bitiş zamanı filtreleri belirtmenizi sağlar. Takvim saat dilimi, filtre spesifikasyonuna uygun olup olmadıklarını belirlemek amacıyla tüm gün süren etkinliklerin başlangıç ve bitiş zamanlarını hesaplamak için kullanılır.

Etkinlik saat dilimi

Etkinlik örneklerinin bir başlangıç ve bitiş saati vardır. Bu saatlere ilişkin spesifikasyon, saat dilimini içerebilir. Saat dilimini birkaç farklı şekilde belirtebilirsiniz: Aşağıdakilerin tümü aynı saati belirtir:

  • dateTime alanına saat dilimi farkını ekleyin (ör. 2017-01-25T09:00:00-0500).
  • Zaman farkı olmadan saati belirtin, örneğin 2017-01-25T09:00:00. timeZone alanını boş bırakın (bu işlem, dolaylı olarak varsayılan saat dilimini kullanır).
  • Zaman farkı olmadan saati belirtin (ör. 2017-01-25T09:00:00). Ancak saat dilimini belirtmek için timeZone alanını kullanın.

İsterseniz etkinlik saatlerini UTC olarak da belirtebilirsiniz:

  • Zamanı, UTC olarak belirtin: 2017-01-25T14:00:00Z veya sıfır ofset 2017-01-25T14:00:00+0000 kullanın.

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

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

Yinelenen etkinlik saat dilimi

Düzenli etkinlikler için her zaman tek bir saat dilimi belirtilmelidir. Etkinliğin yinelenme sıklığını artırmak için gereklidir.