This App intends to assist the user in scheduling (longer term) projects in and around user's existing calendar events, so that user can progress those projects in the gaps between events - in timeblocks of deep work.
There are secondary goals reached/implemented by the App: a calendar audit and a calendar cleanup - either discriminate or in bulk.
The App's design is inspired by Unix tools - broken in small, usable functions that can be composed together to accomplish Workflow's goal - or User's goal. As such - it can be seen as similar to a knife: useful, but can cut both ways sometimes.
At startup - User can request spreadsheet templates initialization: several tabs will be created and populated with required fields/columns:
Logs Tab: Messages recorded by the application - tracking it's progress and errors
Settings Tab: A list of configuration setting
Projects Tasks: A queue of projects and tasks within those projects
Proposed Schedule: Output tab for "computations". Will hold the calendar events and/or the result of scheduling the tasks along existing calendar events in selected calendars.
Calendar List: A list of calendars watched/owned by the user with their associated checkboxes for filtering actions.
The list of tabs becomes instantly available as spreadsheet templates by running the (Extensions->Scheduler Pro->) ✨ Initialize / Reset Templates', which cleans up existing tabs and re-sets the standard layout the application expects to run properly.
This App intends to assist the user in scheduling (longer term) projects in and around user's existing calendar events, so that user can progress those projects in the gaps between events - in timeblocks of deep work.
There are secondary goals reached/implemented by the App: a calendar audit and a calendar cleanup - either discriminate or in bulk.
The App's design is inspired by Unix tools - broken in small, usable functions that can be composed together to accomplish Workflow's goal - or User's goal. As such - it can be seen as similar to a knife: useful, but can cut both ways sometimes.
At startup - User can request spreadsheet templates initialization: several tabs will be created and populated with required fields/columns:
Logs Tab: Messages recorded by the application - tracking it's progress and errors
Settings Tab: A list of configuration setting
Projects Tasks: A queue of projects and tasks within those projects
Proposed Schedule: Output tab for "computations". Will hold the calendar events and/or the result of scheduling the tasks along existing calendar events in selected calendars.
Calendar List: A list of calendars watched/owned by the user with their associated checkboxes for filtering actions.
The list of tabs becomes instantly available as spreadsheet templates by running the (Extensions->Scheduler Pro->) ✨ Initialize / Reset Templates', which cleans up existing tabs and re-sets the standard layout the application expects to run properly.
✨ Initialize / Reset Templates
Inputs: none. The existing spreadsheet.
Transformation: will insert in the current sheet a series of "tab templates" - needed to unfold later functionality on.
Output: A collection of tabs [Logs, Settings, Project Tasks, Proposed Schedule, Calendar List] for later use. Except for the 'Project Tasks' tab - all values are reset upon calling this function.
📅 FETCH CALENDAR EVENTS
Inputs: The selected calendars in the Calendar List Tab. The Look Ahead period in days in the Settings tab.
Transformation: Fetching events in Google Calendar that are checked under Calendar List Tab.
Output: A list of appointments filling the table in Project Tasks tab.
📚 Fetch My Calendar List
Inputs: Implicit input: User logged into his google account.
Transformation: Collecting calendar names/IDs.
Output: A calendars table in the Calendar List Tab representing all calendars visible to the User's Google Calendar page. The list can be expanded and shrunk to display all calendars visible on the home page.
🚀 SCHEDULE PROJECTS ALONGSIDE EVENTS [PRO]
Inputs: Project Tasks template; checked calendars (Fixed Events); Settings tab (preferred calendar, Lookahead, Workday Start/End, Break Size, Max Block Size).
Transformation: Scheduling of Project Tasks in Proposed Schedule tab along collected calendar entries.
Output: A tabulated and sorted list of Tasks and events for upload. The list is editable, filterable, and computable within the spreadsheet.
🔄 COMMIT TO CALENDAR (Sync) [PRO]
Input: Proposed Schedule tab results.
Transformation: Upload of PROPOSED tasks into corresponding Google Calendars.
Output: The list status updates to COMMITTED, and event IDs are populated as handles for later cleanup.
🤝 Test Brain Handshake
Action: Debugging tool to check backend connectivity for scheduling.
Outputs: A log diagnostic message.
🗑️ Wipe All COMMITTED [PRO]
Inputs: The COMMITTED list and associated Event IDs in the Proposed Schedule tab.
Transformation: Deletes specific entries from Google Calendar; marks tasks back as PROPOSED.
Output: A planning calendar cleared of previously uploaded events.
🗑️ Clear Preferred calendar [PRO]
Inputs: Preferred calendar and Lookahead duration from Settings.
Transformation: Any event within the Lookahead window in the preferred calendar is wiped.
Output: A pristine planning calendar.
There are a few workflows available in the free version - and a larger set in the Pro-paid version. However, the ability to manipulate a schedule through Google Sheet's interface (filter/sort/chart/compute) can be useful, even within the free version: give it a try.
All commands are available through Extensions-> Scheduler [PRO]-> menu interface.
Fetch Calendars: Events in the checked list from Calendars List Tab - are fetched/sorted into Proposed Schedule Tab. For the future interval: (now,now+Lookahead Days) in the future.
Initialize/Reset Templates:Application tabs are (re)created and cleared. It is recommended to backup (copy tab) Project Tasks (and any others you might want to keep) - although that is not typically overwritten/cleared at Initialize. Also, copy your preferred calendar value from Calendar List to the Settings tab - so that later scheduling can be assigned to that calendar by default. Our suggestion is to have a separate Planning calendar for this operation.
Fetch my Calendar List All Calendars selected and subscribed to by the user - in his Google Calendar account will be fetched and listed here - with a checkbox. If checked - the settings will take effect for all operations where a calendar selection is involved. Fetching the list is also done once at initialization - and unlikely to be needed later.
Help Page:Pops up this help page
🚀 SCHEDULE PROJECTS ALONGSIDE EVENTS [PRO]: Calendar events (marked in Calendar List Tab) are fetched - and a new schedule is generated - blending the Project Tasks (un-DONE yet) tab plan with existing events. All values in the Settings tab will take effect for this computation: the schedule will be restricted within Start-End hours, in blocks of at most Block size - with breaks between blocks of Break size, for the future timespan of Lookahead time. It is recommended to copy your preferred calendar from Calendar List to Settings tab - so that later scheduling can be assigned there by default. Our suggestion is to have a separate Planning calendar for this operation.
Post processing (user intervention):After Proposed Schedule has been populated: now it is the time to re-examine the schedule and filter/sort/compute/update the computed results. User can alter fields such as dates, titles, descriptions. It is not recommended to change event ID. Calendar ID could be altered, eventually - by power users. Do not alter EXISTING/PROPOSED Type field - that will used to track the calendar synchronization later. It can be useful to delete whole rows, though. Now is the time to filter by project and edit destination CALENDAR/ID - making it project-specific, instead of default.
🔄 COMMIT TO CALENDAR (Sync) [PRO]: All PROPOSED will turn into COMMITED (if they don't have a corresponding EVENT/ID set) - as they are injected into the real calendar as events/time blocks - per specification of it's CALENDAR/ID field. EVENT/ID field is populated with a handle to the event ID (that Google calendar returned upon booking) - so that they could be deleted with discernment by the next Wipe All action.
🗑️ Wipe All COMMITTED [PRO]: Deletes all EVENT/IDs labelled COMMITTED in the Proposed Schedule Tab - reverting them to PROPOSED status. With careful handling and updating of status - some can be exempt from deletion - and others (in existing calendars) can be scheduled for deletion - even if not initially computed by the SCHEDULE PROJECTS action.
Block Size
Maximum continuous work time for one task.
Break Size
Mandatory gap between scheduled tasks.
Destination Calendar ID
The destination used by SCHEDULE PROJECTS to assign tasks into.
Lookahead
How many days into the future the Brain scans.
Have a separate calendar for each project - or, at the very least - one Planning Calendar. It is much easier to cleanup, and eventually time-shift entries with one calendar per project.
Mark your activities in the calendar for a month - then Fetch Calendar entries - and perform a time usage audit - using filters and charting.
Use your Project Tasks tab to move all Start Date/End Date 10 days later. Then request rescheduling (which will account for the fixed events and plan around them)
Change priorities - when something becomes more urgent, Wipe the existing calendar entries (uploaded with this tool), Reschedule and reupload
Use the Proposed Tasks table - just like a spreadsheet: apply filters, delete rows, change destination calendars for (filtered by project) entries. Do not delete EventID for already uploaded events - they will need to be cleared by hand in Google Calendar - which is a tedious task. Manually alter the PROPOSED scheduling if needed, delete and re-upload.
For Google Workspace Users: Insert/use a timeline view to flatten out Project Tasks - and make them sequential before scheduling. It will help the scheduling operation produce a calendar that "Breathes"