Kullanıcıların en iyi doğa yürüyüşü rotalarını bulmasına yardımcı olan bir uygulama hayal edin. Yeni bir URL'ye bir takvim etkinliği olarak her zaman, kullanıcılar pek çok aktiviteyle otomatik olarak düzenlenir. Google Takvim onların, planı paylaşmalarına ve hazırlıklı olabilmeleri için onlara bu durumu hatırlatıyor. Ayrıca, sorunsuz bir şekilde entegre ettikten sonra, Google Now, Google Haritalar onları toplantı yerine zamanında yönlendiriyor.
Bu makalede, takvim etkinliklerinin nasıl oluşturulacağı ve bunların kullanıcılarınızın hesaplarına nasıl ekleneceği açıklanmaktadır. takvim.
Etkinlik ekle
Etkinlik oluşturmak için
events.insert()
yöntemi sağlayan:
en az şu parametreler:
calendarId
takvim tanımlayıcısıdır ve e-posta adresi olabilir etkinliğin veya özel bir anahtar kelimenin oluşturulacağı takvimin'primary'
, giriş yapmış kullanıcının birincil takvimini kullanır. Eğer kullanmak istediğiniz takvimin e-posta adresini bilmiyorsanız Google Takvim web uygulamasındaki takvim ayarlarından kontrol edebilir kullanıcı arayüzü ("Takvim Adresi" bölümünde) sonuç olarakcalendarList.list()
araması.event
, başlatma gibi gerekli tüm ayrıntılarla oluşturulacak etkinliktir ve sona erecektir. Yalnızcastart
veend
alanlarının doldurulması zorunludur. Bkz. Etkinlik grubunun tamamı içinevent
referansı alanları.
Başarılı bir şekilde etkinlik oluşturmak için şunları yapmanız gerekir:
- OAuth kapsamınızı
https://www.googleapis.com/auth/calendar
olarak ayarlayın. kullanıcının takviminde düzenleme erişiminiz olduğundan emin olun. - Kimliği doğrulanan kullanıcının
Sağladığınız
calendarId
(örneğin, Şu süre içincalendarList.get()
:calendarId
veaccessRole
kontrol ediliyor).
Etkinlik meta verisi ekleyin
Bir takvim etkinliği oluştururken isteğe bağlı olarak etkinlik meta verileri ekleyebilirsiniz. Şu durumda:
meta veri eklememeyi seçerseniz, birçok alanı güncellemek için
events.update()
; bazı alanlarda
Örneğin etkinlik kimliği gibi, yalnızca
events.insert()
işlemi.
- Konum
Konum alanına adres eklemek,
"yola çıkma vakti" yol tariflerini içeren bir harita görüntüleyin.
- Etkinlik kimliği
Etkinlik oluştururken kendi etkinlik kimliğinizi oluşturmayı seçebilirsiniz
bir metin reklam arıyoruz. Böylece, mevcut öğeleri . Aynı zamanda İşlem sonrasında bir noktada başarısız olursa yinelenen etkinlik oluşturulmasını önler bu işlem Takvim arka ucunda başarıyla yürütülür. Yanıt hayır ise: etkinlik kimliği sağlandığında sunucu sizin için bir tane oluşturur. Etkinlik kimliğini inceleyin referans belgesini inceleyin.
- Katılımcılar
Oluşturduğunuz etkinlik tüm birincil Google Takvimlerinde görünür
Aynı etkinlik kimliğiyle, eklediğiniz katılımcılarla. Mevcut
sendNotifications
tarihindetrue
adlı kullanıcıya ekleme isteğinde bulunursanız katılımcılar etkinliğiniz için bir e-posta bildirimi de alır. Şu etkinliklere göz atın: birden çok katılımcı rehberi daha fazla bilgi edinin.
Aşağıdaki örneklerde, etkinlik oluşturma ve bu etkinliğin meta verilerini ayarlama süreci gösterilmektedir:
Go
// Refer to the Go quickstart on how to setup the environment:
// https://developers.google.com/calendar/quickstart/go
// Change the scope to calendar.CalendarScope and delete any stored credentials.
event := &calendar.Event{
Summary: "Google I/O 2015",
Location: "800 Howard St., San Francisco, CA 94103",
Description: "A chance to hear more about Google's developer products.",
Start: &calendar.EventDateTime{
DateTime: "2015-05-28T09:00:00-07:00",
TimeZone: "America/Los_Angeles",
},
End: &calendar.EventDateTime{
DateTime: "2015-05-28T17:00:00-07:00",
TimeZone: "America/Los_Angeles",
},
Recurrence: []string{"RRULE:FREQ=DAILY;COUNT=2"},
Attendees: []*calendar.EventAttendee{
&calendar.EventAttendee{Email:"lpage@example.com"},
&calendar.EventAttendee{Email:"sbrin@example.com"},
},
}
calendarId := "primary"
event, err = srv.Events.Insert(calendarId, event).Do()
if err != nil {
log.Fatalf("Unable to create event. %v\n", err)
}
fmt.Printf("Event created: %s\n", event.HtmlLink)
Java
// Refer to the Java quickstart on how to setup the environment:
// https://developers.google.com/calendar/quickstart/java
// Change the scope to CalendarScopes.CALENDAR and delete any stored
// credentials.
Event event = new Event()
.setSummary("Google I/O 2015")
.setLocation("800 Howard St., San Francisco, CA 94103")
.setDescription("A chance to hear more about Google's developer products.");
DateTime startDateTime = new DateTime("2015-05-28T09:00:00-07:00");
EventDateTime start = new EventDateTime()
.setDateTime(startDateTime)
.setTimeZone("America/Los_Angeles");
event.setStart(start);
DateTime endDateTime = new DateTime("2015-05-28T17:00:00-07:00");
EventDateTime end = new EventDateTime()
.setDateTime(endDateTime)
.setTimeZone("America/Los_Angeles");
event.setEnd(end);
String[] recurrence = new String[] {"RRULE:FREQ=DAILY;COUNT=2"};
event.setRecurrence(Arrays.asList(recurrence));
EventAttendee[] attendees = new EventAttendee[] {
new EventAttendee().setEmail("lpage@example.com"),
new EventAttendee().setEmail("sbrin@example.com"),
};
event.setAttendees(Arrays.asList(attendees));
EventReminder[] reminderOverrides = new EventReminder[] {
new EventReminder().setMethod("email").setMinutes(24 * 60),
new EventReminder().setMethod("popup").setMinutes(10),
};
Event.Reminders reminders = new Event.Reminders()
.setUseDefault(false)
.setOverrides(Arrays.asList(reminderOverrides));
event.setReminders(reminders);
String calendarId = "primary";
event = service.events().insert(calendarId, event).execute();
System.out.printf("Event created: %s\n", event.getHtmlLink());
JavaScript
// Refer to the JavaScript quickstart on how to setup the environment:
// https://developers.google.com/calendar/quickstart/js
// Change the scope to 'https://www.googleapis.com/auth/calendar' and delete any
// stored credentials.
const event = {
'summary': 'Google I/O 2015',
'location': '800 Howard St., San Francisco, CA 94103',
'description': 'A chance to hear more about Google\'s developer products.',
'start': {
'dateTime': '2015-05-28T09:00:00-07:00',
'timeZone': 'America/Los_Angeles'
},
'end': {
'dateTime': '2015-05-28T17:00:00-07:00',
'timeZone': 'America/Los_Angeles'
},
'recurrence': [
'RRULE:FREQ=DAILY;COUNT=2'
],
'attendees': [
{'email': 'lpage@example.com'},
{'email': 'sbrin@example.com'}
],
'reminders': {
'useDefault': false,
'overrides': [
{'method': 'email', 'minutes': 24 * 60},
{'method': 'popup', 'minutes': 10}
]
}
};
const request = gapi.client.calendar.events.insert({
'calendarId': 'primary',
'resource': event
});
request.execute(function(event) {
appendPre('Event created: ' + event.htmlLink);
});
Node.js
// Refer to the Node.js quickstart on how to setup the environment:
// https://developers.google.com/calendar/quickstart/node
// Change the scope to 'https://www.googleapis.com/auth/calendar' and delete any
// stored credentials.
const event = {
'summary': 'Google I/O 2015',
'location': '800 Howard St., San Francisco, CA 94103',
'description': 'A chance to hear more about Google\'s developer products.',
'start': {
'dateTime': '2015-05-28T09:00:00-07:00',
'timeZone': 'America/Los_Angeles',
},
'end': {
'dateTime': '2015-05-28T17:00:00-07:00',
'timeZone': 'America/Los_Angeles',
},
'recurrence': [
'RRULE:FREQ=DAILY;COUNT=2'
],
'attendees': [
{'email': 'lpage@example.com'},
{'email': 'sbrin@example.com'},
],
'reminders': {
'useDefault': false,
'overrides': [
{'method': 'email', 'minutes': 24 * 60},
{'method': 'popup', 'minutes': 10},
],
},
};
calendar.events.insert({
auth: auth,
calendarId: 'primary',
resource: event,
}, function(err, event) {
if (err) {
console.log('There was an error contacting the Calendar service: ' + err);
return;
}
console.log('Event created: %s', event.htmlLink);
});
PHP
$event = new Google_Service_Calendar_Event(array(
'summary' => 'Google I/O 2015',
'location' => '800 Howard St., San Francisco, CA 94103',
'description' => 'A chance to hear more about Google\'s developer products.',
'start' => array(
'dateTime' => '2015-05-28T09:00:00-07:00',
'timeZone' => 'America/Los_Angeles',
),
'end' => array(
'dateTime' => '2015-05-28T17:00:00-07:00',
'timeZone' => 'America/Los_Angeles',
),
'recurrence' => array(
'RRULE:FREQ=DAILY;COUNT=2'
),
'attendees' => array(
array('email' => 'lpage@example.com'),
array('email' => 'sbrin@example.com'),
),
'reminders' => array(
'useDefault' => FALSE,
'overrides' => array(
array('method' => 'email', 'minutes' => 24 * 60),
array('method' => 'popup', 'minutes' => 10),
),
),
));
$calendarId = 'primary';
$event = $service->events->insert($calendarId, $event);
printf('Event created: %s\n', $event->htmlLink);
Python
# Refer to the Python quickstart on how to setup the environment:
# https://developers.google.com/calendar/quickstart/python
# Change the scope to 'https://www.googleapis.com/auth/calendar' and delete any
# stored credentials.
event = {
'summary': 'Google I/O 2015',
'location': '800 Howard St., San Francisco, CA 94103',
'description': 'A chance to hear more about Google\'s developer products.',
'start': {
'dateTime': '2015-05-28T09:00:00-07:00',
'timeZone': 'America/Los_Angeles',
},
'end': {
'dateTime': '2015-05-28T17:00:00-07:00',
'timeZone': 'America/Los_Angeles',
},
'recurrence': [
'RRULE:FREQ=DAILY;COUNT=2'
],
'attendees': [
{'email': 'lpage@example.com'},
{'email': 'sbrin@example.com'},
],
'reminders': {
'useDefault': False,
'overrides': [
{'method': 'email', 'minutes': 24 * 60},
{'method': 'popup', 'minutes': 10},
],
},
}
event = service.events().insert(calendarId='primary', body=event).execute()
print 'Event created: %s' % (event.get('htmlLink'))
Ruby
event = Google::Apis::CalendarV3::Event.new(
summary: 'Google I/O 2015',
location: '800 Howard St., San Francisco, CA 94103',
description: 'A chance to hear more about Google\'s developer products.',
start: Google::Apis::CalendarV3::EventDateTime.new(
date_time: '2015-05-28T09:00:00-07:00',
time_zone: 'America/Los_Angeles'
),
end: Google::Apis::CalendarV3::EventDateTime.new(
date_time: '2015-05-28T17:00:00-07:00',
time_zone: 'America/Los_Angeles'
),
recurrence: [
'RRULE:FREQ=DAILY;COUNT=2'
],
attendees: [
Google::Apis::CalendarV3::EventAttendee.new(
email: 'lpage@example.com'
),
Google::Apis::CalendarV3::EventAttendee.new(
email: 'sbrin@example.com'
)
],
reminders: Google::Apis::CalendarV3::Event::Reminders.new(
use_default: false,
overrides: [
Google::Apis::CalendarV3::EventReminder.new(
reminder_method: 'email',
minutes: 24 * 60
),
Google::Apis::CalendarV3::EventReminder.new(
reminder_method: 'popup',
minutes: 10
)
]
)
)
result = client.insert_event('primary', event)
puts "Event created: #{result.html_link}"
Etkinliklere Drive ekleri ekleme
Google Drive'ı ekleyebilirsiniz
toplantı notları ve e-tablolardaki bütçeler gibi
E-Tablolar, Slaytlar'daki sunular ya da diğer
ilgili Google Drive dosyalarını da kullanabilirsiniz. Girişlerinize
ekleyerek bir e-posta alırsınız.
events.insert()
veya daha sonraki bir
events.patch()
gibi bir güncelleme
Bir etkinliğe Google Drive dosyası eklemenin iki bölümü vardır:
- bölümünden
alternateLink
URL'sini,title
vemimeType
dosyasını alın Drive API Dosyaları kaynağı, genelliklefiles.get()
yöntemiyle gerçekleştirebilirsiniz. - İstekte ayarlanan
attachments
alanlarını kullanarak etkinlik oluşturma veya güncelleme body vesupportsAttachments
parametresitrue
olarak ayarlanmalıdır.
Aşağıdaki kod örneğinde, yeni bir etkinlik eklemek için mevcut bir etkinliğin nasıl bir ek:
Java
public static void addAttachment(Calendar calendarService, Drive driveService, String calendarId,
String eventId, String fileId) throws IOException {
File file = driveService.files().get(fileId).execute();
Event event = calendarService.events().get(calendarId, eventId).execute();
List<EventAttachment> attachments = event.getAttachments();
if (attachments == null) {
attachments = new ArrayList<EventAttachment>();
}
attachments.add(new EventAttachment()
.setFileUrl(file.getAlternateLink())
.setMimeType(file.getMimeType())
.setTitle(file.getTitle()));
Event changes = new Event()
.setAttachments(attachments);
calendarService.events().patch(calendarId, eventId, changes)
.setSupportsAttachments(true)
.execute();
}
PHP
function addAttachment($calendarService, $driveService, $calendarId, $eventId, $fileId) {
$file = $driveService->files->get($fileId);
$event = $calendarService->events->get($calendarId, $eventId);
$attachments = $event->attachments;
$attachments[] = array(
'fileUrl' => $file->alternateLink,
'mimeType' => $file->mimeType,
'title' => $file->title
);
$changes = new Google_Service_Calendar_Event(array(
'attachments' => $attachments
));
$calendarService->events->patch($calendarId, $eventId, $changes, array(
'supportsAttachments' => TRUE
));
}
Python
def add_attachment(calendarService, driveService, calendarId, eventId, fileId):
file = driveService.files().get(fileId=fileId).execute()
event = calendarService.events().get(calendarId=calendarId,
eventId=eventId).execute()
attachments = event.get('attachments', [])
attachments.append({
'fileUrl': file['alternateLink'],
'mimeType': file['mimeType'],
'title': file['title']
})
changes = {
'attachments': attachments
}
calendarService.events().patch(calendarId=calendarId, eventId=eventId,
body=changes,
supportsAttachments=True).execute()
Etkinliklere video ve telefon konferansları ekleme
Etkinlikleri şununla ilişkilendirebilirsiniz: Hangouts ve Google Meet konferanslarını Kullanıcılarınızın telefon görüşmesi veya görüntülü görüşme aracılığıyla uzaktan toplantı yapmasına olanak tanır.
conferenceData
alanı
mevcut konferans ayrıntılarını okumak, kopyalamak ve temizlemek için kullanılmalıdır; iletişim kurulabilir
yeni konferanslar oluşturulmasını talep etmek için kullanılır. Oluşturmaya ve
konferans ayrıntılarının değiştirilmesi, conferenceDataVersion
isteğini ayarlayın
parametresini 1
olarak ayarlayın.
Aşağıdaki gibi, şu anda desteklenen üç tür conferenceData
vardır:
conferenceData.conferenceSolution.key.type
:
- Tüketiciler için Hangouts (
eventHangout
) - Kullanıcılar için Google Workspace klasik Hangouts
(desteği sonlandırılmış;
eventNamedHangout
) - Google Meet (
hangoutsMeet
)
Belirli bir takvimde hangi konferans türünün desteklendiğini öğrenebilirsiniz.
conferenceProperties.allowedConferenceSolutionTypes
bakarak en iyi performansı
calendars
ve
calendarList
koleksiyonlar. Ayrıca transkriptinizi
daha fazla bilgi edinmek için kullanıcının yeni kullanıcı etkinlikleri için
autoAddHangouts
ayarını kontrol ederek etkinlik oluşturulan
settings
koleksiyonu.
type
, conferenceSolution
ayrıca name
ve
Konferans çözümünü gösterildiği gibi temsil etmek için kullanabileceğiniz iconUri
alanları
aşağıda bulabilirsiniz:
JavaScript
const solution = event.conferenceData.conferenceSolution;
const content = document.getElementById("content");
const text = document.createTextNode("Join " + solution.name);
const icon = document.createElement("img");
icon.src = solution.iconUri;
content.appendChild(icon);
content.appendChild(text);
Bir etkinlik için yeni bir konferans oluşturmak üzere createRequest
yeni oluşturulmuş bir requestId
(Rastgele string
olabilir). Konferanslar
eşzamansız olarak oluşturulur, ancak istediğiniz zaman
kullanıcılarınıza neler olup bittiğini bildirin.
Örneğin, mevcut bir etkinlik için konferans oluşturma isteği göndermek isterseniz:
JavaScript
const eventPatch = {
conferenceData: {
createRequest: {requestId: "7qxalsvy0e"}
}
};
gapi.client.calendar.events.patch({
calendarId: "primary",
eventId: "7cbh8rpc10lrc0ckih9tafss99",
resource: eventPatch,
sendNotifications: true,
conferenceDataVersion: 1
}).execute(function(event) {
console.log("Conference created for event: %s", event.htmlLink);
});
Bu çağrıya verilen hemen yanıt, henüz tam olarak doldurulmuş
conferenceData
; bu, pending
durum
girin. Konferans bilgileri sunulduktan sonra durum kodu success
olarak değişir.
doldurulacağından emin olun. entryPoints
alanı, hangi videonun hangi reklam
telefon URI'leri kullanıcılarınızın telefonla katılması için mevcuttur.
Aynı takvime sahip birden fazla Takvim etkinliği planlamak isterseniz
bir etkinlikteki conferenceData
toplantısının tamamını kopyalayarak
başka bir tane.
Kopyalama işlemi belirli durumlarda faydalıdır. Örneğin, Çevik yaklaşımın aday ve paydaş için ayrı etkinlikler düzenleyen bir işe alım uygulaması Mülakat yapan kişinin kimliğini korumak isterseniz tüm katılımcıların aynı konferans aramasına katılmasını istiyorsanız.