Just over a year ago I blogged about a Power App I had built that consolidated my calendar and tasks in the one view for improved at-a-glance visibility of what I had coming up for the day.
Full credit where credit is due: when I say “I had built” – I mean fellow Microsoft MVP Rene Modery built for me and I made some minor adjustments. Back then I simply couldn’t get my head around Power Apps sufficiently to build it myself.
The original app showed my agenda for the day as well as any tasks due the day and any update / refresh needed to be done manually.
New & updated features
Since the initial build of the app I’ve been working with Power Apps a lot more and have been comfortable enough to experiment and make some adjustments to the app.
As I have ADHD, these adjustments were designed to go beyond giving me a clear view of my day, but also a clear view of right now. However, you don’t need to have ADHD to benefit from them.
Visual appearance
One small tweak was the addition of the Bing image of the day as the canvas background. As the day goes on, you see more of the background, kind of like a ‘light at the end of the tunnel’.
Another tweak was to have the app automatically refresh every 5 minutes so that any changes are updated without me having to worry about remembering to refresh.
Additionally, I thought it important to put a large clock front and centre so that at a glance I could see where I was in the day. This is important because sometimes it’s easy to get hyperfocused and lose all track of time.
Appointment vs. meeting icon
Having a list of calendar items showing was good, but I couldn’t tell if they were an appointment (just me) or a meeting with other people. I added an icon to automatically display which of those the item is, so again at a glance I can tell what’s coming up.
Additionally, I’ve added the location of the meeting so I can tell if it’s in-person or online.
Daily progress
Across the day we have a lot of meetings and perform a lot of tasks, so I felt it was important to show that.
In the column headings for Calendar and Tasks I’ve added some basic statistics to show how many appointments and tasks have been completed and how many remain.
Pomodoro timer
I’ve really gotten into the Pomodoro technique as a way of being able to burn through a task with no distractions. I don’t necessarily use it exactly as designed but having the ability to challenge myself and ‘race the clock’ helps keep me focused when I can sometimes become easily distracted.
When I press the Start Pomodoro button, the app shows a different canvas with a 25-minute countdown. It updates each minute, and at the end goes back to the main screen.
There is also the ability to cancel earlier, should the task be completed faster.
Integration with Microsoft Teams and Windows 10
One thing I wanted from the Pomodoro timer was for it to change my ability to receive notifications. The best way to do this in the Microsoft world is to use the MyAnalytics “Focus plan” feature in Microsoft 365. When this is activated, the presence in Microsoft Teams is changed to “Focusing” (an equivalent of Do Not Disturb) and the Action Center in Windows is set to “Focus assist” which effectively suppresses all notifications.
The issue I had unfortunately was that the Focus time appointments that MyAnalytics creates (which trigger your presence in Microsoft Teams to change) are very specific, and I wasn’t able to replicate them manually. While there are three attributes I could see (title, description, category), manually creating an appointment with these same settings would have no effect. However, copying existing Focus time appointments would have the desired effect, so the challenge became how to automate that and integrate it with my app.
While I put this on the backburner, fellow MVP Stale Hansen had been working on his own Pomodoro timer system using PowerShell and had cracked the Focus time challenge by utilising Power Automate to copy existing Focus time appointments and modify them at will.
Thankfully he had made the workflows available on GitHub, so with some small modifications I was able to connect them to my Power App and have the appointments get triggered when the Pomodoro button was pressed.
As you can see below, here is my unassuming calendar before I press the Pomodoro button:
After I press the Pomodoro button an additional appointment is created:
When the 25-minute timer ends or finish earlier and press the Cancel button, the appointment is removed:
The workflows
There are two workflows required that are triggered by the Power App: the first creates the appointment, the second removes it.
I had to modify Stale’s workflows as his are triggered by PowerShell, so some of the items were not required.
Creating the “Focus Time” appointment
Ending/Cancelling the Focus Time appointment
Conclusion
This method was so successful for me, I opted for having a dedicated monitor to run the app:
I previously had this running with dedicated external monitor, but felt it was a waste as I wasn’t using the Surface screen for anything other than Outlook (which I hardly use now anyway).
Effectively I have the app open all day taking up an entire Surface screen, and on my primary monitor I don’t even need to keep Outlook or To Do open unless I’m actually working in them.
My productivity has skyrocketed since implementing this reduced distraction approach combined with the My Day Today app.
The next step is to have this set my mobile phone to Do Not Disturb status. I have actually figured that part out for Android, but it was not exactly a smooth solution, so I’ve got some more work to do there and will come back to it later.
You can download the solution file from GitHub, which includes both the app for Power Apps and workflows for Power Automate.
Also published on Medium.
Discover more from Loryan Strant, Microsoft 365 MVP
Subscribe to get the latest posts sent to your email.
This is a great idea – something I’ve been trying to trying to replicate with powershell to tweak the status.
I found that I had to go into the Flow’s and update the calendar settings in each one to replace the calendar secret ID, and then pick my calendar from the drop down list. Also updated the timezone in RescheduleFocusTimeCalendarEvent to be my local time. I can see the focus time being set in the calendar but it does not seem to be applying to outlook or teams. My status stays the same and emails are still popping up as notifications as they arise.
Hrm that’s strange. Also I didn’t think the calendar secret ID was in there as that was only needed for PowerShell.
With regards to it not changing your status, so you have any existing Focus Time appointments in your calendar created by MyAnalytics?
this is a great idea. I can’t actually believe that something like this is not integrated by default within the 365 product line.
I have downloaded and setup the app. I did the changes Andy reported, except the time zone one, I cannot find it in that flow. I managed to clear a couple of errors. everything looks to work, no error message BUT no Focus time appointment is created when I click the Pomodoro button. and yes, I do have existing Focus Time appointments in my calendar, setup by Analytics. I am completely new to power apps.
any suggestion on what to check please?
Sorry for the delay in responding!
Are the Focus Time appointments in your calendar for the current week? I found if I didn’t have any in my calendar for this week, then the workflow would create them but they wouldn’t have the same effect as actually changing my presence to “Focusing” in Microsoft Teams.
This is a great idea, and I want to try it out. Can you please share a “dummies” guide on how to install it and get it working?
Hey Shaun, the first step is to import the app (https://docs.microsoft.com/en-us/powerapps/maker/canvas-apps/export-import-app#importing-a-canvas-app-package). Have you done that step?
This was my missing step, thank you!
Hi Loryan, App looks great unfortunately I am unable to get it to run as i keep getting asked for permission for outlook tasks? any idea why this would be?
It should only happen the first time you run it. Does it happen each time you open it?