Takvimler ve etkinlikler

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

Takvimler

Takvim; özet, varsayılan saat dilimi, konum vb. gibi ek meta verilerin yanı sıra 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 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 ve ekler gibi başka veriler de içerir.

Etkinlik türleri

Google Takvim, tek seferlik ve düzenli etkinlikleri destekler:

  • Tek bir etkinlik, benzersiz bir oluşumu temsil eder.
  • Yinelenen bir etkinlik, birden fazla oluşumu tanımlar.

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

  • Zamanlanmış bir etkinlik, belirli iki zaman noktası 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, tüm günü veya art arda gelen günleri kapsar. 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 bir önemi olmadığını unutmayın.

Düzenleyenler

Etkinliklerin tek bir düzenleyeni vardır. Bu düzenleyen, etkinliğin ana kopyasını içeren takvimdir. Etkinliklerde birden fazla katılımcı da 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, hesabın birincil takvimi hiçbir zaman silinemez veya kullanıcı tarafından "sahipsiz" bırakılamaz. Ancak bu bilgi 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ılarla paylaşılan genel özellikleri alabilir veya ayarlayabilirsiniz. Örneğin, bir takvimin başlığı ve varsayılan saat dilimi genel ö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). Bu aracı, mevcut takvimleri kullanıcı listesine eklemek ve listeden kaldırmak için kullanabilirsiniz. Ayrıca, kullanıcıya özel takvim özelliklerinin (ör. varsayılan hatırlatıcılar) değerlerini almak ve ayarlamak için de kullanılır. Farklı kullanıcılar aynı takvim için farklı renkler ayarlayabildiğinden, başka bir örnek de ön plan rengidir.

Aşağıdaki tabloda, iki koleksiyondaki işlemlerin anlamı karşılaştırılmaktadır:

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

Düzenli etkinlikler

Bazı etkinlikler düzenli olarak birden fazla kez gerçekleşir. Örneğin, haftalık toplantılar, doğum günleri ve tatiller. Bu tekrarlanan etkinlikler, farklı başlangıç ve bitiş zamanlarına sahip olmanın dışında genellikle aynıdır.

Belirli bir plana göre tekrarlanan etkinliklere yinelenen etkinlik denir. Tek seferlik etkinlikler tekrarlanmaz ve yalnızca bir kez gerçekleşir.

Yinelenme kuralı

Yinelenen bir etkinliğin programı iki bölümden oluşur:

  • Başlangıç ve bitiş alanları (bu alanlar, etkinliğin ilk gerçekleşme zamanını tanımlar. Bu, tek başına bir etkinlikmiş gibi değerlendirilir.) ve

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

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

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

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

  • INTERVAL: Etkinliğin ne sıklıkta tekrarlanması gerektiğini belirtmek için FREQ ile birlikte kullanılır. Örneğin, FREQ=DAILY;INTERVAL=2 iki günde bir anlamına gelir.

  • COUNT: Bu etkinliğin tekrarlanması gereken sayı.

  • UNTIL: Etkinliğin tekrar edilmesi gereken tarih veya tarih-saat (dahil).

  • BYDAY: Etkinliğin yineleneceği 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, etkinlik oluşumlarının gerçekleşmesi gereken ek tarihleri veya tarih-saatleri belirtir. Örneğin, RDATE;VALUE=DATE:19970101,19970120. Bu özelliği, RRULE kapsamında olmayan ek oluşumları eklemek için kullanın.

EXDATE özelliği, RDATE'e benzer ancak etkinliğin gerçekleşmemesi gereken tarihleri veya tarih-saatleri belirtir. Yani bu tür durumlar hariç tutulmalıdır. Bu, tekrarlama kuralı tarafından oluşturulan geçerli bir örneğe işaret etmelidir.

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

Özelliklerin her biri, tekrar alanında birden çok kez yer alabilir. Tekrar, tüm RRULE ve RDATE kurallarının birleşimi olarak tanımlanır. Tüm EXDATE kurallarıyla hariç tutulanlar bu birleşimin dışında kalır.

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

  1. 15 Eylül 2015'ten itibaren her Salı ve Cuma günü saat 06:00 ile 07:00 arasında gerçekleşen ve 29 Eylül'de beşinci kez gerçekleştiğinde 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şlayıp ay boyunca 3 günde bir yinelenen, 10 Haziran hariç ancak 9 ve 11 Haziran'ı içeren tüm günlük 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 etkinlikler, farklı zamanlarda gerçekleşen belirli örneklerden oluşur. Bu örnekler, etkinlik olarak kabul edilir.

Tekrarlanan etkinlik değişiklikleri, tekrarlanan etkinliğin tamamını (ve tüm örneklerini) veya yalnızca tek tek örnekleri etkileyebilir. Tekrarlanan üst etkinliğinden farklı olan örnekler istisnalar olarak adlandırılır.

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

Google Calendar API aracılığıyla yinelenen etkinlikler ve örneklerle nasıl çalışılacağına dair örnekleri burada bulabilirsiniz.

Saat dilimleri

Saat dilimi, standart saatin tek tip olarak uygulandığı bir bölgeyi belirtir. Google Takvim API'sinde saat dilimlerini belirtmek için IANA saat dilimi tanımlayıcılarını kullanırsınız.

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, events.get(), events.list() ve events.instances() yöntemlerinde zaman değerlerinin 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 atlarsanız bu yöntemlerin tümünde varsayılan olarak takvim saat dilimi kullanılır.
Tüm gün süren etkinlikleri zaman aralığı içeren sorgularla eşleştirme
, list() ve instances() yöntemleri, belirtilen aralığa giren örnekleri döndüren yöntemle birlikte başlangıç ve bitiş zamanı filtrelerini belirtmenize olanak tanır. Tüm gün süren etkinliklerin başlangıç ve bitiş zamanlarını hesaplamak için takvim saat dilimi kullanılır. Bu sayede, etkinliklerin filtre spesifikasyonuna uygun olup olmadığı belirlenir.

Etkinlik saat dilimi

Etkinlik örneklerinin başlangıç ve bitiş zamanı vardır. Bu zamanların belirtilmesinde saat dilimi yer alabilir. Saat dilimini çeşitli şekillerde belirtebilirsiniz. Aşağıdaki örneklerin tümünde aynı saat belirtilmektedir:

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

Dilerseniz etkinlik zamanlarını UTC olarak da belirtebilirsiniz:

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

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 bir saat dilimi ekler:

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

Düzenli etkinliklerin saat dilimi

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