Interactable to-do list

Kyle_819737 Posts: 1
edited October 2021 in Show and Tell

Hi all! A while ago I built a process that allows you to fill out a simple webform and add a 'Task' or to-do item to a list. This to-do list will be sent to you every morning and you are able to mark if you've completed that task or not. After the submission deadline, any items you've marked as completed will be removed from your list the next day when it's sent to you. This process only sends a list to people who have items on that list. Here's a full write-up on how it works, pictures included. The two workflows needed are attached as well.

How to use the workflow:
Submit form

The user specified under 'Owner' will be sent a task every day and completed items can be marked as 'true'

Tables needed:

  • Archive Task List - Master archive list, where all tasks marked completed live
  • Blank List Table - Empty table with column headers to overwrite instance table
  • Instance Archive Task List - All tasks marked completed that day live, emptied daily
  • Task List - Master task list, where all tasks not completed live

Table configuration:

  • Task (short text), Description (long text), Due (date), Requested by (short text), Owner (short text), Completed? (t/f)

Currently, the process starts out with the above webform. After submission, the details are added into a data table via the first workflow. The 2nd workflow for tasking and cleanup is on a scheduled daily trigger.

  • A unique data table is created for each Account in the ‘Owner’ column of the task list data table
  • Shows you only your tasks

  • A batch process is initialized to go through each row of the table of tables output from the previous step (In ‘Table ID’ column)

  • That table is then referenced dynamically through field values
  • Sorted to show the tasks with the closest due date at the top

  • The tables are then assigned for users to view dynamically so only users with tasks on the lists are assigned something. The {{unique-value}} field comes from the batch instance of our unique value tables

  • Tables are assigned via form field by being referenced similarly to the sort step beforehand

  • Error-handling to close everyone’s task that has not been interact with/marked ‘Complete’ so the cleanup process can happen
  • Set on a delay to close tasks at ~3am
  • *Assuming by then everyone’s work day is done

  • A batch is initialized the same way as before (using the same unique value table of tables) and the ID is fetched in the same way. The step is just named differently for best practices

  • At the end of the day, assuming all tasks have been closed, the task table is then filtered to only show items that have been marked as Completed by marking the ‘Completed?’ column as ‘True’
  • This was originally a checkbox and the same logic applied for the filter, however there is no way to add a column of field type ‘Checkbox’ using an action (more on why I’d be doing this later)

  • The items marked as ‘Completed’ in the assignment are then copied to a master archive table which keeps a record of all completed tasks (created before the workflow)

  • This action is repeated, with the same table being copied to an ‘Instance Archive’ table which is rewritten every run and holds the records marked as ‘Completed’ today only, whereas the archive table in the previous step is the master table (holds all marked completed). We will be comparing tables later, so for best practices this is used so we don’t end up comparing values that we already have in previous days (reducing processing power, if archive list gets to 1000s of records it might be slow)

  • Next, the ‘Instance Archive’ and ‘Master Task List’ are compared. The output used will be values unique only to table 1. This step removes all records from table 1 that the two tables have in common (removes steps marked as ‘Completed’ in task instance table from main table)

  • The ‘Master Task List’ table is then overwritten by the table 1 only table from the previous step, effectively removing all items marked as ‘Completed’ by any user that day from the master list

  • The ‘Instance Archive’ table is then overwritten by a blank table that is initiated as an Instance Field (Done in this way bc the step ‘Add filtered items to instance archive table’ in the 2nd batch has overwrite set to ‘false’ so it doesn’t overwrite the instance table with each record in the batch, it just adds to it instead so it has to start empty every time)

  • When comparing our tables the ‘Completed?’ column was omitted because the point of that action was to remove the records we know have been completed (because they were marked so from the task instance table) from the master table. The ‘Completed?’ column would be different b/w the completed tasks on these two tables because changing the value of our instance table does not update the master table. As a result of this, the outputted table and the one that we have been overwriting our master table with does not have this column, so it’s added at the end

Some other ideas for how to use this build are assigning other people tasks, keeping track of items for project management, and having an archive list to report on. Hopefully this workflow, or the explanation for how it works, comes in handy!