Cómo crear .archivo ics mediante programación?

¿Cómo puedo crear un archivo icalendar con un mínimo de datos, trato de hacer como los siguientes, pero algo malo, cuando trato de importar a mi calendario de Google, que dice Eventos importado correctamente, pero no puedo ver los eventos de mi calendario

    strResult.Append("BEGIN:VCALENDAR" & vbCrLf)           

    strResult.Append("VERSION:2.0" & vbCrLf)

    strResult.Append("METHOD:PUBLISH" & vbCrLf)

    While rst1.Read
        strResult.Append("BEGIN:VEVENT" & vbCrLf)

        strResult.Append("DTSTART: " & CDate(getLeave_date_start(CStr(rst1.getInteger("inq_id")), g_dom_id)).ToUniversalTime().ToString("yyyyMMddTHHmmssZ") & vbCrLf)    

        strResult.Append("DTEND: " & CDate(getLeave_date_end(CStr(rst1.getInteger("inq_id")), g_dom_id)).ToUniversalTime().ToString("yyyyMMddTHHmmssZ") & vbCrLf)

        strResult.Append("SUMMARY: " & rst1.getString("inq_name") & vbCrLf)

        strResult.Append("UID: " & rst1.getInteger("inq_id") & vbCrLf)

        strResult.Append("CLASS:PUBLIC" & vbCrLf)

        strResult.Append("END:VEVENT" & vbCrLf)

    End While
    strResult.Append("END:VCALENDAR" & vbCrLf)

    WriteCalendar(strResult)

Escribí una función WriteCalendar como sigue

Private Sub WriteCalendar(ByVal data As String)
    Dim response As HttpResponse = Page.Response
    response.Clear()
    response.Buffer = True
    response.ContentType = "text/calendar"
    response.ContentEncoding = Encoding.UTF8
    response.Charset = "utf-8"
    response.AddHeader("Content-Disposition", "attachment;filename=""" & "icalendarTest" & ".ics""")
    response.Write(data)
    response.[End]()
End Sub

Puedo descargar el archivo y ver a mis eventos, pero cuando se trata de importar a Google Calendar, dice 6 eventos importado correctamente, pero no puedo ver en mi calendario

La salida icalendarTest.ics

BEGIN:VCALENDAR  
VERSION:2.0  
METHOD:PUBLISH  
BEGIN:VEVENT  
DTSTART: 20110107T060000Z  
DTEND: 20110109T080000Z  
SUMMARY: ayin yedisinden dokuzuna  
UID: 9  
CLASS:PUBLIC  
END:VEVENT  
BEGIN:VEVENT
DTSTART: 20110119T103000Z  
DTEND: 20110119T150000Z  
SUMMARY: tek gunluk ondokuz  
UID: 10  
CLASS:PUBLIC  
END:VEVENT  
BEGIN:VEVENT  
DTSTART: 20110213T080000Z  
DTEND: 20110213T160000Z  
SUMMARY: Mijn Event  
UID: 21  
CLASS:PUBLIC  
END:VEVENT  
BEGIN:VEVENT  
DTSTART: 20110301T083000Z  
DTEND: 20110302T110000Z  
SUMMARY: Mart kapidan baktirir  
UID: 26  
CLASS:PUBLIC  
END:VEVENT  
BEGIN:VEVENT  
DTSTART: 20110117T080000Z  
DTEND: 20110117T120000Z  
SUMMARY: Neyse bi oncesi olsun  
UID: 27  
CLASS:PUBLIC  
END:VEVENT  
BEGIN:VEVENT  
DTSTART: 20110121T130000Z  
DTEND: 20110121T180000Z  
SUMMARY: ocak 21i  
UID: 31  
CLASS:PUBLIC  
END:VEVENT  
END:VCALENDAR  
  • una nota: UID debe ser único en TODO el universo (teniendo en cuenta todas las galaxias). un entero no es una muy buena opción para este
  • puede que esa sea la razón por no mostrar mis eventos?
  • He hecho otro con un Guid como UID, pero con el mismo resultado, la importación de éxito, pero no hay eventos se muestran en el calendario BEGIN:VCALENDAR VERSIÓN:2.0 MÉTODO:PUBLICAR BEGIN:VEVENT DTSTART: 20110114T230000Z DTEND: 20110114T230000Z RESUMEN: personalizado de vacaciones UID: 01c09e35-0bf4-4765-8489-5a07b6f3e49e de la CLASE:PUBLIC END:VEVENT BEGIN:VEVENT DTSTART: 20110429T220000Z DTEND: 20110506T220000Z RESUMEN: Mei vakantie UID: bd3aa376-8743-4aaa-b486-c91f38aae540 de la CLASE:PUBLIC END:VEVENT END:VCALENDAR
InformationsquelleAutor wallace740 | 2011-02-08

1 Kommentar

  1. 3

    Yo no incluir todas las etiquetas en .ics, esa es la razón de este fallo.

    He extraído de mi propio calendario de Google Calendar e incluir los datos que faltan, ahora funciona. DTSTAMP parece necesario, aunque me parece que uncesessary, pero bueno siempre y cuando las obras

        strResult.Append("BEGIN:VCALENDAR" & vbCrLf)
        strResult.Append("PRODID:-//Google Inc//Google Calendar 70.9054//EN" & vbCrLf)
        strResult.Append("VERSION:2.0" & vbCrLf)
        strResult.Append("METHOD:PUBLISH" & vbCrLf)
    
        While rst1.Read
            strResult.Append("BEGIN:VEVENT" & vbCrLf)
            strResult.Append("DTSTART:" & rst1.getDateTime("hly_startdate").ToUniversalTime().ToString("yyyyMMddTHHmmssZ") & vbCrLf)
            strResult.Append("DTEND:" & rst1.getDateTime("hly_enddate").ToUniversalTime().ToString("yyyyMMddTHHmmssZ") & vbCrLf)
            strResult.Append("DTSTAMP:" & rst1.getDateTime("hly_date_created").ToUniversalTime().ToString("yyyyMMddTHHmmssZ") & vbCrLf)
            strResult.Append("SEQUENCE:0" & vbCrLf)
            strResult.Append("STATUS:CONFIRMED" & vbCrLf)
            strResult.Append("SUMMARY:" & rst1.getString("hly_name") & vbCrLf)
            strResult.Append("UID:" & System.Guid.NewGuid.ToString() & vbCrLf)
            strResult.Append("CLASS:PUBLIC" & vbCrLf)
            strResult.Append("TRANSP:OPAQUE" & vbCrLf)
            strResult.Append("END:VEVENT" & vbCrLf)
    
        End While
        strResult.Append("END:VCALENDAR" & vbCrLf)
    • No debe haber espacios, es decir, «la SECUENCIA:0». Si escribimos esto como «SECUENCIA: 0» entonces está mal
    • Tiene usted encuentra que usted no puede actualizar un elemento de calendario, utilizando METHOD:PUBLISH no importa si cambia el SEQUENCE y DTSTAMP?

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea