Is there a method to getting the project name from a Quick Entry dialog box? I would like to setup a workflow where email would be automatically filed to a Project folder that is selected in the Quick Entry dialog box. I haven’t seen any way to capture this within a script.
Could you post a screenshot and give an example? If this is possible, maybe I can help.
Here is an example: I use the AppleScript ClipOTron in email to capture follow ups. My workflow would be to:
- Invoke the AppleScript ClipOTron
- Pick the Project, Context, and Dates
- On clicking Save in the Quick Entry, grab the Project name and offer to file the email under a folder of the same name as the project.
Assumes only one email is being captured in the Quick Entry. Here is a view of the Quick Entry Screen
Ok, I think I understand. One question:
A folder in the Finder, Mail or OmniFocus?
I want to file away the original email. The Omnifocus task is going into the right place.
It was a little complex, but I think it would help.
Try this code.
--unlocked2412
--First draft
property nameMailAccount : "" -- ENTER YOU MAIL ACCOUNT NAME
on run
tell application "OmniFocus"
tell quick entry
set refTask to value of (item 1 of selected trees)
set nameProject to name of (get assigned container of refTask)
set refNote to a reference to (note of refTask)
set mailLink to item 1 of (get value of attribute "link" of style of characters -1 thru -17 of first paragraph of refNote)
save
end tell
end tell
set theButton to button returned of (display dialog "Do you want to file the email in: " & nameProject & " folder?")
if theButton = "OK" then
set refMail to GetMailFromLink(mailLink)
MoveMail(refMail, nameProject)
end if
end run
on GetMailFromLink(mailLink)
set mailID to text ((offset of "%3c" in mailLink) + 3) thru ((offset of "%3e" in mailLink) - 1) of mailLink
tell application "Mail"
set lstMails to message 1 of every mailbox of imap account nameMailAccount whose message id = mailID
set i to 1
repeat until (item i of lstMails ≠ missing value)
set i to i + 1
end repeat
return item i of lstMails
end tell
end GetMailFromLink
on MoveMail(refMail, strFolder)
tell application "Mail"
set theMailbox to mailbox 1 of imap account nameMailAccount whose name = strFolder
move refMail to theMailbox
end tell
end MoveMail
unlocked2412: Thx.
So I was able to invoke this script manually in Script Editor after first using the AppleScript version of the ClipOTron script (which you helped me earlier with) I made a small adjustment to how it was searching for the email to be filed. I think I was getting timeouts with the original. I changed this to :
set lstMails to message 1 of message viewer 1 whose message id = mailID
This constrained this to the current message viewer window. Most likely this isn’t going to change as I’m kicking off the script from here.
So now that I got this working, I’m trying to tie this together. Is there a way to kick off this script or set of actions after you hit Save in the Quick Entry. So series of actions go like this:
- Select email and run the ClipOTron AppleScript
- Fill in the Project/Context/Dates in Quick Entry.
- Hit Save button in Quick Entry which then runs this script above.
I don’t think there is a way to throw this logic in but thought I’d ask.
One other item: I’m using an Exchange email account. I think there is a bug in the creation of Mailboxes as sub-folders (i.e. Inbox/Reference Material/Target) I found a couple of threads on this. I was trying to search to see if a folder existed and if not create it. In the example above, AppleScript is creating a folder located here: Inbox/Reference Material/Inbox/Reference Material/Target. (Folder name then turns out to be “Inbox/Reference Material/Target” inside Inbox/Reference Material) It is creating the unnecessary string. Tried this a number of different ways.
You’re welcome, MikeA
I thought about this because, if you don’t have mail running, it would throw an error. But, if you have a lot of mails, searching would be slow.
This script saves the Quick Entry dialog. You can’t program the Save button to trigger a Script. Is that what you mean?
Could you post the script that creates a folder if it doesn’t exist? I could take a look.
To make the folder example simple, this is simply a create sub-folder script. I have the check part working correctly. Basically, this should create a sub-folder Target in the folder Inbox/Reference Material. I included the Event dialog box for when it is run. For some reason it doubles up on the Inbox/Reference Material. Just change below w/Name of your email account that you want to test.
tell application "Mail"
tell account "Name of Email Account"
make new mailbox with properties {name:"Inbox/Reference Material/Target"}
end tell
end tell
I can’t replicate your behaviour because I don’t have an Exchange account. In my case, your script creates the desired hierarchy. But you can try this workaround; the problem is that the new folder takes awhile to appear.
tell application "Mail"
tell account "Account Name"
set name of (make new mailbox with properties {name:"Target"}) to "Inbox/Reference Material/Target"
end tell
end tell
Tell me if you need anything else.
Thx. There definitely seems to be something unusual about how an Exchange account works w/this. This works fine on a different computer w/Gmail. I’ve seen this issue pop up on the Apple forums but didn’t see any resolutions. I’ll keep playing w/this. Thanks again.
I couldn’t test it, but it seems to be the case.
You’re welcome, MikeA.