Adding Items to the Grocery List

So last week I mentioned my shopping list spreadsheet.

However, there’s one flaw. My Mac isn’t in the kitchen, and adding things to the spreadsheet via Numbers on my phone is… awkward at best.

But I can send a text with my phone. And I have Messages running on my Mac. And I read this. And it all clicked.

So now I text “gr milk” and milk gets added to my grocery list, it gets sorted by aisle and saved to iCloud. And it only works if I do it from my phone. Don’t need anyone adding things to my list.

While I was at it, I added commands to quit Chrome and to fire up iTunes.

There’s one more thing I want to do to this – I want to make a small script that calls this one, instead of having Messages call it directly. the reason is that when you edit the script, you need to re-add it to Messages and honestly, it was becoming a bit of a pain during debugging.

Here’s my script:

on nextEmptyCellInColumn(sheetName, tableName, colNumber, compValue)
— Copied from
— Finds next empty row in the spreadsheet
local sheetName, tableName, colNumber, res, i, len
tell application “Numbers”
tell document “Groceries”
tell sheet sheetName
tell table tableName
set len to row count
set res to 0
repeat with i from 1 to len
if (value of cell colNumber of row i) = compValue then
set res to i
exit repeat
end if
end repeat
if res = 0 then
error “No empty row in table ” & tableName & “!” number 111
end if
end tell
end tell
end tell
end tell
return res
on error eMsg number eNum
error “Can’t nextEmptyCellInColumn: ” & eMsg number eNum
end try
end nextEmptyCellInColumn

using terms from application “Messages”
on message receivedtheMessagefromtheBuddyfortheChat
set theName to full name of theBuddy
if theName contains “Neil Kelly” then
if theMessage starts with “COMMANDS:” then
— This is here to prevent the reply for commands from triggering all the commands
set a to 1
if theMessage contains “itunes” then
tell application “iTunes”
end tell
end if
if theMessage contains “chrome” then
tell application “Google Chrome”
end tell
end if

if theMessage starts with “gr ” then
set numCell to nextEmptyCellInColumn(1, 1, 1, 0)
set groceryItem to text 4 thru (length of theMessage) of theMessage
tell application “Numbers”
tell document “Groceries”
tell sheet 1
tell table 1
set value of cell 1 of row numCell to groceryItem
sortbycolumn 2 directionascending

end tell
end tell
end tell

end tell
end if
if theMessage contains “commands” or theMessage contains “help” then
— reply with list of commands
— this doesn’t autogenerate
— so if you add a command you should document it here too
— backslash-n adds a newline
gr to add to grocery list
chrome to quit chrome
itunes to start itunes” to theChat

end if
end if

end if

end message received

end using terms from

Leave a Reply

Your email address will not be published. Required fields are marked *