Power Automate: 10 Real Workflows That Save Hours Every Week

⏱ 6 min read

Microsoft Power Automate (formerly Microsoft Flow) is a cloud-based automation platform that connects your Office 365 apps — Outlook, SharePoint, Teams, Excel Online — and over 400 third-party services. This guide focuses on 10 practical, real-world workflows you can build today, even without any coding experience.

In this article
  1. What Makes Power Automate Different from VBA or Macros?
  2. Basic Level: 5 Simple Flows to Build Today
  3. 1. Email-to-SharePoint: Save Attachments Automatically
  4. 2. Daily Excel Report from SharePoint List
  5. 3. Teams Notification on SharePoint List Update
  6. 4. Approval Workflow: Purchase Request
  7. 5. Mobile Button: Log My Work Hours
  8. Intermediate Level: Advanced Data Processing Flows
  9. 6. Process Form Responses to Excel and Teams
  10. 7. Sync SharePoint List to Excel Table Daily
  11. Expert Level: Error Handling and Parallel Flows
  12. 8. Robust Flow with Error Handling
  13. 9. Parallel Branches for Speed
  14. 10. Scheduled Data Quality Check
  15. Continue learning
Advertisement

What Makes Power Automate Different from VBA or Macros?

FeaturePower AutomateVBA/Macros
Cloud-basedYes — runs 24/7 without your PCNo — requires Excel to be open
Cross-app automationYes — Outlook + SharePoint + TeamsLimited to Office apps
Mobile triggersYes — button flows on phoneNo
SchedulingYes — built-in schedulerRequires Windows Task Scheduler
Office Scripts integrationYes — run scripts on Excel OnlineSeparate from VBA

Basic Level: 5 Simple Flows to Build Today

1. Email-to-SharePoint: Save Attachments Automatically

Trigger: When a new email arrives with an attachment
Action: Save attachment to a SharePoint folder
Use case: Never manually download and file invoice PDFs, payslips, or reports again.

Flow setup:
Trigger: Office 365 Outlook → When a new email arrives (V3)
  Filter: Has attachments = Yes
  Filter: From = [email protected] (optional)

Action 1: Apply to each (Attachments list)
  Action: SharePoint → Create file
    Site: https://yourcompany.sharepoint.com/sites/Finance
    Folder: /Invoices/2024
    File name: @{triggerOutputs()?['body/from']} - @{formatDateTime(utcNow(),'yyyy-MM-dd')} @{items('Apply_to_each')?['Name']}
    File content: @{items('Apply_to_each')?['ContentBytes']}

2. Daily Excel Report from SharePoint List

Trigger: Scheduled (every weekday at 8:00 AM)
Action: Read SharePoint list → Update Excel → Email summary
Use case: Automated morning report without anyone touching Excel.

Advertisement
Trigger: Recurrence → Every 1 Day at 08:00 (Mon-Fri)

Action 1: SharePoint → Get items
  List: "Sales Pipeline"
  Filter: Status eq 'Open'
  
Action 2: Excel Online (Business) → Run script
  File: /Reports/DailySales.xlsx
  Script: "UpdateDashboard"
  Parameters: { "data": @{body('Get_items')?['value']} }

Action 3: Office 365 Outlook → Send email
  To: [email protected]
  Subject: Daily Sales Report - @{formatDateTime(utcNow(),'dd MMM yyyy')}
  Body: @{body('Run_script')?['result']?['summary']}

3. Teams Notification on SharePoint List Update

Trigger: SharePoint → When an item is modified
  Site: Your SharePoint site
  List: "Project Tracker"

Condition: If Status is equal to "Completed"
  Action: Microsoft Teams → Post a message in a chat or channel
    Team: Project Team
    Channel: Updates
    Message: ✅ Task completed by @{triggerOutputs()?['body/Editor/DisplayName']}: 
              **@{triggerOutputs()?['body/Title']}**
              Due date was: @{formatDateTime(triggerOutputs()?['body/DueDate'],'dd MMM yyyy')}

4. Approval Workflow: Purchase Request

This flow sends an approval request and updates a SharePoint list automatically based on the response.

Trigger: SharePoint → When an item is created (Purchase Requests list)

Action 1: Approvals → Start and wait for an approval
  Approval type: Approve/Reject - First to respond
  Title: Purchase Request: @{triggerOutputs()?['body/Title']}
  Assigned to: [email protected]
  Details: Amount: ₹@{triggerOutputs()?['body/Amount']}
           Requested by: @{triggerOutputs()?['body/Author/DisplayName']}

Condition: If Outcome equals "Approve"
  Yes branch: SharePoint → Update item → Status = "Approved"
              Outlook → Send email to requester "Approved!"
  No branch:  SharePoint → Update item → Status = "Rejected"
              Outlook → Send email to requester "Rejected"

5. Mobile Button: Log My Work Hours

Create a button in the Power Automate mobile app that logs your current time to an Excel sheet with one tap.

Trigger: Manually trigger a flow (Button)
  Input: Text → "Task worked on"

Action: Excel Online → Add a row into a table
  File: OneDrive → WorkLog.xlsx
  Table: TimeLog
  Row:
    Date: @{formatDateTime(utcNow(), 'yyyy-MM-dd')}
    Time: @{formatDateTime(utcNow(), 'HH:mm')}
    Task: @{triggerBody()?['text']}
    Day: @{dayOfWeek(utcNow())}

Intermediate Level: Advanced Data Processing Flows

6. Process Form Responses to Excel and Teams

Trigger: Microsoft Forms → When a new response is submitted
  Form: Customer Feedback Form

Action 1: Microsoft Forms → Get response details

Action 2: Excel Online → Add a row
  File: Feedback_Tracker.xlsx  
  Row: Date, Name, Rating, Comments, Email from form response

Action 3: Condition: If Rating less than 3
  Yes: Teams → Post urgent notification to Support channel
       Outlook → Send alert to customer success team

7. Sync SharePoint List to Excel Table Daily

Trigger: Recurrence → Every day at 06:00 AM

Action 1: Excel Online → Run script "ClearTable"
  Clears all rows from previous day

Action 2: SharePoint → Get ALL items (use Do Until + pagination)
  List: "Customer Orders"
  Set page size to 500 to get all items

Action 3: Apply to each (SharePoint items)
  Excel Online → Add a row into table "Orders"
  
Result: Excel always has fresh data from SharePoint each morning

Expert Level: Error Handling and Parallel Flows

8. Robust Flow with Error Handling

// Add "Configure Run After" on each action to handle failures:

Main action: HTTP → Call external API
  Run after: Previous step succeeded

Error handler: Send email notification
  Configure Run After: Check "has failed", "has timed out", "has been skipped"
  To: [email protected]
  Subject: Flow Error - @{workflow()?['name']}
  Body: Error details: @{body('HTTP')?['error']?['message']}
        Flow run: @{workflow()?['run']?['id']}
        Time: @{utcNow()}

// Always include a "Terminate" action at the end
Terminate: Status = "Succeeded" (or "Failed" in error branch)

9. Parallel Branches for Speed

When you need to do multiple independent tasks, use parallel branches to run them simultaneously and cut execution time.

Trigger: When new order received

Parallel Branch 1: Send confirmation email to customer
Parallel Branch 2: Update inventory in SharePoint
Parallel Branch 3: Post to Teams #orders channel
Parallel Branch 4: Log to Excel order tracker

After all branches complete:
Action: SharePoint → Update order status to "Processing"

// All 4 actions run simultaneously - no waiting for each to finish
// Cuts flow runtime from 20s (sequential) to 5s (parallel)

10. Scheduled Data Quality Check

Trigger: Recurrence → Every Monday at 09:00 AM

Action 1: SharePoint → Get items where "Last Updated" < 7 days ago
Action 2: Filter array → Items where Status = "Open" AND AssignedTo is empty

Condition: If filtered array length is greater than 0
  Yes: 
    Apply to each filtered item:
      Approvals → Send reminder email to item creator
      Log to Teams: "⚠️ @{items()?['Title']} has no assignee for 7 days"
    
    Excel → Add row to Audit_Log.xlsx with count and date

  No: Teams → Post "✅ All items have assignees. Data quality OK."

Pro Tips for Production Flows:

  • Always rename your actions (not “Get items 2”) — makes debugging much easier
  • Use environment variables for URLs and email addresses — avoids hardcoding
  • Set “Concurrency Control” on Apply to each when processing large lists to avoid throttling
  • Use “Compose” actions to build complex expressions once and reference them multiple times
  • Premium connectors (HTTP, SQL, Dataverse) require a Power Automate Premium license (~₹1,500/month)
✨ Ask AI about this article

Stuck on a step? Ask a question and the AI answers using this article.

Free · AI can be wrong

Leave a Reply

Your email address will not be published. Required fields are marked *