Kalender & acara

Panduan ini menjelaskan kalender, acara, dan hubungan mereka satu sama lain.

Kalender

Kalender adalah kumpulan acara terkait, beserta metadata tambahan seperti ringkasan, zona waktu default, lokasi, dll. Setiap kalender diidentifikasi dengan ID yang merupakan alamat email. Kalender dapat memiliki beberapa pemilik.

Peristiwa

Peristiwa adalah objek yang terkait dengan rentang tanggal atau waktu tertentu. Peristiwa diidentifikasi dengan ID unik. Selain waktu tanggal mulai dan akhir, peristiwa berisi data lain seperti ringkasan, deskripsi, lokasi, status, pengingat, lampiran, dll.

Jenis peristiwa

Google Kalender mendukung acara tunggal dan berulang:

  • Satu peristiwa mewakili satu kejadian unik.
  • Peristiwa berulang menentukan beberapa kejadian.

Peristiwa juga dapat memiliki waktu atau sepanjang hari:

  • Peristiwa timed terjadi di antara dua titik waktu tertentu. Peristiwa berjangka waktu menggunakan kolom start.dateTime dan end.dateTime untuk menentukan waktu terjadinya.
  • Acara sepanjang hari berlangsung selama satu hari penuh atau serangkaian hari berturut-turut. Peristiwa sepanjang hari menggunakan kolom start.date dan end.date untuk menentukan waktu terjadinya. Perhatikan bahwa kolom zona waktu tidak memiliki signifikansi untuk acara sepanjang hari.

Penyelenggara

Acara memiliki satu penyelenggara, yaitu kalender yang berisi salinan utama acara. Acara juga dapat memiliki beberapa peserta. Tamu biasanya merupakan kalender utama dari pengguna yang diundang.

Diagram berikut menunjukkan hubungan konseptual antara kalender, acara, dan elemen terkait lainnya:

Kalender utama & kalender lainnya

Kalender utama adalah jenis kalender khusus yang terkait dengan satu akun pengguna. Kalender ini dibuat secara otomatis untuk setiap akun pengguna baru dan ID-nya biasanya cocok dengan alamat email utama pengguna. Selama akun masih ada, kalender utamanya tidak akan dapat dihapus atau "tidak dimiliki" oleh pengguna. Namun, foto tersebut masih dapat dibagikan kepada pengguna lain.

Selain kalender utama, Anda dapat membuat sejumlah kalender lain secara eksplisit. Kalender ini dapat diubah, dihapus, dan dibagikan kepada beberapa pengguna.

Kalender & daftar kalender

Koleksi Kalender mewakili semua kalender yang ada. Alat ini dapat digunakan untuk membuat dan menghapus kalender. Anda juga dapat mengambil atau menetapkan properti global yang dibagikan ke semua pengguna yang memiliki akses ke kalender. Misalnya, judul kalender dan zona waktu default adalah properti global.

CalendarList adalah kumpulan semua entri kalender yang telah ditambahkan pengguna ke daftar mereka (ditampilkan di panel kiri UI web). Anda dapat menggunakannya untuk menambahkan dan menghapus kalender yang ada ke/dari daftar pengguna. Anda juga menggunakannya untuk mengambil dan menetapkan nilai properti kalender khusus pengguna, seperti pengingat default. Contoh lainnya adalah warna latar depan, karena pengguna yang berbeda dapat menetapkan warna yang berbeda untuk kalender yang sama.

Tabel berikut membandingkan arti operasi kedua koleksi:

Operasi Kalender CalendarList
insert Membuat kalender sekunder baru. Secara default, kalender ini juga ditambahkan ke daftar kalender pembuat. Menyisipkan kalender yang ada ke daftar pengguna.
delete Menghapus kalender sekunder. Menghapus kalender dari daftar pengguna.
get Mengambil metadata kalender, misalnya judul, zona waktu. Mengambil metadata plus penyesuaian khusus pengguna seperti warna atau pengingat penggantian.
patch/update Memodifikasi metadata kalender. Memodifikasi properti kalender spesifik per pengguna.

Acara rutin

Beberapa peristiwa terjadi beberapa kali dalam jadwal rutin, seperti pertemuan mingguan, hari ulang tahun, dan hari libur. Selain memiliki waktu mulai dan waktu berakhir yang berbeda, peristiwa berulang ini sering kali identik.

Acara disebut berulang jika berulang sesuai jadwal yang ditentukan. Peristiwa tunggal tidak berulang dan hanya terjadi sekali.

Aturan pengulangan

Jadwal untuk acara rutin didefinisikan dalam dua bagian:

  • Kolom awal dan akhirnya (yang menentukan kemunculan pertama, seolah-olah ini hanya peristiwa tunggal yang berdiri sendiri), dan

  • Kolom pengulangannya (yang menentukan cara peristiwa harus diulang dari waktu ke waktu).

Kolom pengulangan berisi array string yang mewakili satu atau beberapa properti RRULE, RDATE, atau EXDATE seperti yang didefinisikan dalam RFC 5545.

Properti RRULE adalah yang paling penting karena menentukan aturan reguler untuk mengulangi peristiwa. Hal ini terdiri dari beberapa komponen. Beberapa di antaranya adalah:

  • FREQ — Frekuensi pengulangan peristiwa (seperti DAILY atau WEEKLY). Wajib.

  • INTERVAL — Berfungsi bersama dengan FREQ untuk menentukan seberapa sering peristiwa harus diulang. Misalnya, FREQ=DAILY;INTERVAL=2 berarti sekali setiap dua hari.

  • COUNT — Berapa kali peristiwa ini harus diulang.

  • UNTIL — Tanggal atau tanggal-waktu saat acara harus diulang (inklusif).

  • BYDAY — Hari saat acara harus diulang (SU, MO, TU, dll.). Komponen serupa lainnya mencakup BYMONTH, BYYEARDAY, dan BYHOUR.

Properti RDATE menentukan tanggal atau tanggal-waktu tambahan saat peristiwa harus terjadi. Misalnya, RDATE;VALUE=DATE:19970101,19970120. Gunakan ini untuk menambahkan kemunculan tambahan yang tidak tercakup oleh RRULE.

Properti EXDATE mirip dengan RDATE, tetapi menentukan tanggal atau tanggal-waktu saat peristiwa tidak seharusnya terjadi. Artinya, kemunculan tersebut harus dikecualikan. Ini harus mengarah ke instance valid yang dihasilkan oleh aturan pengulangan.

EXDATE dan RDATE dapat memiliki zona waktu, dan harus berupa tanggal (bukan tanggal-waktu) untuk acara sepanjang hari.

Setiap properti dapat muncul dalam kolom pengulangan beberapa kali. Pengulangan didefinisikan sebagai gabungan dari semua aturan RRULE dan RDATE, dikurangi aturan yang dikecualikan oleh semua aturan EXDATE.

Berikut beberapa contoh peristiwa berulang:

  1. Acara yang terjadi dari pukul 06.00 hingga 07.00 setiap hari Selasa dan Jumat mulai dari 15 September 2015 dan berhenti setelah kejadian kelima pada 29 September:

    ...
    "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. Acara sepanjang hari yang dimulai pada 1 Juni 2015 dan berulang setiap 3 hari sepanjang bulan, kecuali 10 Juni, tetapi termasuk 9 dan 11 Juni:

    ...
    "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"
    ],
    …
    

Instance & pengecualian

Peristiwa berulang terdiri dari beberapa instance: kemunculan khususnya pada waktu yang berbeda. Instance ini berfungsi sebagai peristiwa itu sendiri.

Perubahan peristiwa berulang dapat memengaruhi seluruh peristiwa berulang (dan semua instance-nya), atau hanya instance individual. Instance yang berbeda dari acara rutin induknya disebut pengecualian.

Misalnya, pengecualian mungkin memiliki ringkasan yang berbeda, waktu mulai yang berbeda, atau tamu tambahan yang hanya diundang ke instance tersebut. Anda juga dapat membatalkan instance sepenuhnya tanpa menghapus peristiwa berulang (pembatalan instance akan tercermin dalam peristiwa status).

Contoh cara bekerja dengan acara dan instance rutin melalui Google Calendar API dapat ditemukan di sini.

Zona waktu

Zona waktu menentukan wilayah yang mengamati waktu standar yang seragam. Di Google Calendar API, Anda menentukan zona waktu menggunakan ID zona waktu IANA.

Anda dapat menyetel zona waktu untuk kalender dan acara. Bagian berikut menjelaskan efek setelan ini.

Zona waktu kalender

Zona waktu kalender juga dikenal sebagai zona waktu default karena implikasinya terhadap hasil kueri. Zona waktu kalender memengaruhi cara nilai waktu ditafsirkan atau ditampilkan oleh metode events.get(), events.list(), dan events.instances().

Konversi zona waktu hasil kueri
Hasil metode get(), list(), dan instances() ditampilkan dalam zona waktu yang Anda tentukan dalam parameter timeZone. Jika Anda menghilangkan parameter ini, semua metode ini akan menggunakan zona waktu kalender sebagai default.
Mencocokkan acara sepanjang hari dengan kueri terjadwal
Metode list(), dan instances() memungkinkan Anda menentukan filter waktu mulai dan berakhir, dengan metode tersebut menampilkan instance yang berada dalam rentang yang ditentukan. Zona waktu kalender digunakan untuk menghitung waktu mulai dan berakhir acara sepanjang hari untuk menentukan apakah acara tersebut berada dalam spesifikasi filter.

Zona Waktu Acara

Instance peristiwa memiliki waktu mulai dan berakhir. Spesifikasi untuk waktu ini dapat mencakup zona waktu. Anda dapat menentukan zona waktu dengan beberapa cara; semua cara berikut menentukan waktu yang sama:

  • Sertakan offset zona waktu di kolom dateTime, misalnya 2017-01-25T09:00:00-0500.
  • Tentukan waktu tanpa offset, misalnya 2017-01-25T09:00:00, dan biarkan kolom timeZone kosong (secara implisit menggunakan zona waktu default).
  • Tentukan waktu tanpa offset, misalnya 2017-01-25T09:00:00, tetapi gunakan kolom timeZone untuk menentukan zona waktu.

Anda juga dapat menentukan waktu acara dalam UTC jika mau:

  • Tentukan waktu dalam UTC: 2017-01-25T14:00:00Z atau gunakan offset nol 2017-01-25T14:00:00+0000.

Representasi internal waktu acara sama dalam semua kasus, tetapi menetapkan kolom timeZone akan menyertakan zona waktu ke acara, sama seperti saat Anda menetapkan zona waktu acara menggunakan UI Kalender:

Fragmen screenshot yang menampilkan zona waktu pada suatu acara

Zona waktu acara berulang

Untuk acara berulang, satu zona waktu harus selalu ditentukan. Kolom ini diperlukan untuk memperluas pengulangan kejadian.