2010-01-28 16 views
7

Tôi đang xây dựng một ứng dụng web quản lý một số loại sự kiện nhất định cho người dùng. Tôi muốn cung cấp một cách để hiển thị những sự kiện đó bên trong lịch google của người dùng.Làm cách nào để xuất bản nguồn cấp dữ liệu sự kiện động cho lịch google?

Điều tôi thực sự hy vọng là một cách để xuất bản nguồn cấp dữ liệu tương thích của lịch Google của riêng mình và cho phép người dùng đăng ký, như họ có thể đăng ký "lịch thú vị". Vì vậy, nếu sự kiện thay đổi hoặc các sự kiện mới được thêm vào, chúng sẽ được phản ánh trong lịch của họ. Nhưng có vẻ như google chỉ cho phép người dùng nhập dữ liệu lịch theo định dạng ical hoặc csv, không phải ở định dạng nguồn cấp dữ liệu nguyên tử.

Vấn đề là, các sự kiện hiện có trong ứng dụng web của tôi có thể thay đổi và các sự kiện mới được thêm vào. Tôi muốn những thay đổi đó ngay lập tức được phản ánh trong lịch google. Và tôi không thể mong đợi người dùng tiếp tục nhập lại tệp ICAL. Câu hỏi SO sau đây rất giống nhau, nhưng không thực sự có câu trả lời được đăng: Generate a Google Calendar compatible feed

Tôi có làm theo cách này sai không? Tôi có cần sử dụng API gdata để tạo lịch và xuất bản sự kiện cho lịch không? Dường như việc xuất bản nguồn cấp dữ liệu nguyên tử sẽ đơn giản hơn nhiều, nhưng nếu google không thể đăng ký nguồn cấp dữ liệu nguyên tử, điều đó sẽ không hoạt động.

Nếu tôi chỉ xuất bản sự kiện của mình dưới dạng tệp ICAL, lịch google có đọc lại URL thường xuyên và cập nhật dữ liệu không? Một số người dùng của tôi có 4 hoặc 5 sự kiện mỗi ngày, do đó, tệp sẽ chỉ tiếp tục ngày càng lớn hơn khi thời gian trôi qua. Nó thực sự có vẻ như đây không phải là một giải pháp tốt.

Trả lời

6

Nhìn vào các trang web khác thực hiện điều này, có vẻ như google không đọc lại lịch bên ngoài theo định dạng ical thường xuyên.

Sau đó, bạn có thể cắt nguồn cấp dữ liệu ical mà bạn cung cấp, ví dụ như bằng cách giết ngày tháng trong quá khứ.

Vì vậy, để giải quyết vấn đề của bạn:

  • tạo ra một file ical và phục vụ từ trang web của bạn
  • có được người dùng của bạn để đăng ký vào nó trong Google Calendar
  • thường xuyên làm mới file ical, cắt tỉa cũ dữ liệu

Ví dụ tiêu đề & bắt đầu tệp ics từ TripIt.com, tại đây có vẻ như hoạt động tốt:

curl -v http://..../tripit.ics 

< HTTP/1.1 200 OK 
< Server: nginx 
< Date: Fri, 29 Jan 2010 21:53:58 GMT 
< Content-Type: text/calendar; charset=utf-8 
< Transfer-Encoding: chunked 
< Connection: close 
< Expires: Fri, 29 Jan 2010 22:08:58 GMT 
< Cache-Control: private 
< 
BEGIN:VCALENDAR 
X-WR-CALNAME:Malcolm Box (TripIt) 
X-WR-CALDESC:TripIt Calendar 
X-PUBLISHED-TTL:PT15M 
PRODID:-//John Papaioannou/NONSGML Bennu 0.1//EN 
VERSION:2.0 
BEGIN:VEVENT 
... 
+0

Xin cảm ơn, nhưng theo bài đăng này, google không cập nhật đáng tin cậy từ URL: http://www.google.com/support/forum/p/Calendar/thread?tid=3fad85f47a70864b&hl=vi Làm bạn có ví dụ về các trang web xuất bản ở định dạng ical hoạt động đáng tin cậy? – Tauren

+1

Tôi vừa thử nó với TripIt - có liên kết webcal: // (đến một tệp ics), thêm nó vào Google. Sau đó, thêm một sự kiện khác tại tripit.com, quay lại google và nó đã được hiển thị ngay lập tức. –

+0

Cảm ơn Malcolm! Điều này có vẻ rất hứa hẹn. Tôi đã hy vọng chỉ phải cung cấp một nguồn cấp dữ liệu ics để hỗ trợ lịch google, iphone, ical, triển vọng, v.v. Nếu nó làm việc cho tripit, sau đó tôi sẽ có thể làm cho nó làm việc quá. – Tauren

0

Có vẻ như cập nhật lịch Google bạn phải sử dụng API: http://code.google.com/apis/calendar/data/2.0/developers_guide.html mặc dù tôi sẽ đặt cược theo quan điểm thực dụng, nếu bạn có tệp ical cập nhật hợp lý thường xuyên, .

+0

Aerik, tôi đồng ý - việc sử dụng API gdata có lẽ là cách đáng tin cậy nhất. Nhưng nó sẽ không giúp đỡ với iPhone, iCal, Outlook và những người dùng khác. Cuối cùng tôi có thể sẽ dùng gdata, nhưng nếu một nguồn cấp dữ liệu ics có thể được sử dụng một cách đáng tin cậy trong google, tôi sẽ thử nó trước. – Tauren

2

Người dùng iCal, ít nhất, có thể đăng ký trực tiếp vào tệp ics. Tôi thấy iCal hiển thị các cập nhật của tôi trong vòng 20 phút hoặc lâu hơn, và thậm chí là sự chậm trễ mà tôi đoán là vì lịch tôi đang sử dụng (JEvents) chỉ cập nhật tệp ics thường xuyên.

Lịch Google sẽ mất nhiều giờ để hiển thị các thay đổi của tôi - ngay cả khi tôi hủy đăng ký và tạo đăng ký mới cho cùng một URL, tôi thấy các sự kiện đã bị xóa từ lâu.