Update – turns out my pomodoro code doesn’t work quite write as published earlier. I think what was happening, was the pomodoro app was compiling the applescript right before it ran it each time, which would continually reset the property value. So, I’ve updated the code below. It now relies on a file (as written below, it’s stored on the desktop, but could be anywhere) to store the comment value. You need to use applescript to create a simple script file called properties.scpt (no, you can’t just do this in a text editor) that contains the following line:
property theRunCount : 0
Set the value to whatever you want to start counting at, minus 1. So if you want the first email to say 1, then set it to 0. Make sure you compile and save the above file, or it’ll give you errors. Yes, the code is much more complicated now. And, if the pomodoro app worked as expected, the earlier version should work perfectly with the property value stored within.
This is sort of an update to my post on Monday about using pomodoros to stay focused.
I mentioned in that post that I was going to have the pomodoro update my Beeminder graph for me, by sending off an email when a pomodoro completes. I wrote it using AppleScript (which was my first attempt) and it works well. It was hobbled together using some examples I found online for sending email.
--Variables set recipientName to "Beeminder Bot" set recipientAddress to "bot@beeminder.com" set theSubject to "USER/SLUG" set thedate to day of (current date) as string set thePropertyScriptPath to (path to desktop folder as string) & "properties.scpt" set thePropertyScript to load script file thePropertyScriptPath set thePreviousRunCount to (theRunCount of thePropertyScript) set theNewRunCount to thePreviousRunCount + 1 set theRunCount of thePropertyScript to theNewRunCount store script thePropertyScript in file thePropertyScriptPath with replacing set total to theNewRunCount as string set theContent to thedate & " 1 " & "\"" & total & "\"" --set x to x + 1 --Mail Tell Block tell application "Mail" --Create the message set theMessage to make new outgoing message with properties {subject:theSubject, content:theContent, visible:true} tell theMessage make new to recipient with properties {name:recipientName, address:recipientAddress} --Send the message send end tell end tell
The only thing this script doesn’t do, is send the name of the pomodoro that finished. I wish I could, because it would make keeping track of them easier (now I end up with a string of identical inputs each day). But, the information doesn’t appear to have been made available to AppleScript. Instead, I recently updated the code so it’s submitting the current pomodoro number. I’d like to do it by day, so each day it’d start from one again, but not sure it’s worth it. The above code is starting with a property value of 14, because I figured this out after completing 13 of them. Unless the code gets recompiled, it will continually increase that property value by one each time it sends off an email. If it gets recompiled and x changes, then it will start from whatever x changes too.
And, as of yesterday evening, after only two days, I’ve already completed 14 pomodoros. Which makes me two ahead of schedule (which is good since I’ve got a bunch of meetings scheduled today). If I manage to stay on track for the semester, Beeminder informs me that I’ll need to complete about 488 in total! Yikes! It’ll be interesting to see how long I stay on target…
Pingback: Beeminder Error in Your Favor, and Other Crashes of Ineptitude | Beeminder Blog
Thanks for sharing. I just adapted your script to send the pomodoro name from the Pomodoro Desktop 0.31 by Landini (http://pomodoro.ugolandini.com) End script, which seems to work fine:
set recipientName to “Beeminder Bot”
set recipientAddress to “bot@beeminder.com”
set theSubject to “accountname/pomodoro”
set thedate to day of (current date) as string
set theContent to thedate & ” 1 ” & “\”” & “$pomodoroName” & “\””
–Mail Tell Block
tell application “Mail”
–Create the message
set theMessage to make new outgoing message with properties {subject:theSubject, content:theContent, visible:true}
tell theMessage
make new to recipient with properties {name:recipientName, address:recipientAddress}
–Send the message
send
end tell
end tell
Pingback: Beeminder API | Beeminder Blog
Pingback: Another Press Roundup Part Deux, Revisted: Return of the Beeminder Buzz Returns Again! | Beeminder Blog
Hi!
I’d love to try this, but I can’t find any downloadable app in http://pomodoro.ugolandini.com/.
Where can I get it?
Oh no, it’s disappeared. 😦 Looks like the only way to get it is through the source code on github (https://github.com/ugol/pomodoro) and building it yourself.
Has the program’s author disappeared/stopped responding to e-mail? Would it be inappropriate to share existing copies, such as my own?
By the way, I added to the above script so that it plays ambient music for pomodoros and pop music for breaks.