Google Tasks Recurring Task Generator
On a schedule, the flow reads a recurrence definition (Dataverse/Sheet of templates) and creates the next instances of recurring Google Tasks — daily standups, weekly reports, monthly reviews — with correct due dates, avoiding duplicates. Adds robust recurring tasks beyond Google's built-in repeat.
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 robust, template-driven recurring tasks to Google Tasks — going beyond Google's limited built-in repeat options. On a daily schedule it reads recurrence templates stored in a Dataverse table, finds the ones whose next-due date has arrived, creates each as a Google Task with the correct due date, advances the template's schedule by its cadence (which inherently avoids duplicates), and posts a summary to a Microsoft Teams channel.
Why it matters: Google Tasks can only repeat on simple fixed intervals and has no central management. A template-driven generator supports any day-based cadence (daily standups, weekly reports, 30/60/90-day reviews), keeps all recurrence rules in one governed Dataverse table, and notifies the team each run.
Build: CF-700. Solution FlowLibs - Google Tasks Recurring Task Generator. State Off (demo). Flow Checker 0 errors / 0 warnings.
Use Case
Operations and business users who manage recurring work in Google Tasks need cadences Google can't express natively and a single place to maintain them. They populate the Recurring Task Template Dataverse table (title, notes, cadence in days, next-due date, target list), switch the flow On, and the generator creates each instance on time and reports activity to Teams.
Flow Architecture
Recurrence
Recurrence (Day / 1, 06:00 UTC)Runs once daily to generate the day's due tasks.
Initialize Default Task List
Initialize VariablevarDefaultTaskList = env var flowlibs_GoogleTaskListId. Fallback list when a template has no override.
Initialize Teams Group Id
Initialize VariablevarTeamsGroupId = env var flowlibs_TeamsGroupId.
Initialize Teams Channel Id
Initialize VariablevarTeamsChannelId = env var flowlibs_TeamsChannelId.
Initialize Run Timestamp
Initialize VariablevarRunTimestamp = utcNow(). One consistent time used both to filter due rows and to stamp Last Generated.
List Due Recurring Templates
Microsoft Dataverse — ListRecordsReads flowlibs_recurringtasktemplates where status Active and next-due le run timestamp, ordered by next-due.
Apply to each Template
ForeachProcesses every due template.
Create Google Task
Google Tasks — CraeteTaskCreates the task instance: title/notes/due from the row, list = row override or varDefaultTaskList.
Advance Template Schedule
Microsoft Dataverse — UpdateRecordStamps flowlibs_lastgenerated and advances flowlibs_nextdue by flowlibs_cadencedays — so the same instance is never created twice.
Post Summary To Teams
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_GoogleTaskListId | String | @default | Default Google Tasks list id. @default targets the user's primary list. |
| flowlibs_TeamsGroupId | String | <your-team-id> | Teams team (group) id for the summary notification. |
| flowlibs_TeamsChannelId | String | <your-channel-id> | Teams channel id for the summary notification. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Google Tasks | shared_googletasks | CraeteTask |
| Microsoft Dataverse | shared_commondataserviceforapps | ListRecords UpdateRecord |
| 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 cadence
- Edit each template row's flowlibs_cadencedays (e.g. 1 = daily, 7 = weekly, 30 = monthly-ish). No flow edits needed.
- Pause a recurrence
- Set flowlibs_status to Paused; the row stops generating without being deleted.
- Per-template list
- Set flowlibs_tasklistid on a row to route that recurrence to a specific Google Tasks list; otherwise it uses flowlibs_GoogleTaskListId.
- Generation frequency
- Adjust the Recurrence trigger (frequency/interval/startTime) to run more or less often.
- Lead time
- To create tasks N days early, compare flowlibs_nextdue against addDays(varRunTimestamp, N) in the List Due Recurring Templates filter.
- Notification target
- Re-point flowlibs_TeamsGroupId / flowlibs_TeamsChannelId, or swap the Teams action for email.
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.01Due-template filter ($filter)
Selects active templates whose next-due has arrived.
EXPR.02Task list (with fallback)
Per-row list override with default fallback.
EXPR.03Advance schedule
Moves next-due forward by the cadence.
EXPR.04Generated count (Teams)
Number of instances generated this run.
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.