COMMENT
🤖 Welcome to ChoreBot!
Add or edit chores/rooms in the first dictionary to automatically create more options.
——————
DICTIONARY INSTRUCTIONS:
The KEY is how the chore/room appears in the list when you run the Shortcut and how it appears when set as a reminder in Reminders.
The VALUE for each entry contains a small dictionary with 4 items:
- Event: Title of the event as it appears when logged to your calendar
- Yellow: Number of days at which the heatmap turns yellow for this chore
- Orange: Number of days at which the heatmap turns orange for this chore
- Red: Number of days at which the heatmap turns red for this item
You can edit the existing items or add new ones. Just be sure to follow the formatting exactly. There is technically no limit to how many chores can be added.
DICTIONARY

Dictionary
COMMENT
This number determines how many weeks back the calendar search should go:
NUMBER
8

Number
COMMENT
In order to improve performance ChoreBot saves a small text file (ChoreBot.txt) with the name of the calendar used for logging chores to the Shortcuts folder in iCloud Drive.
This also allows ChoreBot to check and see if this is the first time being run.
If you change the name of the calendar used for logging chores follow these steps:
- Delete ChoreBot.txt in the Shortcuts folder in iCloud Drive
- From the “Shortcut Details” tab select “Setup” and choose “Customize Shortcut…” to change your answers to the original setup questions
- Run the Shortcut and it will automatically create a new ChoreBot.txt file with the new calendar name upon logging the first chore
DOCUMENTS

File
SCRIPTING
If
File
does not have any value
SCRIPTING
Show alert
🤖 Welcome to ChoreBot!
Title
🤖 Welcome to ChoreBot!
TEXT
True

Text
VARIABLES
Set variable
First Run?
to
Text
CALENDAR
Add
🤖 ChoreBot Activated
from
Today
to
Today

New Event
VARIABLES
Set variable
ChoreBot Calendar
to
New Event
DOCUMENTS
Append
ChoreBot Calendar

Appended File
SCRIPTING
Otherwise
DOCUMENTS
Get text from
File

Text
VARIABLES
Set variable
ChoreBot Calendar
to
Text
TEXT
False

Text
VARIABLES
Set variable
First Run?
to
Text
SCRIPTING
End If

If Result
COMMENT
This second dictionary is intentionally left empty. The Shortcut uses it to create the heatmap menu each time it is run.
DICTIONARY

Dictionary
VARIABLES
Set variable
Chore Menu
to
Menu Dictionary
COMMENT
Now the Shortcut generates the heatmap for the menu:
CALENDAR
Find
All Calendar Events
where
All the following are true [{'class': 'filter-property', 'value': 'Start Date'}, {'class': 'filter-operator', 'value': 'is in the last'}, {'class': 'filter-benchmark', 'value': 'Calendar Look Back (# of weeks)', 'glyph': '', 'UUID': '60C96817-5B66-4D77-ADDE-3383285D0296'}, {'class': 'filter-unit', 'value': 'weeks', 'glyph': '', 'UUID': ''}] [{'class': 'filter-property', 'value': 'Calendar'}, {'class': 'filter-operator', 'value': 'is'}, {'class': 'filter-benchmark', 'value': 'default'}]

Calendar Events
SCRIPTING
Count
Items
in
Chore Dictionary

Count
SCRIPTING
Get
Items in Range
1
to
Count
from
Chore Dictionary

Item from List
TEXT
Split
Item from List
by
New Lines

Split Text
SCRIPTING
Repeat with each item in
Split Text

Repeat Results
SCRIPTING
Get
Value
for
Repeat Item
.Event
in
Chore Dictionary

Dictionary Value
CALENDAR
Find
Calendar Events
where
All the following are true [{'class': 'filter-property', 'value': 'Start Date'}, {'class': 'filter-operator', 'value': 'is in the last'}, {'class': 'filter-benchmark', 'value': 'Calendar Look Back (# of weeks)', 'glyph': '', 'UUID': '60C96817-5B66-4D77-ADDE-3383285D0296'}, {'class': 'filter-unit', 'value': 'weeks', 'glyph': '', 'UUID': ''}] [{'class': 'filter-property', 'value': 'Title'}, {'class': 'filter-operator', 'value': 'is'}, {'class': 'filter-benchmark inline', 'value': [{'class': 'magic', 'value': 'Dictionary Value', 'glyph': '', 'UUID': '84162410-5729-453B-A7AB-FDCB2E107E19'}]}] Get 1 File



Calendar Events
SCRIPTING
Count
Items
in
Calendar Events

Count
SCRIPTING
If
Count
is
1
CALENDAR
Get time between
Calendar Events
and
Current Date
in
Days

Time Between Dates
SCRIPTING
If
Days Since Last Logged
is less than
1
TEXT
(today)

Text
SCRIPTING
Otherwise
SCRIPTING
If
Days Since Last Logged
is greater than
21
MATHS
Days Since Last Logged
÷
7
Options Under Construction

Calculation Result
MATHS
Round
Calculation Result
to
Tenths

Rounded Number
TEXT
(
Weeks Since Last Logged (Rounded)
weeks ago)

Text
SCRIPTING
Otherwise
TEXT
(
Days Since Last Logged
days ago)

Text
SCRIPTING
End If

If Result
SCRIPTING
End If

If Result
VARIABLES
Set variable
(Time Since)
to
If Result
SCRIPTING
Get
Value
for
Repeat Item
.Yellow
in
Chore Dictionary

Dictionary Value
SCRIPTING
Get
Value
for
Repeat Item
.Orange
in
Chore Dictionary

Dictionary Value
SCRIPTING
Get
Value
for
Repeat Item
.Red
in
Chore Dictionary

Dictionary Value
SCRIPTING
If
Calendar Events
is today
TEXT
✅

Text
SCRIPTING
End If

If Result
SCRIPTING
If
Days Since Last Logged
is between
1
and
Yellow Value
TEXT
🟢

Text
SCRIPTING
End If

If Result
SCRIPTING
If
Days Since Last Logged
is between
Yellow Value
and
Orange Value
TEXT
🟡

Text
SCRIPTING
End If

If Result
SCRIPTING
If
Days Since Last Logged
is between
Orange Value
and
Red Value
TEXT
🟠

Text
SCRIPTING
End If

If Result
SCRIPTING
If
Days Since Last Logged
is greater than or equal to
Red Value
TEXT
🚨

Text
SCRIPTING
End If

If Result
SCRIPTING
Otherwise
SCRIPTING
If
First Run?
is
True
TEXT
(never logged)

Text
SCRIPTING
Otherwise
TEXT
(over
Calendar Look Back (# of weeks)
weeks ago)

Text
SCRIPTING
End If

If Result
VARIABLES
Set variable
(Time Since)
to
No Log Found
TEXT
⚠️

Text
SCRIPTING
End If

If Result
TEXT
Repeat Item
(Time Since)
Emoji

Text
SCRIPTING
Set
Repeat Item
to
Text
in
Dictionary

Dictionary
VARIABLES
Set variable
Chore Menu
to
Updated Dictionary
SCRIPTING
End Repeat

Repeat Results
COMMENT
Rearrange the heatmap by priority:
SCRIPTING
Repeat with each item in
Chore Menu

Repeat Results
SCRIPTING
If
Repeat Item
contains
⚠️
VARIABLES
Add
Repeat Item
to
No Log Items
SCRIPTING
End If

If Result
SCRIPTING
If
If Result
contains
🚨
VARIABLES
Add
Repeat Item
to
Red Items
SCRIPTING
End If

If Result
SCRIPTING
If
Repeat Item
contains
🟠
VARIABLES
Add
Repeat Item
to
Orange Items
SCRIPTING
End If

If Result
SCRIPTING
If
Repeat Item
contains
🟡
VARIABLES
Add
Repeat Item
to
Yellow Items
SCRIPTING
End If

If Result
SCRIPTING
If
Repeat Item
contains
🟢
VARIABLES
Add
Repeat Item
to
Green Items
SCRIPTING
End If

If Result
SCRIPTING
If
Repeat Item
contains
✅
VARIABLES
Add
Repeat Item
to
Today Items
SCRIPTING
End If

If Result
SCRIPTING
End Repeat

Repeat Results
SCRIPTING
If
No Log Items
has any value
VARIABLES
Add
No Log Items
to
Prioritized Items
SCRIPTING
End If

If Result