Etkinlik oluşturun

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ç olarak calendarList.list() araması.
  • event, başlatma gibi gerekli tüm ayrıntılarla oluşturulacak etkinliktir ve sona erecektir. Yalnızca start ve end alanlarının doldurulması zorunludur. Bkz. Etkinlik grubunun tamamı için event 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çin calendarList.get(): calendarId ve accessRole 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 tarihinde true 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:

  1. bölümünden alternateLink URL'sini, title ve mimeType dosyasını alın Drive API Dosyaları kaynağı, genellikle files.get() yöntemiyle gerçekleştirebilirsiniz.
  2. İstekte ayarlanan attachments alanlarını kullanarak etkinlik oluşturma veya güncelleme body ve supportsAttachments parametresi true 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:

  1. Tüketiciler için Hangouts (eventHangout)
  2. Kullanıcılar için Google Workspace klasik Hangouts (desteği sonlandırılmış; eventNamedHangout)
  3. 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.