Power-platform-skills add-office365
Adds Office 365 Outlook connector to a Power Apps code app. Use when accessing calendars, sending emails, reading inbox, or managing Outlook events.
install
source · Clone the upstream repo
git clone https://github.com/microsoft/power-platform-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/microsoft/power-platform-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/code-apps/skills/add-office365" ~/.claude/skills/microsoft-power-platform-skills-add-office365 && rm -rf "$T"
manifest:
plugins/code-apps/skills/add-office365/SKILL.mdsource content
📋 Shared Instructions: shared-instructions.md - Cross-cutting concerns.
Add Office 365 Outlook
Workflow
- Check Memory Bank -> 2. Add Connector -> 3. Review Generated Service -> 4. Configure -> 5. Build -> 6. Update Memory Bank
Step 1: Check Memory Bank
Check for
memory-bank.md per shared-instructions.md.
Step 2: Add Connector
First, find the connection ID (see connector-reference.md):
Run the
/list-connections skill. Find the Office 365 Outlook connection in the output (API name contains office365). If none exists, direct the user to create one using the environment-specific Connections URL — construct it from the active environment ID in context (from power.config.json or a prior step): https://make.powerapps.com/environments/<environment-id>/connections → + New connection → search for the connector → Create.
pwsh -NoProfile -Command "pac code add-data-source -a office365 -c <connection-id>"
Step 3: Review Generated Service
The generated service file (
src/generated/services/Office365OutlookService.ts) is large. Use Grep to find specific methods instead of reading the entire file:
Grep pattern="async \w+" path="src/generated/services/Office365OutlookService.ts"
Key methods (sorted by common usage):
Calendar Operations
| Method | Purpose | Key Parameters |
|---|---|---|
| Get events in a date range | , , |
| Create a calendar event | (calendar ID), (CalendarEventHtmlClient) |
| Delete an event | (calendar ID), (event ID) |
| Update an event | , , |
| List available calendars | (none) |
Email Operations
| Method | Purpose | Key Parameters |
|---|---|---|
| Send an email | (body, to, subject, etc.) |
| Get inbox emails | , , |
| Get single email | |
| Mark email as read | |
| Reply to an email | , |
/ | Flag/unflag email | |
Contact Operations
| Method | Purpose |
|---|---|
| List contact folders |
| List contact tables |
Step 4: Configure
Ask the user what Office 365 Outlook operations they need (skip if already specified by caller).
Calendar -- Get events for a date range:
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 || [];
Calendar -- Create an event:
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 });
Calendar -- Delete an event:
await Office365OutlookService.CalendarDeleteItem("Calendar", eventId);
Email -- Send an email:
await Office365OutlookService.SendEmailV2({ To: "<recipient-address>", Subject: "Subject line", Body: "<p>HTML email body</p>", Importance: "Normal" });
Key types:
| Type | Purpose |
|---|---|
| Read model -- has , , , , , , |
| Write model -- requires , , ; optional , , , |
| Response wrapper -- access events via |
Response pattern:
const result = await Office365OutlookService.GetEventsCalendarViewV2(...); if (result.success) { const events = result.data?.value || []; } else { console.error("Failed:", result.error); }
Step 5: Build
npm run build
Fix TypeScript errors before proceeding. Do NOT deploy yet.
Step 6: Update Memory Bank
Update
memory-bank.md with: connector added, configured operations, build status.