ICS订阅链接在Apple Calendar正常工作但在Google Calendar无法使用的问题求助
ICS订阅链接在Apple Calendar正常工作但在Google Calendar无法使用的问题求助
编辑:问题已解决,详情见下文。
我最近碰到个头疼的问题:我开发的ICS订阅链接在Apple Calendar里完全正常,但在Google Calendar里就是没法正常使用,具体有两种异常情况:
- 直接导入ICS文件时,会弹出错误提示:
Unable to process your iCal/CSV file. - 通过URL订阅的话,Google Calendar里完全看不到任何事件,但也没有弹出任何错误提示
这个ICS文件已经通过了iCalendar官方的验证工具验证,结构是合规的。我把前几个事件的ICS结构贴出来供参考:
BEGIN:VCALENDAR VERSION:2.0 CALSCALE:GREGORIAN PRODID:adamgibbons/ics METHOD:PUBLISH X-WR-CALNAME:Mon potager X-PUBLISHED-TTL:PT1H BEGIN:VEVENT UID:CKoZRMVRnOmBI--uSQ13r SUMMARY:Fertilisation - Oseille DTSTAMP:20240131T155944Z DTSTART;VALUE=DATE:20240120 URL:我的应用日历页面链接 CATEGORIES:Potager TRANSP:TRANSPARENT DURATION:P1DT END:VEVENT BEGIN:VEVENT UID:YTMi2gRyn7F_0zJNGFQYQ SUMMARY:Semis intérieur - Oseille DTSTAMP:20240131T155944Z DTSTART;VALUE=DATE:20240412 DTEND;VALUE=DATE:20240517 URL:我的应用日历页面链接 CATEGORIES:Potager TRANSP:TRANSPARENT END:VEVENT BEGIN:VEVENT UID:Tz9Ua5mZnt_NTcFL5gy_4 SUMMARY:Acclimation - Oseille DTSTAMP:20240131T155944Z DTSTART;VALUE=DATE:20240517 DTEND;VALUE=DATE:20240527 URL:我的应用日历页面链接 CATEGORIES:Potager TRANSP:TRANSPARENT END:VEVENT
我是用ics这个npm包来生成ICS文件的,相关代码如下:
任务转ICS事件的处理函数
function presentTaskIntoIcalEvent(task: any) { let icalEvent: any = { title: task.name, start: convertDateToIcalFormat(task.startDate), url: '我的应用日历页面链接', categories: ['Potager'], calName: 'Mon potager', transp: 'TRANSPARENT', } if (task.endDate) { icalEvent['end'] = convertDateToIcalFormat(task.endDate) } else { icalEvent['duration'] = { days: 1 } } return icalEvent }
生成ICS Feed的路由代码
icalRouter.get('/ical/:selectionSlug.ics', async (request, response) => { const events = getAllEvents() ics.createEvents(events) response.setHeader('Content-Type', 'text/calendar') response.send(icalFeed) })
我翻遍了ics包的官方文档,也没找到Google Calendar需要的特定字段,实在摸不着头脑不知道哪里出了问题,有没有大佬能给点思路或者帮助呀?
备注:内容来源于stack exchange,提问作者Alextoul
相关产品推荐
相关产品推荐

