Events: import

Nhập một sự kiện. Thao tác này dùng để thêm bản sao riêng tư của một sự kiện hiện có vào lịch. Bạn chỉ có thể nhập những sự kiện có eventTypedefault.

Hành vi không dùng nữa: Nếu bạn nhập một sự kiện không phải default, thì loại sự kiện đó sẽ được thay đổi thành default và mọi thuộc tính dành riêng cho loại sự kiện mà sự kiện đó có thể có sẽ bị xoá.

Thử ngay hoặc xem ví dụ.

Yêu cầu

Yêu cầu HTTP

POST https://www.googleapis.com/calendar/v3/calendars/calendarId/events/import

Thông số

Tên thông số Giá trị Mô tả
Thông số đường dẫn
calendarId string Giá trị nhận dạng lịch. Để truy xuất mã lịch, hãy gọi phương thức calendarList.list. Nếu bạn muốn truy cập vào lịch chính của người dùng hiện đã đăng nhập, hãy sử dụng từ khoá "primary".
Thông số truy vấn không bắt buộc
conferenceDataVersion integer Số phiên bản của dữ liệu hội nghị mà ứng dụng API hỗ trợ. Phiên bản 0 giả định không hỗ trợ dữ liệu hội nghị và bỏ qua dữ liệu hội nghị trong nội dung của sự kiện. Phiên bản 1 hỗ trợ việc sao chép ConferenceData cũng như tạo hội nghị mới bằng cách sử dụng trường createRequest của conferenceData. Giá trị mặc định là 0. Giá trị có thể chấp nhận là từ 0 đến 1.
supportsAttachments boolean Liệu ứng dụng API thực hiện thao tác có hỗ trợ tệp đính kèm sự kiện hay không. Không bắt buộc. Giá trị mặc định là False.

Ủy quyền

Yêu cầu này yêu cầu uỷ quyền với ít nhất một trong các phạm vi sau:

Phạm vi
https://www.googleapis.com/auth/calendar
https://www.googleapis.com/auth/calendar.events
https://www.googleapis.com/auth/calendar.app.created
https://www.googleapis.com/auth/calendar.events.owned

Để biết thêm thông tin, hãy xem trang xác thực và uỷ quyền.

Nội dung yêu cầu

Trong phần nội dung yêu cầu, hãy cung cấp tài nguyên Sự kiện với các thuộc tính sau:

Tên tài sản Giá trị Mô tả Ghi chú
Thuộc tính bắt buộc
end nested object Thời gian kết thúc (không bao gồm) của sự kiện. Đối với sự kiện định kỳ, đây là thời gian kết thúc của phiên bản đầu tiên.
iCalUID string Giá trị nhận dạng sự kiện duy nhất như được xác định trong RFC5545. Mã này dùng để xác định riêng từng sự kiện trên các hệ thống lịch và phải được cung cấp khi nhập sự kiện thông qua phương thức import (nhập).

Xin lưu ý rằng iCalUIDid không giống nhau và bạn chỉ được cung cấp một trong hai giá trị này tại thời điểm tạo sự kiện. Một điểm khác biệt về ngữ nghĩa là trong các sự kiện định kỳ, tất cả các lần xuất hiện của một sự kiện đều có id khác nhau, trong khi tất cả đều có cùng iCalUID. Để truy xuất một sự kiện bằng iCalUID, hãy gọi phương thức events.list bằng tham số iCalUID. Để truy xuất một sự kiện bằng id của sự kiện đó, hãy gọi phương thức events.get.

start nested object Thời gian bắt đầu (bao gồm cả thời gian kết thúc) của sự kiện. Đối với sự kiện định kỳ, đây là thời gian bắt đầu của thực thể đầu tiên.
Thuộc tính không bắt buộc
anyoneCanAddSelf boolean Liệu mọi người có thể tự mời mình tham gia sự kiện hay không (không dùng nữa). Không bắt buộc. Giá trị mặc định là False. writable
attachments[].fileUrl string Đường liên kết URL đến tệp đính kèm.

Để thêm tệp đính kèm trên Google Drive, hãy sử dụng định dạng giống như trong thuộc tính alternateLink của tài nguyên Files trong API Drive.

Bắt buộc khi thêm tệp đính kèm.

writable
attendees[] list Những người tham dự sự kiện. Hãy xem hướng dẫn về Sự kiện có người tham dự để biết thêm thông tin về cách lên lịch sự kiện với những người dùng khác trên lịch. Tài khoản dịch vụ cần sử dụng tính năng uỷ quyền trên toàn miền để điền danh sách người tham dự. writable
attendees[].additionalGuests integer Số lượng khách bổ sung. Không bắt buộc. Giá trị mặc định là 0. writable
attendees[].comment string Bình luận phản hồi của người tham dự. Không bắt buộc. writable
attendees[].displayName string Tên của người tham dự (nếu có). Không bắt buộc. writable
attendees[].email string Địa chỉ email của người tham dự, nếu có. Trường này phải có sẵn khi thêm người tham dự. Đây phải là địa chỉ email hợp lệ theo RFC5322.

Bắt buộc khi thêm người tham dự.

writable
attendees[].optional boolean Liệu đây có phải là khách mời không bắt buộc hay không. Không bắt buộc. Giá trị mặc định là False. writable
attendees[].resource boolean Người tham dự có phải là tài nguyên hay không. Bạn chỉ có thể đặt khi thêm người tham dự vào sự kiện lần đầu tiên. Các nội dung sửa đổi tiếp theo sẽ bị bỏ qua. Không bắt buộc. Giá trị mặc định là False. writable
attendees[].responseStatus string Trạng thái phản hồi của người tham dự. Các giá trị có thể có là:
  • "needsAction" – Người tham dự chưa phản hồi lời mời (nên dùng cho sự kiện mới).
  • "declined" – Người tham dự đã từ chối lời mời.
  • "tentative" – Người tham dự đã chấp nhận tạm thời lời mời.
  • "accepted" – Người tham dự đã chấp nhận lời mời.
writable
attendeesOmitted boolean Liệu người tham dự có bị bỏ qua trong nội dung trình bày về sự kiện hay không. Khi truy xuất một sự kiện, điều này có thể là do một quy định hạn chế do tham số truy vấn maxAttendee chỉ định. Khi cập nhật một sự kiện, bạn có thể sử dụng thuộc tính này để chỉ cập nhật câu trả lời của người tham gia. Không bắt buộc. Giá trị mặc định là False. writable
colorId string Màu của sự kiện. Đây là mã nhận dạng tham chiếu đến một mục trong phần event của định nghĩa màu (xem điểm cuối màu). Không bắt buộc. writable
conferenceData nested object Thông tin liên quan đến hội nghị, chẳng hạn như thông tin chi tiết về một hội nghị trên Google Meet. Để tạo thông tin chi tiết mới về hội nghị, hãy sử dụng trường createRequest. Để duy trì các thay đổi, hãy nhớ đặt tham số yêu cầu conferenceDataVersion thành 1 cho tất cả các yêu cầu sửa đổi sự kiện. writable
description string Mô tả về sự kiện. Có thể chứa HTML. Không bắt buộc. writable
end.date date Ngày, ở định dạng "yyyy-mm-dd", nếu đây là sự kiện diễn ra cả ngày. writable
end.dateTime datetime Thời gian, dưới dạng giá trị ngày-giờ kết hợp (được định dạng theo RFC3339). Bạn phải chỉ định độ lệch múi giờ trừ phi bạn chỉ định rõ múi giờ trong timeZone. writable
end.timeZone string Múi giờ mà thời gian được chỉ định. (Được định dạng dưới dạng tên Cơ sở dữ liệu múi giờ IANA, ví dụ: "Europe/Zurich".) Đối với sự kiện định kỳ, bạn phải điền vào trường này và chỉ định múi giờ mà sự kiện định kỳ được mở rộng. Đối với sự kiện diễn ra một lần, trường này là không bắt buộc và cho biết múi giờ tuỳ chỉnh cho thời điểm bắt đầu/kết thúc sự kiện. writable
extendedProperties.private object Các thuộc tính chỉ dành riêng cho bản sao của sự kiện xuất hiện trên lịch này. writable
extendedProperties.shared object Các thuộc tính được chia sẻ giữa các bản sao của sự kiện trên lịch của những người tham dự khác. writable
focusTimeProperties nested object Dữ liệu sự kiện Thời gian cần tập trung. Được dùng nếu eventTypefocusTime. writable
gadget.display string Chế độ hiển thị của tiện ích. Không dùng nữa. Các giá trị có thể có là:
  • "icon" – Tiện ích này hiển thị bên cạnh tiêu đề của sự kiện trong chế độ xem lịch.
  • "chip" – Tiện ích sẽ hiển thị khi người dùng nhấp vào sự kiện.
writable
gadget.height integer Chiều cao của tiện ích tính bằng pixel. Chiều cao phải là một số nguyên lớn hơn 0. Không bắt buộc. Không dùng nữa. writable
gadget.preferences object Tùy chọn. writable
gadget.title string Tiêu đề của tiện ích. Không dùng nữa. writable
gadget.type string Loại tiện ích. Không dùng nữa. writable
gadget.width integer Chiều rộng của tiện ích tính bằng pixel. Chiều rộng phải là một số nguyên lớn hơn 0. Không bắt buộc. Không dùng nữa. writable
guestsCanInviteOthers boolean Liệu những người tham dự khác ngoài người tổ chức có thể mời người khác tham gia sự kiện hay không. Không bắt buộc. Giá trị mặc định là True. writable
guestsCanModify boolean Liệu người tham dự khác với người tổ chức có thể sửa đổi sự kiện hay không. Không bắt buộc. Giá trị mặc định là False. writable
guestsCanSeeOtherGuests boolean Những người tham dự khác ngoài người tổ chức có thể xem những người tham dự sự kiện hay không. Không bắt buộc. Giá trị mặc định là True. writable
location string Vị trí địa lý của sự kiện dưới dạng văn bản dạng tự do. Không bắt buộc. writable
organizer object Người tổ chức sự kiện. Nếu người tổ chức cũng là người tham dự, thì điều này được biểu thị bằng một mục riêng trong attendees với trường organizer được đặt thành True. Để thay đổi người tổ chức, hãy sử dụng thao tác di chuyển. Chỉ có quyền đọc, ngoại trừ khi nhập sự kiện. writable
organizer.displayName string Tên của người tổ chức (nếu có). writable
organizer.email string Địa chỉ email của người tổ chức (nếu có). Đây phải là địa chỉ email hợp lệ theo RFC5322. writable
originalStartTime.date date Ngày, ở định dạng "yyyy-mm-dd", nếu đây là sự kiện diễn ra cả ngày. writable
originalStartTime.dateTime datetime Thời gian, dưới dạng giá trị ngày-giờ kết hợp (được định dạng theo RFC3339). Bạn phải chỉ định độ lệch múi giờ trừ phi bạn chỉ định rõ múi giờ trong timeZone. writable
originalStartTime.timeZone string Múi giờ mà thời gian được chỉ định. (Được định dạng dưới dạng tên Cơ sở dữ liệu múi giờ IANA, ví dụ: "Europe/Zurich".) Đối với sự kiện định kỳ, bạn phải điền vào trường này và chỉ định múi giờ mà sự kiện định kỳ được mở rộng. Đối với sự kiện diễn ra một lần, trường này là không bắt buộc và cho biết múi giờ tuỳ chỉnh cho thời điểm bắt đầu/kết thúc sự kiện. writable
outOfOfficeProperties nested object Dữ liệu sự kiện không có mặt tại văn phòng. Được dùng nếu eventTypeoutOfOffice. writable
recurrence[] list Danh sách các dòng RRULE, EXRULE, RDATE và EXDATE cho một sự kiện định kỳ, như được chỉ định trong RFC5545. Xin lưu ý rằng bạn không được phép sử dụng dòng DTSTART và DTEND trong trường này; thời gian bắt đầu và kết thúc sự kiện được chỉ định trong trường startend. Trường này bị bỏ qua đối với các sự kiện đơn lẻ hoặc các phiên bản của sự kiện định kỳ. writable
reminders.overrides[] list Nếu sự kiện không sử dụng lời nhắc mặc định, thì trường này sẽ liệt kê các lời nhắc dành riêng cho sự kiện đó hoặc nếu không được đặt, thì trường này sẽ cho biết rằng không có lời nhắc nào được đặt cho sự kiện này. Số lời nhắc ghi đè tối đa là 5. writable
reminders.overrides[].method string Phương thức mà lời nhắc này sử dụng. Các giá trị có thể có là:
  • "email" – Lời nhắc được gửi qua email.
  • "popup" – Lời nhắc được gửi qua cửa sổ bật lên trên giao diện người dùng.

Bắt buộc khi thêm lời nhắc.

writable
reminders.overrides[].minutes integer Số phút trước khi bắt đầu sự kiện mà lời nhắc sẽ kích hoạt. Giá trị hợp lệ nằm trong khoảng từ 0 đến 40320 (4 tuần tính bằng phút).

Bắt buộc khi thêm lời nhắc.

writable
reminders.useDefault boolean Liệu lời nhắc mặc định của lịch có áp dụng cho sự kiện hay không. writable
sequence integer Số thứ tự theo iCalendar. writable
source.title string Tiêu đề của nguồn; ví dụ: tiêu đề của một trang web hoặc tiêu đề email. writable
source.url string URL của nguồn trỏ đến một tài nguyên. Giao thức URL phải là HTTP hoặc HTTPS. writable
start.date date Ngày, ở định dạng "yyyy-mm-dd", nếu đây là sự kiện diễn ra cả ngày. writable
start.dateTime datetime Thời gian, dưới dạng giá trị ngày-giờ kết hợp (được định dạng theo RFC3339). Bạn phải chỉ định độ lệch múi giờ trừ phi bạn chỉ định rõ múi giờ trong timeZone. writable
start.timeZone string Múi giờ mà thời gian được chỉ định. (Được định dạng dưới dạng tên Cơ sở dữ liệu múi giờ IANA, ví dụ: "Europe/Zurich".) Đối với sự kiện định kỳ, bạn phải điền vào trường này và chỉ định múi giờ mà sự kiện định kỳ được mở rộng. Đối với sự kiện diễn ra một lần, trường này là không bắt buộc và cho biết múi giờ tuỳ chỉnh cho thời điểm bắt đầu/kết thúc sự kiện. writable
status string Trạng thái của sự kiện. Không bắt buộc. Các giá trị có thể có là:
  • "confirmed" – Sự kiện đã được xác nhận. Đây là trạng thái mặc định.
  • "tentative" – Sự kiện được xác nhận tạm thời.
  • "cancelled" – Sự kiện đã bị huỷ (xoá). Phương thức list (danh sách) chỉ trả về các sự kiện bị huỷ khi đồng bộ hoá tăng dần (khi syncToken hoặc updatedMin được chỉ định) hoặc nếu cờ showDeleted được đặt thành true. Phương thức get luôn trả về các giá trị này.

    Trạng thái đã huỷ đại diện cho hai trạng thái khác nhau tuỳ thuộc vào loại sự kiện:

    1. Các trường hợp ngoại lệ đã huỷ của một sự kiện định kỳ chưa huỷ cho biết rằng thực thể này sẽ không còn được hiển thị cho người dùng nữa. Ứng dụng phải lưu trữ các sự kiện này trong suốt thời gian hoạt động của sự kiện định kỳ gốc.

      Các trường hợp ngoại lệ đã huỷ chỉ được đảm bảo điền giá trị cho các trường id, recurringEventIdoriginalStartTime. Các trường khác có thể để trống.

    2. Tất cả các sự kiện bị huỷ khác đều thể hiện các sự kiện đã bị xoá. Ứng dụng phải xoá các bản sao đã đồng bộ hoá cục bộ. Những sự kiện bị huỷ như vậy cuối cùng sẽ biến mất, vì vậy, đừng dựa vào việc chúng sẽ có sẵn vô thời hạn.

      Các sự kiện đã xoá chỉ được đảm bảo điền trường id.

    Trên lịch của người tổ chức, các sự kiện đã huỷ vẫn hiển thị thông tin chi tiết về sự kiện (tóm tắt, vị trí, v.v.) để có thể khôi phục (huỷ xoá). Tương tự, những sự kiện mà người dùng được mời và đã xoá theo cách thủ công sẽ tiếp tục cung cấp thông tin chi tiết. Tuy nhiên, các yêu cầu đồng bộ hoá gia tăng với showDeleted được đặt thành false sẽ không trả về các thông tin chi tiết này.

    Nếu một sự kiện thay đổi người tổ chức (ví dụ: thông qua thao tác di chuyển) và người tổ chức ban đầu không có trong danh sách người tham dự, thì sự kiện đó sẽ để lại một sự kiện đã huỷ, trong đó chỉ đảm bảo điền trường id.

writable
summary string Tiêu đề sự kiện. writable
transparency string Liệu sự kiện có chặn thời gian trên lịch hay không. Không bắt buộc. Các giá trị có thể có là:
  • "opaque" – Giá trị mặc định. Sự kiện này sẽ chặn thời gian trên lịch. Điều này tương đương với việc thiết lập Hiển thị tôi là thành Bận trong giao diện người dùng Lịch.
  • "transparent" – Sự kiện không chặn thời gian trên lịch. Điều này tương đương với việc đặt Hiển thị tôi là thành Rảnh trong giao diện người dùng Lịch.
writable
visibility string Mức hiển thị của sự kiện. Không bắt buộc. Các giá trị có thể có là:
  • "default" – Sử dụng chế độ hiển thị mặc định cho các sự kiện trên lịch. Đây là giá trị mặc định.
  • "public" – Sự kiện ở chế độ công khai và tất cả người đọc lịch đều có thể xem thông tin chi tiết của sự kiện.
  • "private" – Sự kiện là riêng tư và chỉ những người tham dự sự kiện mới có thể xem thông tin chi tiết về sự kiện.
  • "confidential" – Sự kiện là riêng tư. Giá trị này được cung cấp vì lý do tương thích.
writable

Phản hồi

Nếu thành công, phương thức này sẽ trả về một tài nguyên Sự kiện trong phần nội dung phản hồi.

Ví dụ

Lưu ý: Các đoạn mã mẫu của phương thức này không phải là ví dụ cho mọi ngôn ngữ lập trình được hỗ trợ (xem trang thông tin về các thư viện dùng cho ứng dụng để biết danh sách các ngôn ngữ được hỗ trợ).

Java

Sử dụng thư viện ứng dụng Java.

import com.google.api.services.calendar.Calendar;
import com.google.api.services.calendar.model.Event;
import com.google.api.services.calendar.model.EventAttendee;
import com.google.api.services.calendar.model.EventDateTime;
import com.google.api.client.util.DateTime;

import java.util.Date;
// ...

// Initialize Calendar service with valid OAuth credentials
Calendar service = new Calendar.Builder(httpTransport, jsonFactory, credentials)
    .setApplicationName("applicationName").build();

// Create and initialize a new event (could also retrieve an existing event)
Event event = new Event();
event.setICalUID("originalUID");

Event.Organizer organizer = new Event.Organizer();
organizer.setEmail("organizerEmail");
organizer.setDisplayName("organizerDisplayName");
event.setOrganizer(organizer);

ArrayList<EventAttendee> attendees = new ArrayList<EventAttendee>();
attendees.add(new EventAttendee().setEmail("attendeeEmail"));
// ...
event.setAttendees(attendees);

Date startDate = new Date();
Date endDate = new Date(startDate.getTime() + 3600000);
DateTime start = new DateTime(startDate, TimeZone.getTimeZone("UTC"));
event.setStart(new EventDateTime().setDateTime(start));
DateTime end = new DateTime(endDate, TimeZone.getTimeZone("UTC"));
event.setEnd(new EventDateTime().setDateTime(end));

// Import the event into a calendar
Event importedEvent = service.events().calendarImport('primary', event).execute();

System.out.println(importedEvent.getId());

Python

Sử dụng thư viện ứng dụng Python.

event = {
  'summary': 'Appointment',
  'location': 'Somewhere',
  'organizer': {
    'email': 'organizerEmail',
    'displayName': 'organizerDisplayName'
  },
  'start': {
    'dateTime': '2011-06-03T10:00:00.000-07:00'
  },
  'end': {
    'dateTime': '2011-06-03T10:25:00.000-07:00'
  },
  'attendees': [
    {
      'email': 'attendeeEmail',
      'displayName': 'attendeeDisplayName',
    },
    # ...
  ],
  'iCalUID': 'originalUID'
}

imported_event = service.events().import_(calendarId='primary', body=event).execute()

print imported_event['id']

PHP

Sử dụng thư viện ứng dụng 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');
$event->setStart($start);
$end = new Google_Service_Calendar_EventDateTime();
$end->setDateTime('2011-06-03T10:25:00.000-07:00');
$event->setEnd($end);
$attendee1 = new Google_Service_Calendar_EventAttendee();
$attendee1->setEmail('attendeeEmail');
// ...
$attendees = array($attendee1,
                   // ...,
                  );
$event->attendees = $attendees;
$organizer = new Google_Service_Calendar_EventOrganizer();
$organizer->setEmail('organizerEmail');
$organizer->setDisplayName('organizerDisplayName');
$event->setOrganizer($organizer);
$event->setICalUID('originalUID');
$importedEvent = $service->events->import('primary', $event);

echo $importedEvent->getId();

Ruby

Sử dụng thư viện ứng dụng Ruby.

event = Google::Apis::CalendarV3::Event.new(
  summary: 'Appointment',
  location: 'Somewhere',
  organizer: {
    email: 'organizerEmail',
    display_name: 'organizerDisplayName'
  },
  start: {
    date_time: '2011-06-03T10:00:00.000-07:00'
  },
  end: {
    date_time: '2011-06-03T10:25:00.000-07:00'
  },
  attendees: [
    {
      email: 'attendeeEmail',
      display_name: 'attendeeDisplayName',
    },
    # ...
  ],
  i_cal_uid: 'originalUID'
)
result = client.import_event('primary', event)
print result.id

Hãy dùng thử!

Sử dụng Trình khám phá API bên dưới để gọi phương thức này trên dữ liệu trực tiếp và xem phản hồi.