
Add Office365
- 150 installs
- 572 repo stars
- Updated July 28, 2026
- microsoft/power-platform-skills
Power Apps skill adding Office 365 Outlook connector for calendar email and inbox.
About
Power Platform skill for adding Office 365 Outlook connector to Power Apps code apps. Workflow covers memory bank check, planning required Outlook operations, connection ID discovery, dataset and table enumeration, add-data-source CLI commands, and Office365OutlookService TypeScript patterns for calendar reads, email send, and inbox access. Follows the same connector pattern as SharePoint and Dataverse skills with build verification and memory bank update on completion.
- Office 365 Outlook connector for Power Apps code apps
- Calendar reads email send and inbox access patterns
- power-apps CLI for connection dataset and table discovery
- Office365OutlookService generated TypeScript service calls
- Memory bank and build verification workflow
Add Office365 by the numbers
- 150 all-time installs (skills.sh)
- Ranked #285 of 690 Office & Documents skills by installs in the Skillselion catalog
- Security screen: LOW risk (skills.sh audit)
- Data as of Jul 28, 2026 (Skillselion catalog sync)
add-office365 capabilities & compatibility
- Capabilities
- add outlook connector · configure calendar access · send outlook email
- Works with
- outlook · azure
- Use cases
- api development · email
What add-office365 says it does
Adds Office 365 Outlook connector to a Power Apps code app.
npx skills add https://github.com/microsoft/power-platform-skills --skill add-office365Add your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 150 |
|---|---|
| repo stars | ★ 572 |
| Security audit | 3 / 3 scanners passed |
| Last updated | July 28, 2026 |
| Repository | microsoft/power-platform-skills ↗ |
How do I connect Outlook calendar and email to my Power Apps code app?
Add Office 365 Outlook connector to a Power Apps code app for calendar, email, and inbox event management.
Who is it for?
Developers building Power Apps code apps with Outlook calendar or email features.
Skip if: SharePoint or Dataverse-only connector workflows.
When should I use this skill?
User needs Outlook calendar, email send, inbox read, or Office 365 connector in code app.
What you get
Outlook connector configured with service calls for calendar, email, and inbox operations.
Files
📋 Shared Instructions: [shared-instructions.md](${PLUGIN_ROOT}/shared/shared-instructions.md) - Cross-cutting concerns.
Add Office 365 Outlook
Workflow
1. 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.
npx power-apps 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 |
|---|---|---|
GetEventsCalendarViewV2 | Get events in a date range | calendarId, startDateTimeOffset, endDateTimeOffset |
V3CalendarPostItem | Create a calendar event | table (calendar ID), item (CalendarEventHtmlClient) |
CalendarDeleteItem | Delete an event | table (calendar ID), id (event ID) |
CalendarPatchItem | Update an event | table, id, item |
V2CalendarGetTables | List available calendars | (none) |
Email Operations
| Method | Purpose | Key Parameters |
|---|---|---|
SendEmailV2 | Send an email | emailMessage (body, to, subject, etc.) |
GetEmails | Get inbox emails | folderPath, fetchOnlyUnread, top |
GetEmail | Get single email | messageId |
MarkAsRead | Mark email as read | messageId |
ReplyToV3 | Reply to an email | messageId, body |
Flag / Unflag | Flag/unflag email | messageId |
Contact Operations
| Method | Purpose |
|---|---|
GetContactFolders | List contact folders |
ContactGetTables | 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 |
|---|---|
CalendarEventClientReceiveStringEnums | Read model -- has Subject, Start, End, Id, ShowAs, IsAllDay, Organizer |
CalendarEventHtmlClient | Write model -- requires Subject, Start, End; optional Body, ShowAs, Importance, Reminder |
EntityListResponse_CalendarEventClientReceiveStringEnums | Response wrapper -- access events via .value |
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 buildFix TypeScript errors before proceeding. Do NOT deploy yet.
Step 6: Update Memory Bank
Update memory-bank.md with: connector added, configured operations, build status.
Related skills
FAQ
What Outlook operations are supported?
Calendar access, sending emails, reading inbox, and managing Outlook events.
How is the connector added?
Discover connection ID, enumerate datasets, then power-apps add-data-source CLI.
What service class is used?
Office365OutlookService generated TypeScript patterns in the code app.
Is Add Office365 safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.