如何创建Outlook 2013 Add-in Command?实现日历视图Ribbon Button功能
Hey there! Let's walk through exactly how to build that Outlook 2013 add-in command you need, plus some no-code built-in alternatives that might save you time.
创建Outlook 2013 Add-in Command(Web Add-in方式)
Outlook 2013 SP1及以上支持Web Add-ins,这是比较灵活的方案,步骤如下:
搭建开发环境
- 安装Visual Studio并勾选"Office/SharePoint开发"工作负载,或者使用Office Add-ins的在线Manifest编辑器。
- 新建一个Outlook Web Add-in项目,选择"日历"作为目标场景。
配置Ribbon按钮
在项目的manifest.xml文件中,添加自定义Ribbon按钮到日历视图:<ExtensionPoint xsi:type="AppointmentOrganizerCommandSurface"> <CustomTab id="CustomCalendarTab"> <Group id="CalendarActionsGroup"> <Label resid="GroupLabel"/> <Control xsi:type="Button" id="CreateEmailBtn"> <Label resid="ButtonLabel"/> <Supertip> <Title resid="ButtonTitle"/> <Description resid="ButtonDesc"/> </Supertip> <Icon> <bt:Image size="16" resid="Icon16"/> <bt:Image size="32" resid="Icon32"/> <bt:Image size="80" resid="Icon80"/> </Icon> <Action xsi:type="ExecuteFunction"> <FunctionName>generateEmailFromAppointment</FunctionName> </Action> </Control> </Group> <Label resid="TabLabel"/> </CustomTab> </ExtensionPoint>记得在
<Resources>节点里补充对应的字符串和图标资源。编写核心逻辑
在项目的JavaScript文件中,实现提取约会属性并生成邮件的函数:function generateEmailFromAppointment() { // 获取当前选中的约会项 const appointment = Office.context.mailbox.item; // 提取关键属性 const subject = appointment.subject; const startTime = appointment.start.toLocaleString(); const endTime = appointment.end.toLocaleString(); // 构建邮件内容 const emailSubject = `跟进:${subject}`; const emailBody = `以下是选中约会的信息:\n\n主题:${subject}\n开始时间:${startTime}\n结束时间:${endTime}`; // 弹出新邮件窗口 Office.context.mailbox.displayNewMessageForm({ subject: emailSubject, body: emailBody }); }
备选方案:COM加载项(C#)
如果你更熟悉.NET开发,可以用VSTO创建COM加载项:
- 新建"Outlook VSTO Add-in"项目,在Visual Studio中打开Ribbon设计器。
- 拖放一个Button到日历视图的Ribbon上,绑定点击事件。
- 在事件处理函数中编写逻辑:
private void CreateEmail_Click(object sender, RibbonControlEventArgs e) { // 获取当前选中的约会 Outlook.AppointmentItem selectedAppt = Globals.ThisAddIn.Application.ActiveExplorer().Selection[1] as Outlook.AppointmentItem; if (selectedAppt == null) return; // 创建新邮件 Outlook.MailItem newMail = Globals.ThisAddIn.Application.CreateItem(Outlook.OlItemType.olMailItem) as Outlook.MailItem; newMail.Subject = $"跟进:{selectedAppt.Subject}"; newMail.Body = $"约会详情:\n主题:{selectedAppt.Subject}\n开始:{selectedAppt.Start.ToString("yyyy-MM-dd HH:mm")}\n结束:{selectedAppt.End.ToString("yyyy-MM-dd HH:mm")}"; newMail.Display(false); // 显示邮件窗口(不激活) }
无需编码的内置功能方案
如果不想开发加载项,Outlook 2013自带的功能也能实现类似需求:
快速步骤
- 切换到"邮件"选项卡,点击"快速步骤"组的"创建新快速步骤"。
- 选择"新建邮件"作为动作,点击"显示选项"。
- 在"主题"和"正文"里,使用"插入占位符"选择约会的属性(比如主题、开始时间)。
- 保存快速步骤后,选中日历项,点击这个快速步骤就能一键生成带约会信息的邮件。
复制粘贴
选中约会后按Ctrl+C复制,新建邮件按Ctrl+V,Outlook会自动插入约会的摘要卡片,你可以直接编辑或提取信息。
内容的提问来源于stack exchange,提问作者ceeroover
相关产品推荐
相关产品推荐

