Excelgoodies logo +40 31 2299227

LEARN THIS HANDS ON

Power Apps & Power Automate

. Live Online FILLING FAST
View all upcoming batches
Outlook Attachments to SharePoint, Forms to Excel: 5 Core Power Automate Flows Every Office Actually Uses

Outlook Attachments to SharePoint, Forms to Excel: 5 Core Power Automate Flows Every Office Actually Uses

Your team spends more time saving attachments, copying survey results and nudging colleagues for approvals than actually looking at the data. Everyone knows these are trivial tasks, yet they never get automated. This article walks through five concrete Power Automate flows – including the classic "Outlook attachments to SharePoint, Forms to Excel" patterns – that most offices need and that you can build safely without creating a maintenance nightmare.

The Scenario: Operations Team Drowning in Admin

Picture a mid-sized operations team:

  • Requests arrive via email with attachments (PDF orders, signed contracts).
  • Internal forms collect data on incidents, customer feedback or employee requests.
  • Excel files on SharePoint act as logbooks and trackers.
  • Approvals happen over email and chat, with no consistent record.

Everyone knows Power Automate can help, but attempts often stall on details:

  • Attachments saved with weird names or wrong file types.
  • Excel tables locked by concurrency issues.
  • Flows silently failing when someone renames a SharePoint folder.

We’ll design five flows around this one team and show how they fit together without tripping over common limits.


1. Save Outlook Attachments to SharePoint – Safely

This is the most common starter flow: incoming email, filter by subject or sender, save attachments to a SharePoint document library.

Core pattern

Trigger:

  • When a new email arrives (V3) – from the Outlook connector.

Key actions:

  1. Condition to filter emails (subject, sender, has attachments).
  2. Apply to each on Attachments.
  3. Create file in SharePoint for each attachment.

Minimal but robust implementation

Typical structure:

  1. Trigger: When a new email arrives (V3)

    • Folder: usually Inbox.
    • Only with attachments: Yes to avoid empty runs.
  2. Condition: subject contains e.g. Order and from a specific domain.

  3. Apply to each: Attachments from the trigger.

  4. Inside the loop, Create file (SharePoint):

    • Site Address: the operations site.
    • Folder Path: e.g. /Shared Documents/Orders.
    • File Name: concat(triggerOutputs()?['body/subject'], ' - ', items('Apply_to_each')?['Name'])
    • File Content: items('Apply_to_each')?['ContentBytes']

What can go wrong and how to avoid it

  1. Duplicate file names

    • SharePoint will fail the action if a file with the same name exists.
    • Safer pattern: append a timestamp or unique ID:
    concat(
      utcNow(),
      ' - ',
      items('Apply_to_each')?['Name']
    )
    
  2. Large attachments

    • The standard Create file action works for typical office files.
    • For very large attachments, consider:
      • Checking Attachments size and skipping or routing elsewhere.
      • Using premium connectors or alternate storage if business needs it.
  3. Users renaming folders

    • Hard-coding folder paths is brittle.
    • Better:
      • Keep the target folder in a SharePoint list or environment variable.
      • Reference that value in Create file so you can change it without editing the flow.

This flow becomes the backbone for the next ones: once attachments land in SharePoint, everything else (metadata, approvals, archive) can hang off that.


2. Microsoft Forms Responses to Excel – Without Breaking the Workbook

The second classic flow: take Microsoft Forms submissions and append them to an Excel table stored in SharePoint or OneDrive.

Why the naive version breaks

Common problems:

  • Excel file moved or renamed: the flow starts failing.
  • Table name changed manually: Add a row into a table fails.
  • Multiple flows or users editing the file at the same time: concurrency errors.

Stable pattern for Forms → Excel

Trigger:

  • When a new response is submitted (Microsoft Forms).

Key actions:

  1. Get response details – to access answers by question.
  2. Add a row into a table (Excel Online (Business)).

Recommended structure:

  1. Trigger: When a new response is submitted

    • Form Id: your operations form.
  2. Get response details:

    • Form Id: same as trigger.
    • Response Id: from trigger.
  3. Add a row into a table:

    • Location: OneDrive for Business or SharePoint.
    • Document Library: e.g. Documents.
    • File: browse to your Excel file.
    • Table: select a pre-created table (e.g. tblRequests).
    • Row: map each column to Get response details outputs.

Table and file setup that avoids pain

  1. Use a dedicated table

    • One table per form is simpler.
    • Avoid editing the header row from Excel; that changes column names and breaks mappings.
  2. Don’t rename tables manually after wiring the flow

    • If you must rename, update the flow immediately.
  3. Keep the file small and simple

    • Use this workbook only as a log.
    • Do analysis in another file or Power BI; avoid heavy formulas on the log sheet.
  4. Concurrency

    • The Excel Online (Business) connector writes rows sequentially per flow run, but the underlying workbook is still subject to Excel’s locking and session limits.
    • If you expect very high submission rates or many users editing the workbook, consider:
      • Writing to a SharePoint list instead.
      • Or using Dataverse in environments where that’s available.

This flow gives the operations team a clean Excel log for every form, which they can pivot, filter and export without touching the original form responses UI.


3. From SharePoint Files to Structured Metadata (Lists)

Once attachments are landing in SharePoint, the next step is to capture structured data about them: request type, requester, due date, status. That’s better stored in a SharePoint list than in the file name.

Pattern: document library + list as a register

Trigger:

  • When a file is created (properties only) (SharePoint).

Key actions:

  1. Get file metadata (optional if you need more than the trigger gives).
  2. Create item in a SharePoint list.

Recommended setup:

  1. SharePoint document library for the incoming files.
  2. SharePoint list with columns:
    • File name
    • File URL
    • Requester
    • Request type
    • Status
    • Created date

Flow structure:

  1. Trigger: When a file is created (properties only)

    • Site Address: operations site.
    • Library Name: e.g. Orders.
  2. Create item (SharePoint):

    • Site Address: same.
    • List Name: e.g. Order Register.
    • Map fields:
      • File Name: File name with extension from trigger.
      • File URL: Link to item from trigger.
      • Created Date: Created.
      • Requester: from email properties if available (e.g. using headers in the original attachment flow) or default Unknown.

Why use a list

  • Lists are better for filtering, views, and quick edits than document libraries.
  • You can later drive approvals and reminders off this list without touching the files.

This flow connects the raw files from Flow 1 to a structured register that the operations team can work from.


4. Basic Approval Flow on Top of the Register

With a SharePoint list of requests, the next step is to add a consistent approval process – still simple, but trackable.

Pattern: manual trigger + approvals + status update

Trigger:

  • For a selected item (SharePoint) – manual initiation from the list.

Key actions:

  1. Start and wait for an approval.
  2. Update item with approval outcome.

Flow structure:

  1. Trigger: For a selected item (SharePoint)

    • Site Address: operations site.
    • List Name: Order Register.
  2. Start and wait for an approval:

    • Approval type: Approve/Reject – First to respond or Everyone must approve depending on policy.
    • Title: e.g. Approval needed for @{triggerOutputs()?['body/Title']}.
    • Assigned to: one or more approvers (email addresses or dynamic from item fields).
    • Details: include link to the file and any key metadata.
  3. Condition on the approval outcome:

    • If Outcome is Approve: set status Approved.
    • If Reject: set status Rejected.
  4. Update item (SharePoint):

    • Update Status and optionally Approved By, Approval Date.

Things to be careful about

  1. Approvals storage

    • Power Automate approvals are stored in the underlying approvals service and are visible in the Approvals app in Microsoft Teams and Power Automate.
    • For long-term audit, keep status and dates in the SharePoint list.
  2. Changing approvers

    • If approvers change frequently, store approver emails in list columns and reference those dynamically instead of hard-coding.
  3. Manual vs automatic trigger

    • For a selected item is good for testing and controlled use.
    • Once the process stabilises, you can switch to automatic triggers (e.g. when item is created or when status = Pending) if that matches your governance.

This flow gives the operations team a repeatable approval track without building a full workflow engine.


5. Reminders and Escalations When Nothing Happens

The last pattern closes the loop: if a request sits in Pending for too long, someone gets reminded or the request is escalated.

Pattern: scheduled flow + SharePoint query

Trigger:

  • Recurrence – scheduled, e.g. every weekday.

Key actions:

  1. Get items from SharePoint with filters.
  2. Apply to each pending items.
  3. Send email or Teams message.

Flow structure:

  1. Trigger: Recurrence

    • Frequency: Day.
    • Interval: 1.
    • Optionally set start time to match working hours.
  2. Get items (SharePoint):

    • Site Address: operations site.
    • List Name: Order Register.
    • Filter Query: e.g. Status eq 'Pending'.
  3. Apply to each: value from Get items.

  4. Inside loop, Condition on age:

    • Use Created date from item.
    • Compare with utcNow() using an expression in a Compose or directly.

    Example expression to calculate days open:

    div(
      sub(
        ticks(utcNow()),
        ticks(items('Apply_to_each')?['Created'])
      ),
      864000000000
    )
    
    • This gives the number of days between Created and now.
  5. If days open > threshold (e.g. 2 days):

    • Send an email (V2) or Post message in a chat or channel (Teams).
    • Include link to the item and key metadata.

Why this matters for the operations team

  • Requests no longer depend on someone remembering to check the list.
  • Approvers see a daily digest or individual reminders.
  • Escalation can be implemented by sending to a different recipient when age exceeds a higher threshold.

This flow ties together the previous ones into a lightweight workflow system: email → attachments → register → approvals → reminders.


Putting the 5 Flows Together for One Team

For our operations team, the final picture looks like this:

  1. Incoming email with attachments is automatically saved to SharePoint.
  2. Forms submissions append to an Excel table for quick analysis and reporting.
  3. New files in the Orders library create items in an Order Register list.
  4. Approvals run from that list with clear outcomes and statuses.
  5. Scheduled reminders chase stuck items based on age and status.

Each flow is small and focused. Together they:

  • Remove manual attachment handling.
  • Turn Forms data into structured Excel logs without touching the form UI.
  • Give a single list as the work queue.
  • Provide traceable approvals and automated nudges.

One Practical Takeaway

Before building anything complex, get these five flows running for one process in your team and keep them intentionally simple. Once you see where the pain points actually move – Excel concurrency, list schema changes, approval routing – you’ll know whether to stay with SharePoint/Excel or step up to Dataverse and more advanced patterns.

Editor's Note

This article reflects a common pattern of using a small set of Power Automate flows to turn ad‑hoc email, Forms and file handling into a lightweight workflow system, especially in office teams that rely heavily on Outlook, SharePoint and Excel.

Professionals who want to apply these patterns to their own data can explore Excelgoodies' Power Automate Course programme - taught live by instructors, with certification awarded once a real project is running at work.

Insights compiled through ongoing industry research and discussions within the Excelgoodies Analytics Community.

Power Automate

New

Next Batches Now Live

Power BIPower BI
SQLSQL
Power AppsPower Apps
Power AutomatePower Automate
Microsoft FabricMicrosoft Fabrics
AzureAzure Data Engineering
Explore Dates & Reserve Your Spot → Reserve Your Spot →