Google Tasks to Dataverse Reporting
On a schedule, the flow exports Google Tasks across lists into a Dataverse table, capturing status, due dates, completion times, and list, then refreshes a Power BI dashboard of throughput and overdue tasks. Gives reporting on personal/team Google Tasks beyond the basic app.
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 brings analytics to Google Tasks. On a nightly schedule it reads every Google Tasks list, exports each task (status, due date, completion time, list, overdue flag) into a Dataverse fact table using an idempotent upsert, then triggers a Power BI dataset refresh so a throughput / overdue dashboard always reflects the latest data. Google Tasks has no native reporting; landing the data in Dataverse gives governed trend, workload, and overdue analytics in Power BI that the Google Tasks app cannot provide.
Use Case
A team tracks work in Google Tasks but leadership wants metrics on completion throughput, overdue work, and workload by list. This flow continuously lands Google Tasks into Dataverse and refreshes a Power BI report, with a watermark-free full upsert that keeps one row per task.
Flow Architecture
Nightly Recurrence
RecurrenceNightly load window (Day/1, 01:45 UTC).
Initialize Config
Initialize variableMints a correlation id, captures the snapshot date, and binds the optional list filter and Power BI workspace + dataset ids from env vars.
List Task Lists
Google Tasks - ListTaskListsReads all task lists for the account, then filters to the allow-list (empty keeps all).
Apply To Each List
Apply to eachIterates each selected list and reads all tasks (including completed) via ListTasks.
Apply To Each Task
Apply to each (nested)Computes the overdue flag, looks up an existing fact row by task id, and composes the whole fact-row object.
Upsert Task Fact
Dataverse - CreateRecord / UpdateRecordCreates when the task is new, updates the matched row when it already exists (one row per task).
Refresh Power BI Dataset
Power BI - RefreshDatasetRefreshes the throughput / overdue dashboard dataset at the end of the run.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_TaskListIds | String | — | Optional comma-separated allow-list of Google task-list ids. Empty exports every list. |
| flowlibs_PowerBIWorkspaceId | String | <configure> | Power BI workspace / group id (groupid for the refresh). |
| flowlibs_PowerBIDatasetId | String | <configure> | Power BI dataset id refreshed at the end of the run. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Google Tasks | shared_googletasks | ListTaskLists ListTasks |
| Microsoft Dataverse | shared_commondataserviceforapps | ListRecords CreateRecord UpdateRecord |
| Power BI | shared_powerbi | RefreshDataset |
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.
- Scope the lists
- Set flowlibs_TaskListIds to a comma-separated list of task-list ids to export only specific lists; leave empty to export all.
- Schedule
- Change the Nightly Recurrence frequency/time for more frequent loads.
- Per-user dimension
- Add an account/owner column and stamp it for multi-account reporting.
- Daily snapshots
- Keep flowlibs_snapshotdate history (do not upsert) to chart open-task trends over time.
- SLA flags
- Extend Compose Is Overdue to bucket overdue by age (e.g. 1-3 / 4-7 / 8+ days).
- Power BI
- Point flowlibs_PowerBIWorkspaceId + flowlibs_PowerBIDatasetId at your reporting dataset; build throughput, cycle-time, and overdue visuals over flowlibs_gtaskfact.
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.01Overdue flag
Yes when open, due, and past due.
EXPR.02Upsert lookup filter
Finds an existing fact by Google task id.
EXPR.03Upsert branch test
True -> Create, else -> Update.
EXPR.04List filter (keep-all when empty)
Empty allow-list exports every list.
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.