You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在iCalendar日历事件生成代码中添加Attendees参会人

iCalendar事件添加参会人实现方法

你需要在VEVENT块内按照iCalendar RFC规范添加ATTENDEE属性,每个参会人对应独立的属性行,同时补充必填的组织者字段,才能让主流日历客户端(苹果日历、Outlook、谷歌日历等)正常识别展示参会人列表。

核心字段规则

每个ATTENDEE行支持以下常用参数:

  • CN:参会人显示名称
  • ROLE:参会人角色,可选值:CHAIR(会议组织者)、REQ-PARTICIPANT(必参会人员)、OPT-PARTICIPANT(可选参会人员)
  • RSVP:是否要求参会人回复,值为TRUE/FALSE
  • PARTSTAT:参会人当前状态,可选值:NEEDS-ACTION(待回复)、ACCEPTED(已接受)、DECLINED(已拒绝)
  • 属性值固定为mailto:参会人邮箱格式

注意事项

  • 必须在VEVENT块内添加ORGANIZER字段标注会议组织者,否则多数日历客户端不会正常渲染参会人列表
  • 原代码中METHOD:PUBLISH仅适用于公开日历事件发布,如果需要向参会人发送可响应的会议邀请,需要将值改为REQUEST
  • 字段内容如果包含分号、逗号、换行等特殊字符,需要按iCalendar规范做转义,避免解析失败

修改后完整代码示例

// 参会人数据,可替换为你自己的业务数据源
const attendees = [
  {
    name: "项目负责人",
    email: "owner@example.com",
    role: "CHAIR",
    rsvp: "FALSE",
    partstat: "ACCEPTED"
  },
  {
    name: "开发成员A",
    email: "devA@example.com",
    role: "REQ-PARTICIPANT",
    rsvp: "TRUE",
    partstat: "NEEDS-ACTION"
  },
  {
    name: "测试成员B",
    email: "testB@example.com",
    role: "OPT-PARTICIPANT",
    rsvp: "TRUE",
    partstat: "NEEDS-ACTION"
  }
];

// 拼接参会人字段字符串
let attendeeSection = "";
attendees.forEach(person => {
  attendeeSection += `ATTENDEE;CN=${person.name};ROLE=${person.role};RSVP=${person.rsvp};PARTSTAT=${person.partstat}:mailto:${person.email}\n`;
});

let data =
        "BEGIN:VCALENDAR\n" +
        "CALSCALE:GREGORIAN\n" +
        "METHOD:REQUEST\n" +
        "PRODID:-//Send project Invite//EN\n" +
        "VERSION:2.0\n" +
        "BEGIN:VEVENT\n" +
        "UID:gestionprojectCalendarInvite\n" +
        "DTSTART;VALUE=DATE-TIME:" +
        convertDate(startDate) +
        "\n" +
        "DTEND;VALUE=DATE-TIME:" +
        convertDate(endDate) +
        "\n" +
        // 组织者字段,和CHAIR角色的参会人保持一致即可
        "ORGANIZER;CN=项目负责人:mailto:owner@example.com\n" +
        attendeeSection +
        "SUMMARY:" +
        subject +
        "\n" +
        "DESCRIPTION:" +
        description +
        "\n" +
        "LOCATION:" +
        location +
        "\n" +
        "END:VEVENT\n" +
        "END:VCALENDAR";

内容的提问来源于stack exchange,提问作者Charlo Poitras

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 04:51:30