Bu dokümanda, düzenli etkinlikler ve bunların örnekleriyle nasıl çalışabileceğiniz açıklanmaktadır.
Düzenli etkinlikler oluşturun
Düzenli etkinlikler oluşturma, event
kaynağının recurrence
alanı ayarlanmış olarak normal (tek) bir etkinlik oluşturmaya benzer.
Protokol
POST /calendar/v3/calendars/primary/events ... { "summary": "Appointment", "location": "Somewhere", "start": { "dateTime": "2011-06-03T10:00:00.000-07:00", "timeZone": "America/Los_Angeles" }, "end": { "dateTime": "2011-06-03T10:25:00.000-07:00", "timeZone": "America/Los_Angeles" }, "recurrence": [ "RRULE:FREQ=WEEKLY;UNTIL=20110701T170000Z", ], "attendees": [ { "email": "attendeeEmail", # Other attendee's data... }, # ... ], }
Java
Event event = new Event(); event.setSummary("Appointment"); event.setLocation("Somewhere"); ArrayList<EventAttendee> attendees = new ArrayList<EventAttendee>(); attendees.add(new EventAttendee().setEmail("attendeeEmail")); // ... event.setAttendees(attendees); DateTime start = DateTime.parseRfc3339("2011-06-03T10:00:00.000-07:00"); DateTime end = DateTime.parseRfc3339("2011-06-03T10:25:00.000-07:00"); event.setStart(new EventDateTime().setDateTime(start).setTimeZone("America/Los_Angeles")); event.setEnd(new EventDateTime().setDateTime(end).setTimeZone("America/Los_Angeles")); event.setRecurrence(Arrays.asList("RRULE:FREQ=WEEKLY;UNTIL=20110701T170000Z")); Event recurringEvent = service.events().insert("primary", event).execute(); System.out.println(createdEvent.getId());
.NET
Event event = new Event() { Summary = "Appointment", Location = "Somewhere", Start = new EventDateTime() { DateTime = new DateTime("2011-06-03T10:00:00.000:-07:00") TimeZone = "America/Los_Angeles" }, End = new EventDateTime() { DateTime = new DateTime("2011-06-03T10:25:00.000:-07:00") TimeZone = "America/Los_Angeles" }, Recurrence = new String[] { "RRULE:FREQ=WEEKLY;UNTIL=20110701T170000Z" }, Attendees = new List<EventAttendee>() { new EventAttendee() { Email: "attendeeEmail" }, // ... } }; Event recurringEvent = service.Events.Insert(event, "primary").Fetch(); Console.WriteLine(recurringEvent.Id);
Python
event = { 'summary': 'Appointment', 'location': 'Somewhere', 'start': { 'dateTime': '2011-06-03T10:00:00.000-07:00', 'timeZone': 'America/Los_Angeles' }, 'end': { 'dateTime': '2011-06-03T10:25:00.000-07:00', 'timeZone': 'America/Los_Angeles' }, 'recurrence': [ 'RRULE:FREQ=WEEKLY;UNTIL=20110701T170000Z', ], 'attendees': [ { 'email': 'attendeeEmail', # Other attendee's data... }, # ... ], } recurring_event = service.events().insert(calendarId='primary', body=event).execute() print recurring_event['id']
PHP
$event = new Google_Service_Calendar_Event(); $event->setSummary('Appointment'); $event->setLocation('Somewhere'); $start = new Google_Service_Calendar_EventDateTime(); $start->setDateTime('2011-06-03T10:00:00.000-07:00'); $start->setTimeZone('America/Los_Angeles'); $event->setStart($start); $end = new Google_Service_Calendar_EventDateTime(); $end->setDateTime('2011-06-03T10:25:00.000-07:00'); $end->setTimeZone('America/Los_Angeles'); $event->setEnd($end); $event->setRecurrence(array('RRULE:FREQ=WEEKLY;UNTIL=20110701T170000Z')); $attendee1 = new Google_Service_Calendar_EventAttendee(); $attendee1->setEmail('attendeeEmail'); // ... $attendees = array($attendee1, // ... ); $event->attendees = $attendees; $recurringEvent = $service->events->insert('primary', $event); echo $recurringEvent->getId();
Ruby
event = Google::Apis::CalendarV3::Event.new( summary: 'Appointment', location: 'Somewhere', start: { date_time: '2011-06-03T10:00:00.000-07:00', time_zone: 'America/Los_Angeles' }, end: { date_time: '2011-06-03T10:25:00.000-07:00', time_zone: 'America/Los_Angeles' }, recurrence: ['RRULE:FREQ=WEEKLY;UNTIL=20110701T170000Z'] attendees: [ { email: 'attendeeEmail' }, #... ] ) response = client.insert_event('primary', event) print response.id
Erişim örnekleri
Belirli bir sayfanın tüm örneklerini görmek için events.instances() isteğini kullanabilirsiniz.
Varsayılan olarak events.list()
isteği
ve düzenli etkinlikleri, düzenli etkinlikleri ve
istisnalar;
istisna olmayan örnekler döndürülmez.
singleEvents
parametresi
true
olarak ayarlanırsa tüm örnekler sonuçta görünür ancak temel yinelenen etkinlikler görünmez. Uygun/meşgul izinlerine sahip bir kullanıcı events.list()
sorgusunu sorguladığında,
singleEvent
true
gibi davranır. Erişim kontrol listesi kuralları hakkında daha fazla bilgi edinmek için Acl'ye bakın.
Bağımsız örnekler, tek etkinliklere benzer. Ebeveynlerin düzenli etkinliklerinin aksine
örneklerde recurrence
alanı ayarlanmamıştır.
Aşağıdaki etkinlik alanları örneklere özeldir:
recurringEventId
: Bu örneğin ait olduğu üst düzenli etkinliğin kimliğioriginalStartTime
: bu örneğin başladığı saat, üst düzenli etkinlikteki yineleme verilerine göre değişir. Örneğin yeniden planlandıysa bu süre, gerçekstart
zamanından farklı olabilir. Örnek taşınmış olsa bile yinelenen etkinlik serisindeki örneği benzersiz şekilde tanımlar.
Örnekleri değiştirme veya silme
Tek bir örneği değiştirmek (istisna oluşturmak) için istemci uygulamalarının öncelikle örneği alması ve ardından gövdede güncellenmiş veriler içeren örnek düzenleme URL'sine yetkili bir PUT isteği göndererek güncellemesi gerekir. URL şu biçimdedir:
https://www.googleapis.com/calendar/v3/calendars/calendarId/events/instanceId
calendarId ve instanceId yerine uygun değerleri kullanın.
Başarı sonrasında sunucu, güncellenen örnekle HTTP 200 OK durum koduyla yanıt verir. Aşağıdaki örnekte, düzenli bir etkinliğin örneğinin nasıl iptal edileceği gösterilmektedir.
Protokol
PUT /calendar/v3/calendars/primary/events/instanceId ... { "kind": "calendar#event", "id": "instanceId", "etag": "instanceEtag", "status": "cancelled", "htmlLink": "https://www.google.com/calendar/event?eid=instanceEid", "created": "2011-05-23T22:27:01.000Z", "updated": "2011-05-23T22:27:01.000Z", "summary": "Recurring event", "location": "Somewhere", "creator": { "email": "userEmail" }, "recurringEventId": "recurringEventId", "originalStartTime": "2011-06-03T10:00:00.000-07:00", "organizer": { "email": "userEmail", "displayName": "userDisplayName" }, "start": { "dateTime": "2011-06-03T10:00:00.000-07:00", "timeZone": "America/Los_Angeles" }, "end": { "dateTime": "2011-06-03T10:25:00.000-07:00", "timeZone": "America/Los_Angeles" }, "iCalUID": "eventUID", "sequence": 0, "attendees": [ { "email": "attendeeEmail", "displayName": "attendeeDisplayName", "responseStatus": "needsAction" }, # ... { "email": "userEmail", "displayName": "userDisplayName", "responseStatus": "accepted", "organizer": true, "self": true } ], "guestsCanInviteOthers": false, "guestsCanSeeOtherGuests": false, "reminders": { "useDefault": true } }
Java
// First retrieve the instances from the API. Events instances = service.events().instances("primary", "recurringEventId").execute(); // Select the instance to cancel. Event instance = instances.getItems().get(0); instance.setStatus("cancelled"); Event updatedInstance = service.events().update("primary", instance.getId(), instance).execute(); // Print the updated date. System.out.println(updatedInstance.getUpdated());
.NET
// First retrieve the instances from the API. Events instances = service.Events.Instances("primary", "recurringEventId").Fetch(); // Select the instance to cancel. Event instance = instances.Items[0]; instance.Status = "cancelled"; Event updatedInstance = service.Events.Update(instance, "primary", instance.Id).Fetch(); // Print the updated date. Console.WriteLine(updatedInstance.Updated);
Python
# First retrieve the instances from the API. instances = service.events().instances(calendarId='primary', eventId='recurringEventId').execute() # Select the instance to cancel. instance = instances['items'][0] instance['status'] = 'cancelled' updated_instance = service.events().update(calendarId='primary', eventId=instance['id'], body=instance).execute() # Print the updated date. print updated_instance['updated']
PHP
$events = $service->events->instances("primary", "eventId"); // Select the instance to cancel. $instance = $events->getItems()[0]; $instance->setStatus('cancelled'); $updatedInstance = $service->events->update('primary', $instance->getId(), $instance); // Print the updated date. echo $updatedInstance->getUpdated();
Ruby
# First retrieve the instances from the API. instances = client.list_event_instances('primary', 'recurringEventId') # Select the instance to cancel. instance = instances.items[0] instance.status = 'cancelled' response = client.update_event('primary', instance.id, instance) print response.updated
Aşağıdaki tüm örnekleri değiştir
Belirli bir (hedef) örnekte veya sonrasında düzenli bir etkinliğin tüm örneklerini değiştirmek için iki ayrı API isteğinde bulunmanız gerekir. Bu istekler, orijinal düzenli etkinliği ikiye ayırır: Bunlar değiştirilmeden örnekleri tutan orijinal etkinlik ve yeni tekrarlanan etkinlik, değişikliğin uygulandığı örnekler:- Şu numara için
events.update()
numaralı telefonu arayın: örneklerin orijinal düzenli etkinliğini kırpın. Bunu,RRULE
öğesinin başlangıç zamanından önceye işaret edecek şekildeUNTIL
bileşeni ilk hedef örneğidir. Alternatif olarak, şunun yerineCOUNT
bileşenini ayarlayabilirsiniz:UNTIL
. - Şu numara için
events.insert()
numaralı telefonu arayın: yeni bir düzenli etkinlik oluşturun ve değişiklik gösterir. Yeni düzenli etkinliğin başlangıç zamanı şu olmalıdır: hedef örneğidir.
Bu örnekte, konumun üçüncü taraftan başlayarak "Başka bir yer" olarak nasıl değiştirileceği gösterilmektedir bu düzenli etkinliğin bir örneğidir.
Protokol
# Updating the original recurring event to trim the instance list: PUT /calendar/v3/calendars/primary/events/recurringEventId ... { "summary": "Appointment", "location": "Somewhere", "start": { "dateTime": "2011-06-03T10:00:00.000-07:00", "timeZone": "America/Los_Angeles" }, "end": { "dateTime": "2011-06-03T10:25:00.000-07:00", "timeZone": "America/Los_Angeles" }, "recurrence": [ "RRULE:FREQ=WEEKLY;UNTIL=20110617T065959Z", ], "attendees": [ { "email": "attendeeEmail", # Other attendee's data... }, # ... ], } # Creating a new recurring event with the change applied: POST /calendar/v3/calendars/primary/events ... { "summary": "Appointment", "location": "Somewhere else", "start": { "dateTime": "2011-06-17T10:00:00.000-07:00", "timeZone": "America/Los_Angeles" }, "end": { "dateTime": "2011-06-17T10:25:00.000-07:00", "timeZone": "America/Los_Angeles" }, "recurrence": [ "RRULE:FREQ=WEEKLY;UNTIL=20110617T065959Z", ], "attendees": [ { "email": "attendeeEmail", # Other attendee's data... }, # ... ], }