用途
add-office365 用于向 Power Apps 代码应用(code app)添加 Office 365 Outlook 连接器。当应用需要访问日历、发送电子邮件、读取收件箱或管理 Outlook 事件时使用该技能。
工作流程
该技能按以下步骤执行:检查 Memory Bank → 添加连接器 → 审查生成的服务 → 配置 → 构建 → 更新 Memory Bank。
第 1 步:检查 Memory Bank
按照 shared-instructions.md 检查是否存在 memory-bank.md。
第 2 步:添加连接器
首先查找连接 ID(参见 connector-reference.md):
运行 /list-connections 技能,在输出中查找 Office 365 Outlook 连接(API 名称包含 office365)。如果不存在,引导用户使用特定环境的 Connections URL 创建连接——根据上下文中(来自 power.config.json 或前一步)的活动环境 ID 构造:https://make.powerapps.com/environments/<environment-id>/connections → + New connection → 搜索该连接器 → Create。
添加命令:
pa app add data-source --connector office365 -c <connection-id>
第 3 步:审查生成的服务
生成的服务文件(src/generated/services/Office365OutlookService.ts)较大。使用 Grep 查找特定方法,而不是读取整个文件:
Grep pattern="async \w+" path="src/generated/services/Office365OutlookService.ts"
关键方法(按常见使用频率排序):
日历操作:
- GetEventsCalendarViewV2:获取日期范围内的事件,参数 calendarId、startDateTimeOffset、endDateTimeOffset
- V3CalendarPostItem:创建日历事件,参数 table(日历 ID)、item(CalendarEventHtmlClient)
- CalendarDeleteItem:删除事件,参数 table(日历 ID)、id(事件 ID)
- CalendarPatchItem:更新事件,参数 table、id、item
- V2CalendarGetTables:列出可用日历
邮件操作:
- SendEmailV2:发送邮件,参数 emailMessage(body、to、subject 等)
- GetEmails:获取收件箱邮件,参数 folderPath、fetchOnlyUnread、top
- GetEmail:获取单封邮件,参数 messageId
- MarkAsRead:将邮件标记为已读,参数 messageId
- ReplyToV3:回复邮件,参数 messageId、body
- Flag / Unflag:标记/取消标记邮件,参数 messageId
联系人操作:
- GetContactFolders:列出联系人文件夹
- ContactGetTables:列出联系人表
第 4 步:配置
询问用户需要哪些 Office 365 Outlook 操作(如果调用方已指定则跳过)。
日历——获取日期范围内的事件:
import { Office365OutlookService } from "../generated/services/Office365OutlookService";
const result = await Office365OutlookService.GetEventsCalendarViewV2( "Calendar", // calendarId -- "Calendar" for default startDate.toISOString(), endDate.toISOString() ); const events = result.data?.value || [];
日历——创建事件:
await Office365OutlookService.V3CalendarPostItem("Calendar", { Subject: "Focus Time", Start: "2025-06-15T10:00:00", // ISO 8601 format End: "2025-06-15T11:00:00", ShowAs: "Busy", Importance: "Normal", IsAllDay: false, Body: "<p>Blocked for focus work</p>", Reminder: 5 });
日历——删除事件:
await Office365OutlookService.CalendarDeleteItem("Calendar", eventId);
邮件——发送邮件:
await Office365OutlookService.SendEmailV2({ To: "<recipient-address>", Subject: "Subject line", Body: "<p>HTML email body</p>", Importance: "Normal" });
关键类型:
- CalendarEventClientReceiveStringEnums:读取模型——包含 Subject、Start、End、Id、ShowAs、IsAllDay、Organizer
- CalendarEventHtmlClient:写入模型——需要 Subject、Start、End;可选 Body、ShowAs、Importance、Reminder
- EntityListResponse_CalendarEventClientReceiveStringEnums:响应包装器——通过 .value 访问事件
响应模式:
const result = await Office365OutlookService.GetEventsCalendarViewV2(...); if (result.success) { const events = result.data?.value || []; } else { console.error("Failed:", result.error); }
第 5 步:构建
npm run build
在继续之前修复 TypeScript 错误。此时不要部署。
第 6 步:更新 Memory Bank
在 memory-bank.md 中更新:已添加的连接器、已配置的操作、构建状态。
适用场景
适用于需要在 Power Apps 代码应用中集成 Outlook 日历、邮件和联系人功能的开发场景,例如读取日历事件、创建会议、发送通知邮件、读取收件箱等。
限制
该技能依赖 Power Platform 环境、连接 ID 和生成的 TypeScript 服务文件。使用前需确保已存在 Office 365 Outlook 连接,否则需先创建。构建阶段需修复 TypeScript 错误,且该技能不负责部署。