如何通过DeepLink在Outlook中创建周期性日历事件
实现Outlook周期性日历事件的替代方案
Outlook的calendar/deeplink/compose深度链接本身不支持通过URL参数传递重复事件规则(比如RRULE),官方并未开放这类参数,所以直接在现有链接里加参数是无效的。你可以通过以下两种方案实现需求:
方案一:调用Microsoft Graph API创建重复事件
通过API可以直接创建带重复规则的日历事件,步骤如下:
- 先完成用户的OAuth授权流程,获取访问用户日历的权限(需要
Calendars.ReadWrite权限) - 调用
POST /me/events接口,在请求体中定义重复规则。示例请求体:
{ "subject": "Intermit Opportunity", "body": { "contentType": "HTML", "content": "<p> </p>\n\n<p> </p>" }, "start": { "dateTime": "2023-12-05T08:00:00", "timeZone": "UTC" }, "end": { "dateTime": "2023-12-05T09:00:00", "timeZone": "UTC" }, "location":{ "displayName":"Somewhere Else" }, "recurrence": { "pattern": { "type": "weekly", "interval": 1, "daysOfWeek": ["Monday"] }, "range": { "type": "endDate", "startDate": "2023-12-05", "endDate": "2023-12-26" } } }
- 事件创建成功后,可引导用户跳转到Outlook日历查看该事件
方案二:生成ICS文件触发下载
生成符合iCalendar标准的ICS文件,用户下载后可导入到Outlook创建重复事件:
- 在前端或服务器生成包含重复规则的ICS内容,示例:
BEGIN:VCALENDAR VERSION:2.0 PRODID:-//你的应用名称//EN BEGIN:VEVENT UID:unique-event-id@你的域名.com DTSTAMP:20231201T120000Z SUMMARY:Intermit Opportunity DTSTART:20231205T080000Z DTEND:20231205T090000Z LOCATION:Somewhere Else DESCRIPTION:<p> </p>\n\n<p> </p> RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=MO;UNTIL=20231226T235959Z END:VEVENT END:VCALENDAR
- 用户点击「添加到日历」按钮时,动态生成该ICS文件并触发浏览器下载,用户打开文件即可导入到Outlook日历
内容的提问来源于stack exchange,提问作者neelu chauhan
相关产品推荐
相关产品推荐

