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

Outlook 插件开发:如何获取日历中选中约会(事件)的ID

搞定Outlook插件:获取选中约会ID并展示数据

我来帮你实现这个需求——开发Outlook插件获取选中日历约会的ID并展示数据,其实用Office.js就能轻松搞定,咱们一步步来:

1. 先配置好插件权限

首先得在你的插件manifest文件里设置合适的权限,因为要访问日历数据,推荐用ReadWriteMailbox(如果只需要读的话ReadMailbox也够)。在manifest里加这段:

<Permissions>ReadWriteMailbox</Permissions>

2. 判断并获取选中的约会ID

首先要确认当前用户选中的是日历事件,然后直接通过Office.js的上下文拿到ID:

// 先检查当前上下文是不是日历约会
if (Office.context.mailbox.item.itemType === Office.MailboxEnums.ItemType.Appointment) {
  // 获取选中约会的ID
  const appointmentId = Office.context.mailbox.item.itemId;
  console.log("选中的约会ID:", appointmentId);
  
  // 接着去拿详细数据
  loadAndShowAppointmentData();
} else {
  alert("请先选中一个日历约会哦!");
}

3. 加载并展示约会详细数据

用loadPropertiesAsync方法可以直接加载约会的各种属性,然后把数据渲染到插件的UI里:

function loadAndShowAppointmentData() {
  // 定义你需要展示的属性,比如主题、时间、地点、内容等
  const targetProperties = ["subject", "start", "end", "location", "body", "requiredAttendees"];
  
  Office.context.mailbox.item.loadPropertiesAsync(targetProperties, function(result) {
    if (result.status === Office.AsyncResultStatus.Succeeded) {
      const appointment = result.value;
      // 把数据插入到插件的DOM元素里(假设你有个id为appointment-info的容器)
      const infoContainer = document.getElementById("appointment-info");
      infoContainer.innerHTML = `
        <h4>${appointment.subject}</h4>
        <div>
          <span><strong>开始时间:</strong>${new Date(appointment.start).toLocaleString()}</span>
          <span style="margin-left: 20px;"><strong>结束时间:</strong>${new Date(appointment.end).toLocaleString()}</span>
        </div>
        <p><strong>地点:</strong>${appointment.location || "无"}</p>
        <p><strong>参会人:</strong>${appointment.requiredAttendees.map(att => att.displayName).join(", ") || "无"}</p>
        <p><strong>内容预览:</strong>${appointment.body.preview}</p>
      `;
    } else {
      console.error("加载数据失败:", result.error.message);
      alert("加载约会数据出错了,请重试");
    }
  });
}

4. 关键配置:让插件在日历页面激活

别忘了在manifest里设置规则,确保插件只在日历阅读模式下显示:

<Rule xsi:type="RuleCollection" Mode="Or">
  <Rule xsi:type="ItemIs" ItemType="Appointment" FormType="Read" />
</Rule>

这样操作下来,用户选中日历里的约会后,插件就能拿到ID并展示对应的详细数据啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 10:07:29