Google Tasks to Teams Approval Tasks
When a Google Task is tagged for approval, the flow starts a Teams/Outlook approval, and on the decision marks the task complete or reopens it with the reviewer's note appended. Adds a lightweight approval gate to Google Tasks items.
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
FlowLibs - Google Tasks to Teams Approval Tasks adds a lightweight approval gate on top of Google Tasks. On a 15-minute schedule it scans a Google Tasks list for items whose title is tagged with an approval marker (default [APPROVE]), runs a Teams/Outlook approval for each one, then records the decision as a new Google Task and posts the outcome to a Microsoft Teams channel.
Why it matters: Google Tasks has no native approval concept. Routing tagged tasks through Microsoft Approvals adds a sign-off step and a visible audit trail, all without leaving the team's existing Google Tasks workflow.
Connector constraint: The Google Tasks connector exposes only create and read operations — it has no update / complete / patch / delete task operation. This flow therefore records each decision as a new Google Task ([APPROVED] ... / [REJECTED] ... with the reviewer's note) plus a Teams post, rather than mutating the original task. Going live, the original-task write-back can be added if/when the connector gains an update op, or via a custom connector with Google OAuth.
Use Case
A team uses Google Tasks for day-to-day to-dos, some of which need a manager's sign-off before they proceed (e.g. publishing content, committing spend, approving a deliverable). They tag those tasks by prefixing the title with [APPROVE]. This flow turns each tagged task into a formal Microsoft Approval and broadcasts the decision to the team's Teams channel — giving Operations and Project Managers an approval gate and audit record without adopting a new task tool.
Flow Architecture
Every 15 Minutes
Recurrence (15 min)Poll on a schedule (Google Tasks has no approval/overdue trigger).
Initialize Approval Tag
Initialize VariablevarApprovalTag from env var flowlibs_GTApprovalTag.
Initialize Approver Email
Initialize VariablevarApproverEmail from env var flowlibs_ApproverEmail.
Initialize Teams Group Id
Initialize VariablevarTeamsGroupId from env var flowlibs_TeamsGroupId.
Initialize Teams Channel Id
Initialize VariablevarTeamsChannelId from env var flowlibs_TeamsChannelId.
Initialize Task List Id
Initialize VariablevarTaskListId from env var flowlibs_GoogleTaskListId.
List Tagged Tasks
Google Tasks — ListTasksRead all tasks in the configured list.
Filter For Approval
Filter ArrayKeep open tasks (status = needsAction) whose title starts with the tag.
Apply To Each Tagged Task
Apply to eachProcess each tagged task.
Start Approval
Approvals — StartAndWaitForAnApprovalBasic Approve/Reject, assigned to the approver, waits for decision.
Check Approval Outcome
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_GTApprovalTag | String | [APPROVE] | Title prefix that marks a task as needing approval. |
| flowlibs_GoogleTaskListId | String | @default | Id of the Google Tasks list to monitor. |
| flowlibs_ApproverEmail | String | you@yourcompany.com | Email of the approver (assignedTo). |
| flowlibs_TeamsGroupId | String | <your-team-id> | Target Teams team (group) id for notifications. |
| flowlibs_TeamsChannelId | String | <your-channel-id> | Target Teams channel id for notifications. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Google Tasks | shared_googletasks | ListTasks CraeteTask |
| Approvals | shared_approvals | StartAndWaitForAnApproval |
| Microsoft Teams | shared_teams | PostMessageToConversation |
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.
- Change the tag
- Set flowlibs_GTApprovalTag to any marker your team prefers (e.g. [NEEDS-SIGNOFF]).
- Route by list or approver
- Point flowlibs_GoogleTaskListId at a dedicated Pending Approval list, or extend the flow to map list -> approver for multi-approver routing.
- Multi-approver
- Swap the single approval for a first-to-respond or everyone-must-approve Approvals type.
- Original-task write-back
- When the Google Tasks connector adds an update op (or via a custom Google OAuth connector), replace the decision-record task with a real mark complete / reopen + append note on the source task.
- Dedup / in-flight tracking
- Add a Dataverse table keyed by task id to avoid re-requesting approval for a task already in flight across polling cycles.
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.01Filter to tagged, open tasks
Keeps open tasks whose title starts with the approval tag.
EXPR.02Decision branch
Branches on the approval outcome.
EXPR.03Reviewer comment
Pulls the reviewer's note from the response.
EXPR.04Audit task title
Builds the decision-record task title.
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.