ICalendar не читается календарем Google.
Операционная система: Программа WinXP и версия, которую вы используете для доступа к Календарю Google (FF3.5):
Я разрабатываю сценарий (основанный на существующем классе vCal ASP.NET, который я нашел в Интернете) для создания файла.ics. Этот файл отлично работает при импорте в Outlook 2003. Когда я пытаюсь импортировать в Календарь Google, я получаю следующую ошибку:
Не удалось импортировать события: невозможно обработать файл iCal/CSV.
Я не слишком много знаю о формате или синтаксисе vCal, но для меня все выглядит хорошо. Я опубликую пример календаря испытаний.ics ниже:
BEGIN:VCALENDAR
PRODID:-//jpalm.se//iCalendar example with ASP.NET MVC//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VEVENT
DTSTART:20100304T000000Z
DTEND:20100304T000000Z
TRANSP:OPAQUE
SEQUENCE:0
UID:7c9d6dd7-41f2-4171-8ae4-35820974efa4
DESCRIPTION:uba:Project20100321:sagar .
SUMMARY:First Milestone
END:VEVENT
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VEVENT
DTSTART:20100330T230000Z
DTEND:20100330T230000Z
TRANSP:OPAQUE
SEQUENCE:0
UID:8a982519-b99b-429a-8dad-c0f95c50d0e6
DESCRIPTION:uba:Project20100321:imanage2010 pm
SUMMARY:upcoming milestones
END:VEVENT
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VEVENT
DTSTART:20100329T230000Z
DTEND:20100329T230000Z
TRANSP:OPAQUE
SEQUENCE:0
UID:588750a1-6f10-4b5d-8a51-3f3818024726
DESCRIPTION:uba:Project20100321:sagar .
SUMMARY:test
END:VEVENT
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VEVENT
DTSTART:20100407T230000Z
DTEND:20100407T230000Z
TRANSP:OPAQUE
SEQUENCE:0
UID:36eaa726-a0a0-40a1-ba7c-09857f8ed006
DESCRIPTION:uba:Project20100321:imanage2010 pm
SUMMARY:Rad apps devs
END:VEVENT
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VEVENT
DTSTART:20100408T125632Z
DTEND:20100408T125632Z
TRANSP:OPAQUE
SEQUENCE:0
UID:8521ad53-916a-43cc-8eeb-42c1b3d670d3
DESCRIPTION:uba:Project20100321:imanage2010 pm
SUMMARY:this is a test ms
END:VEVENT
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VEVENT
DTSTART:20100415T125643Z
DTEND:20100415T125643Z
TRANSP:OPAQUE
SEQUENCE:0
UID:e4b295d8-2271-4393-9899-3e9c858f4e8c
DESCRIPTION:uba:Project20100321:imanage2010 pm
SUMMARY:Test msssss
END:VEVENT
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VEVENT
DTSTART:20100430T055201Z
DTEND:20100430T055201Z
TRANSP:OPAQUE
SEQUENCE:0
UID:1e464698-1064-4cb2-8166-2a843b63ca5a
DESCRIPTION:uba:Project20100321:imanage2010 pm
SUMMARY:this is a new milestones for testing on 30th april
END:VEVENT
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VEVENT
DTSTART:20100731T093917Z
DTEND:20100731T093917Z
TRANSP:OPAQUE
SEQUENCE:0
UID:5262ef58-73bc-4d66-a207-4e884e249629
DESCRIPTION:uba:Project20100321:imanage2010 pm
SUMMARY:555555555555555555
END:VEVENT
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VEVENT
DTSTART:20100328T230000Z
DTEND:20100328T230000Z
TRANSP:OPAQUE
SEQUENCE:0
UID:f654262d-714e-41d9-9690-005bb467f8aa
DESCRIPTION:uba:Untitled project:imanage2010 pm
SUMMARY:first milestone
END:VEVENT
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VEVENT
DTSTART:20100401T095537Z
DTEND:20100401T095537Z
TRANSP:OPAQUE
SEQUENCE:0
UID:3f4a6c16-f460-457d-a281-b4c010958796
DESCRIPTION:uba:ProjectIcal:imanage2010 pm
SUMMARY:new ms ical
END:VEVENT
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VEVENT
DTSTART:20100331T230000Z
DTEND:20100331T230000Z
TRANSP:OPAQUE
SEQUENCE:0
UID:e5bf28d1-3559-48e9-90f8-2b5233489a13
DESCRIPTION:uba:ProjectIcal:imanage2010 pm
SUMMARY:new ms 2 ical
END:VEVENT
END:VCALENDAR
И источником для генерации приведенного выше кода является ничто иное, как представление mvc:
<%@ Import Namespace ="iManageProjectPM.Controllers" %>
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<iCalendar>"%>
BEGIN:VCALENDAR
VERSION:2.0<%if (Model.Events.Count > 1)
{%>
CALSCALE:GREGORIAN
METHOD:PUBLISH<%}%>
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
<%foreach(var evnt in Model.Events){%>
BEGIN:VEVENT
DTSTART<%=Model.GetTimeString(evnt.StartTime)%>
DTEND<%=Model.GetTimeString(evnt.EndTime)%>
TRANSP:OPAQUE
SEQUENCE:0
UID:<%=evnt.UID%>
DESCRIPTION:<%=evnt.Desc%>
SUMMARY:<%=evnt.Title%>
END:VEVENT<%}%>
END:VCALENDAR
3 ответа
Проблема с реальными каналами заключается в том, что разные календари требовательны к разным вещам, и спецификация, по крайней мере для меня, довольно трудна для подражания. Тем не менее, Канзаки делает большую работу по разъяснению спецификации программистам, таким как я.
Теперь ваш реальный фид также должен быть точным вплоть до разрыва строки (Apple в конце концов не будет импортировать фиды с неправильным переводом строки в конце), и я нашел комбинацию из этих 3-х валидаторов для лучшей работы:
- самое основное: http://severinghaus.org/projects/icv/?url=
- лучше: http://icalvalid.cloudapp.net/Default.aspx
- самые строгие: http://ical-validator.herokuapp.com/validate/
Самый строгий валидатор на самом деле имел ложные срабатывания для меня (то есть он сообщал об ошибках, которые на самом деле не являются ошибками в соответствии со спецификацией), но обнаруживал некоторые ошибки, которых не было в первых двух, поэтому я бы рекомендовал пропустить ваш фид через все три из них.
Формат Ical гласит, что каждая строка имеет максимальную длину 75 байтов - разделенные строки перезапускаются на следующей строке с одним пробелом, вставленным в начале.
Я совсем не уверен, но, похоже, вспоминаю календарь Google, ожидающий этого требования.
Проведение вашего канала через этот валидатор - http://icalvalid.cloudapp.net/Default.aspx - поможет вам проделать долгий путь, но это не 100%. Я столкнулся с дополнительными проблемами со специальными персонажами, которые нужно было избежать.