Takvimler ve etkinlikler

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

Takvimler

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

Etkinlikler

Etkinlik, belirli bir tarih veya zaman aralığıyla ilişkilendirilmiş bir 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 vb. veriler içerir.

Etkinlik türleri

Google Takvim, tek ve düzenli etkinlikleri destekler:

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

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

  • Zamanlanmış bir etkinlik, zamandaki iki belirli nokta arasında gerçekleşir. Zamanlanmış etkinlikler, ne zaman gerçekleşeceğini belirtmek için start.dateTime ve end.dateTime alanlarını kullanır.
  • Tüm gün süren bir etkinlik tüm günü veya ardışık gün serisini kapsar. Tüm gün süren etkinlikler, ne zaman gerçekleştiğini 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 önemli olmadığını unutmayın.

Düzenleyenler

Etkinlikler, etkinliğin ana kopyasını içeren takvim olan tek bir düzenleyiciye sahiptir. Etkinliklerin birden fazla katılımı olabilir. Katılımcı, genellikle davet edilen 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 kimliği genellikle kullanıcının birincil e-posta adresiyle eşleşir. Hesap var olduğu sürece, kullanıcı birincil takvimi hiçbir zaman silinemez veya bu takvimin "sahibi olmayabilir". Ancak diğer kullanıcılarla paylaşılmaya devam edebilir.

Birincil takvime ek olarak, istediğiniz sayıda başka takvim de 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 de alabilir veya ayarlayabilirsiniz. Örneğin, takvim başlığı ve varsayılan saat dilimi genel özelliklerdir.

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

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

İşlem Takvimler CalendarList
insert Yeni bir ikincil takvim oluşturur. Varsayılan olarak, bu takvim oluşturan kişinin takvim listesine de eklenir. Mevcut bir takvimi kullanıcının listesine ekler.
delete İkincil bir takvimi siler. Takvimi kullanıcının listesinden kaldırır.
get Takvim meta verilerini (ör. başlık, saat dilimi) alır. Meta verilerin ve renk veya geçersiz kılma hatırlatıcıları gibi kullanıcıya özgü ö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 bir şekilde birden fazla kez gerçekleşir. Bu tekrarlanan etkinlikler, farklı başlangıç ve bitiş zamanlarına sahip olma dışında çoğu zaman aynıdır.

Belirli bir programa göre tekrar eden 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 zamanlaması iki bölümden oluşur:

  • Başlangıç ve bitiş alanları (bu yalnızca bağımsız bir etkinlikmiş gibi ilk olayı 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 daha fazla RRULE, RDATE veya EXDATE özelliğini temsil eden bir dize dizisi içerir.

RRULE özelliği, etkinliğin tekrarlanması için düzenli bir kural tanımladığı için en önemlidir. Çeşitli bileşenlerden oluşur. Bunlardan bazıları:

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

  • 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 tekrarlanması gereken tarih veya tarih/saat.

  • BYDAY: Etkinliğin tekrarlanması gereken haftanın günleri (SU, MO, TU vb.). Diğer benzer bileşenler arasında BYMONTH, BYYEARDAY ve BYHOUR yer alır.

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

EXDATE özelliği RDATE özelliğine benzer ancak etkinliğin gerçekleşmemesi gereken tarihleri veya tarih-saatleri belirtir. Yani bu tekrarların hariç tutulması gerekir. Bu, yineleme kuralı tarafından oluşturulan geçerli bir örneğe işaret etmelidir.

EXDATE ve RDATE bir saat dilimine sahip olabilir ve tüm gün süren etkinlikler için tarihler (tarih-saatler değil) olmalıdır.

Özelliklerin her biri yinelenme alanında birden çok kez bulunabilir. Yinelenme, tüm RRULE ve RDATE kurallarının toplamından, tüm EXDATE kuralları tarafından hariç tutulanlardan çıkarılarak tanımlanır.

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

  1. 15 Eylül 2015 tarihinde her Salı ve Cuma 06:00'dan 07:00'ye kadar süren ve 29 Eylül'de beşinci gerçekleşmeden 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 9 ve 11 Haziran hariç olmak üzere ay boyunca 3 günde bir tekrarlanan tüm gün süren 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ç örnekten oluşur: Söz konusu etkinliğin farklı zamanlarda tekrarlanması. Bu örnekler etkinlik olarak görev yapar.

Düzenli etkinlik değişiklikleri düzenli etkinliğin tamamını (ve tüm örneklerini) veya yalnızca tek tek örnekleri etkileyebilir. Üst tekrarlanan etkinliklerinden farklı olan örneklere istisnalar adı verilir.

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

Google Takvim API'si aracılığıyla yinelenen etkinlikler ve örneklerle nasıl çalışabileceğinize dair örnekleri burada bulabilirsiniz.

Saat dilimleri

Saat dilimi, tek tip standart saati gözlemleyen 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 etkileri nedeniyle varsayılan saat dilimi olarak da bilinir. Takvim saat dilimi, zaman değerlerinin events.get(), events.list() ve events.instances() yöntemleri tarafından 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 çıkarırsanız bu yöntemlerin tümü varsayılan olarak takvim saat dilimini kullanır.
Tüm gün süren etkinlikleri zaman parantezli sorgularla eşleştirme
list() ve instances() yöntemleri, başlangıç ve bitiş zamanı filtrelerini belirtmenizi sağlar. Yöntem, belirtilen aralıktaki örnekleri döndürür. Takvim saat dilimi, filtre spesifikasyonuna dahil 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 başlangıç ve bitiş zamanı vardır. Bu zamanların spesifikasyonu saat dilimini içerebilir. Saat dilimini birkaç şekilde belirtebilirsiniz. Aşağıdakilerin tümü aynı saati belirtir:

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

Dilerseniz etkinlik saatlerini UTC olarak da belirtebilirsiniz:

  • Zamanı UTC olarak belirtin: 2017-01-25T14:00:00Z veya sıfır göreli konum (2017-01-25T14:00:00+0000) kullanın.

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

Bir etkinlikteki saat dilimini gösteren ekran görüntüsü parçası

Düzenli etkinlik saat dilimi

Düzenli etkinlikler için her zaman tek bir saat dilimi belirtilmelidir. Bu parametre, etkinliğin tekrarlarının sayısını artırmak için gereklidir.