این راهنما تقویمها، رویدادها و ارتباط آنها با یکدیگر را شرح میدهد.
تقویمها
یک تقویم مجموعهای از رویدادهای مرتبط به همراه فرادادههای اضافی مانند خلاصه، منطقه زمانی پیشفرض، مکان و غیره است. هر تقویم با یک شناسه شناسایی میشود که همان آدرس ایمیل است. تقویمها را میتوان با دیگران به اشتراک گذاشت. تقویمهای اصلی متعلق به حساب کاربری مرتبط با خود هستند، سایر تقویمها متعلق به یک مالک داده واحد هستند.
رویدادها
یک رویداد ، شیءای است که با یک تاریخ یا محدوده زمانی خاص مرتبط است. رویدادها با یک شناسه منحصر به فرد شناسایی میشوند. رویدادها علاوه بر تاریخ-زمان شروع و پایان، حاوی دادههای دیگری مانند خلاصه، توضیحات، مکان، وضعیت، یادآوریها، پیوستها و غیره هستند.
انواع رویدادها
تقویم گوگل از رویدادهای تکی و تکرارشونده پشتیبانی میکند:
- یک رویداد واحد ، نشان دهنده یک رخداد منحصر به فرد است.
- یک رویداد تکرارشونده ، وقوع چندین رویداد را تعریف میکند.
رویدادها همچنین میتوانند زمانبندیشده یا تمامروز باشند:
- یک رویداد زماندار بین دو نقطه خاص در زمان رخ میدهد. رویدادهای زماندار از فیلدهای
start.dateTimeوend.dateTimeبرای مشخص کردن زمان وقوع خود استفاده میکنند. - یک رویداد تمام روز، کل یک روز یا مجموعهای از روزهای متوالی را در بر میگیرد. رویدادهای تمام روز از فیلدهای
start.dateوend.dateبرای مشخص کردن زمان وقوع خود استفاده میکنند. توجه داشته باشید که فیلد منطقه زمانی برای رویدادهای تمام روز اهمیتی ندارد.
برگزارکنندگان
رویدادها یک برگزارکننده واحد دارند که تقویمی است که شامل نسخه اصلی رویداد میشود. رویدادها همچنین میتوانند چندین شرکتکننده داشته باشند. یک شرکتکننده معمولاً تقویم اصلی یک کاربر دعوتشده است.
نمودار زیر رابطه مفهومی بین تقویمها، رویدادها و سایر عناصر مرتبط را نشان میدهد:

تقویمهای اصلی و سایر تقویمها
تقویم اصلی نوع خاصی از تقویم است که با یک حساب کاربری واحد مرتبط است. این تقویم به طور خودکار برای هر حساب کاربری جدید ایجاد میشود و شناسه آن معمولاً با آدرس ایمیل اصلی کاربر مطابقت دارد. تا زمانی که حساب وجود داشته باشد، تقویم اصلی آن هرگز نمیتواند توسط کاربر حذف یا "از مالکیت خارج شود". با این حال، همچنان میتواند با سایر کاربران به اشتراک گذاشته شود.
علاوه بر تقویم اصلی، میتوانید به طور صریح هر تعداد تقویم دیگر ایجاد کنید. این تقویمها را میتوان تغییر داد، حذف کرد و با دیگران به اشتراک گذاشت. چنین تقویمهایی دارای یک مالک داده واحد با بالاترین امتیازات، از جمله حق انحصاری حذف تقویم، هستند. سطح دسترسی مالک داده را نمیتوان کاهش داد. مالک داده در ابتدا به عنوان کاربری که تقویم را ایجاد کرده است تعیین میشود، با این حال مالکیت دادهها را میتوان در رابط کاربری تقویم گوگل منتقل کرد.
تقویم و فهرست تقویم
مجموعه تقویمها (Calendars) تمام تقویمهای موجود را نشان میدهد. میتوان از آن برای ایجاد و حذف تقویمها استفاده کرد. همچنین میتوانید ویژگیهای عمومی مشترک بین همه کاربرانی که به یک تقویم دسترسی دارند را بازیابی یا تنظیم کنید. به عنوان مثال، عنوان تقویم و منطقه زمانی پیشفرض، ویژگیهای عمومی هستند.
فهرست تقویم (CalendarList) مجموعهای از تمام ورودیهای تقویم است که یک کاربر به لیست خود اضافه کرده است (در پنل سمت چپ رابط کاربری وب نشان داده شده است). میتوانید از آن برای اضافه کردن و حذف تقویمهای موجود به/از لیست کاربران استفاده کنید. همچنین میتوانید از آن برای بازیابی و تنظیم مقادیر ویژگیهای تقویم مخصوص کاربر، مانند یادآوریهای پیشفرض، استفاده کنید. مثال دیگر رنگ پیشزمینه است، زیرا کاربران مختلف میتوانند رنگهای متفاوتی را برای یک تقویم تنظیم کنند.
جدول زیر معنی عملیات را برای دو مجموعه مقایسه میکند:
| عملیات | تقویمها | فهرست تقویم |
|---|---|---|
insert | یک تقویم ثانویه جدید ایجاد میکند. این تقویم نیز به فهرست تقویمهای سازنده اضافه میشود و قابل حذف نیست، مگر اینکه تقویم حذف یا منتقل شود. | یک تقویم موجود را در لیست کاربر وارد میکند. |
delete | یک تقویم ثانویه را حذف میکند. | یک تقویم را از لیست کاربر حذف میکند. |
get | فرادادههای تقویم مانند عنوان، منطقه زمانی را بازیابی میکند. | بازیابی فراداده به علاوه سفارشیسازیهای خاص کاربر مانند رنگ یا یادآوریهای لغو. |
patch / update | فرادادههای تقویم را تغییر میدهد. | ویژگیهای تقویم مختص کاربر را تغییر میدهد. |
رویدادهای تکرارشونده
برخی رویدادها چندین بار در یک برنامه منظم اتفاق میافتند، مانند جلسات هفتگی، تولدها و تعطیلات. این رویدادهای تکراری، گذشته از داشتن زمان شروع و پایان متفاوت، اغلب یکسان هستند.
رویدادهایی که طبق یک برنامه تعریف شده تکرار شوند، تکرارپذیر نامیده میشوند. رویدادهای منفرد تکرارپذیر نیستند و فقط یک بار اتفاق میافتند.
قانون تکرار
برنامهی یک رویداد تکرارشونده در دو بخش تعریف میشود:
فیلدهای شروع و پایان آن (که اولین رخداد را تعریف میکنند، گویی این فقط یک رویداد مستقل و منفرد است)، و
فیلد تکرار آن (که نحوه تکرار رویداد را در طول زمان تعریف میکند).
فیلد تکرار شامل آرایهای از رشتهها است که نشاندهنده یک یا چند ویژگی RRULE ، RDATE یا EXDATE مطابق تعریف RFC 5545 است.
ویژگی RRULE مهمترین ویژگی است زیرا یک قانون منظم برای تکرار رویداد تعریف میکند. این ویژگی از چندین جزء تشکیل شده است. برخی از آنها عبارتند از:
FREQ— تعداد دفعاتی که یک رویداد باید تکرار شود (مانندDAILYیاWEEKLY). الزامی است.INTERVAL— همراه باFREQبرای مشخص کردن اینکه رویداد چند وقت یکبار باید تکرار شود، کار میکند. برای مثال،FREQ=DAILY;INTERVAL=2به معنی هر دو روز یک بار است.COUNT— تعداد دفعاتی که این رویداد باید تکرار شود.UNTIL- تاریخ یا تاریخ-زمانی که رویداد باید تا آن زمان تکرار شود (شامل).BYDAY— روزهایی از هفته که رویداد باید در آنها تکرار شود (SU،MO،TUو غیره). سایر اجزای مشابه شاملBYMONTH،BYYEARDAYوBYHOURهستند.
ویژگی RDATE تاریخها یا تاریخ-زمانهای اضافی را مشخص میکند که در آنها رویدادهای مورد نظر باید رخ دهند. برای مثال، RDATE;VALUE=DATE:19970101,19970120 . از این ویژگی برای اضافه کردن رویدادهای اضافی که تحت پوشش RRULE نیستند، استفاده کنید.
ویژگی EXDATE مشابه RDATE است، اما تاریخها یا تاریخ-زمانهایی را مشخص میکند که رویداد نباید اتفاق بیفتد. یعنی، آن اتفاقات باید حذف شوند. این باید به یک نمونه معتبر تولید شده توسط قانون تکرار اشاره کند.
EXDATE و RDATE میتوانند منطقه زمانی داشته باشند و برای رویدادهای تمام روز باید تاریخ باشند (نه تاریخ-زمان).
هر یک از ویژگیها ممکن است چندین بار در فیلد تکرار رخ دهند. تکرار به صورت اجتماع تمام قوانین RRULE و RDATE ، منهای مواردی که توسط تمام قوانین EXDATE حذف شدهاند، تعریف میشود.
در اینجا چند نمونه از رویدادهای تکراری آورده شده است:
رویدادی که از ساعت ۶ صبح تا ۷ صبح هر سهشنبه و جمعه اتفاق میافتد و از ۱۵ سپتامبر ۲۰۱۵ شروع میشود و پس از پنجمین رخداد در ۲۹ سپتامبر متوقف میشود:
... "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" ], …یک رویداد تمام روز که از اول ژوئن ۲۰۱۵ آغاز میشود و هر ۳ روز در طول ماه تکرار میشود، به جز ۱۰ ژوئن اما شامل ۹ و ۱۱ ژوئن:
... "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" ], …
موارد و استثنائات
یک رویداد تکرارشونده از چندین نمونه تشکیل شده است: وقوعهای خاص آن در زمانهای مختلف. این نمونهها خود به عنوان رویداد عمل میکنند.
تغییرات رویدادهای تکرارشونده میتوانند یا کل رویداد تکرارشونده (و تمام نمونههای آن) را تحت تأثیر قرار دهند، یا فقط نمونههای منفرد را. نمونههایی که با رویداد تکرارشونده والد خود متفاوت هستند، استثنا نامیده میشوند.
برای مثال، یک استثنا ممکن است خلاصه، زمان شروع متفاوت یا شرکتکنندگان اضافی دعوتشده فقط برای آن نمونه داشته باشد. همچنین میتوانید یک نمونه را بهطور کامل بدون حذف رویداد تکرارشونده لغو کنید (لغو نمونهها در status رویداد منعکس میشود).
نمونههایی از نحوه کار با رویدادها و نمونههای تکرارشونده از طریق API تقویم گوگل را میتوانید اینجا بیابید.
مناطق زمانی
منطقه زمانی، منطقهای را مشخص میکند که زمان استاندارد یکسانی را رعایت میکند. در API تقویم گوگل، شما مناطق زمانی را با استفاده از شناسههای منطقه زمانی IANA مشخص میکنید.
شما میتوانید منطقه زمانی را هم برای تقویمها و هم برای رویدادها تنظیم کنید. بخشهای بعدی اثرات این تنظیمات را شرح میدهند.
منطقه زمانی تقویمی
منطقه زمانی تقویم به دلیل پیامدهای آن بر نتایج پرس و جو، به عنوان منطقه زمانی پیشفرض نیز شناخته میشود. منطقه زمانی تقویم بر نحوه تفسیر یا ارائه مقادیر زمانی توسط متدهای events.get() ، events.list() و events.instances() تأثیر میگذارد.
- تبدیل منطقه زمانی نتیجه پرس و جو
- نتایج متدهای
get()،list()وinstances()در منطقه زمانی که شما در پارامترtimeZoneمشخص میکنید، بازگردانده میشوند. اگر این پارامتر را حذف کنید، همه این متدها از منطقه زمانی تقویم به عنوان پیشفرض استفاده میکنند. - تطبیق رویدادهای تمام روز با پرسوجوهای دارای براکت زمانی
- متدهای
list()وinstances()به شما امکان میدهند فیلترهای زمان شروع و پایان را مشخص کنید، و این متد نمونههایی را برمیگرداند که در محدوده مشخص شده قرار میگیرند. منطقه زمانی تقویم برای محاسبه زمان شروع و پایان رویدادهای تمام روز استفاده میشود تا مشخص شود که آیا آنها در مشخصات فیلتر قرار میگیرند یا خیر.
منطقه زمانی رویداد
نمونههای رویداد دارای زمان شروع و پایان هستند؛ مشخصات این زمانها ممکن است شامل منطقه زمانی باشد. میتوانید منطقه زمانی را به چندین روش مشخص کنید؛ موارد زیر همگی زمان یکسانی را مشخص میکنند:
- یک انحراف از منطقه زمانی را در فیلد
dateTimeوارد کنید، برای مثال2017-01-25T09:00:00-0500. - زمان را بدون هیچ انحرافی مشخص کنید، برای مثال
2017-01-25T09:00:00، و فیلدtimeZoneخالی بگذارید (این به طور ضمنی از منطقه زمانی پیشفرض استفاده میکند). - زمان را بدون هیچ انحرافی مشخص کنید، برای مثال
2017-01-25T09:00:00، اما از فیلدtimeZoneبرای مشخص کردن منطقه زمانی استفاده کنید.
اگر ترجیح میدهید، میتوانید زمان رویدادها را بر اساس UTC نیز مشخص کنید:
- زمان را بر حسب UTC مشخص کنید:
2017-01-25T14:00:00Zیا از یک آفست صفر2017-01-25T14:00:00+0000استفاده کنید.
نمایش داخلی زمان رویداد در همه این موارد یکسان است، اما تنظیم فیلد timeZone یک منطقه زمانی را به رویداد متصل میکند، درست مانند زمانی که یک منطقه زمانی رویداد را با استفاده از رابط کاربری تقویم تنظیم میکنید :

منطقه زمانی رویداد تکرارشونده
برای رویدادهای تکرارشونده، همیشه باید یک منطقه زمانی مشخص شود. این امر برای گسترش تکرارهای رویداد مورد نیاز است.