Google Sheets Approval Tracker
When a row in a Google Sheet is marked Submitted, the flow launches a Teams/Outlook approval, writes the decision, approver, and timestamp back to the row, and emails the requester the outcome. Adds an auditable approval gate to a lightweight Google Sheets request log.
Provided as-is, without warranty of any kind. Review and test each pattern in a non-production environment before deploying it to live automations. See our Terms.
Overview
This flow adds an auditable approval gate to a Google Sheets request log. When a row is marked Submitted, it launches a Teams/Outlook approval, writes the decision, approver, and timestamp back to the row, and emails the requester the outcome. Why it matters: Google Sheets is a common lightweight tracker but has no real approval engine. Power Automate Approvals add routing, reminders, and an audit trail with write-back.
Use Case
A team logs requests (spend, access, content) in a Google Sheet and needs documented approvals.
Flow Architecture
When row modified
Google Sheets — When_row_modifiedPolls the request log; fires when a row's Status is set to Submitted.
Start Approval
Approvals — StartAndWaitForAnApprovalLaunches an Approve/Reject approval routed to the mapped approver.
Update Row
Google Sheets — UpdateRowWrites the decision, approver, and timestamp back to the row.
Email Requester
Office 365 Outlook — SendEmailV2Emails the requester the approval outcome.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_GSheetId | String | <configure> | Spreadsheet (file) ID of the request log. |
| flowlibs_ApproverMap | String | <configure> | JSON map of request Type to approver email. |
| flowlibs_StatusColumn | String | Status | Header of the status column the trigger watches. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Google Sheets | shared_googlesheet | GetRow UpdateRow |
| Approvals | shared_approvals | StartAndWaitForAnApproval |
| Office 365 Outlook | shared_office365 | SendEmailV2 |
Note — All connections are referenced as solution connection references; the flow is portable between environments as long as a connection is mapped at import time.
Customization Guide
Almost every realistic variant of this flow can be implemented by changing environment variable values. A few cases require small edits inside the flow definition — those are called out explicitly below.
- Tiered approval
- Route by amount or role so larger requests need a higher-level approver.
- Reminders
- Nudge pending approvers who have not yet responded.
- Reject reason
- Capture a rejection reason and write it back to the sheet.
Key Expressions
The flow is intentionally light on Power Fx / WDL gymnastics — the heaviest expressions are the branch-name concatenation and the approval outcome check. They are listed below in the order they appear in the flow.
EXPR.01Resolve approver
Looks up the approver email for the request Type from the JSON map.
EXPR.02Approval outcome
Approve or Reject outcome written back to the row.
Customize & download
Generate a ready-to-import copy of this solution with your environment-variable values baked in — available on Base, Pro, or Team.
Upgrade to customize
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.