OmniFocus 3 - Script to remove "Today" tag and mark complete

I’d love to have a script for OmniFocus 3 that removes the “Today” tag and marks a task complete (or vice versa). Is this possible?

I have many repeating tasks (often deferred upon completion) that I might tag as “Today”, but don’t want to be tagged as such in their next instance.

I have little knowledge of OF scripting - in particular for OF3 - though I have cobbled some things together for OF2. Any guidance is appreciated!

1 Like

this seems to work

tell application "OmniFocus"
	activate
	delay 0.2
	tell front window
		set selectedTrees to selected trees of content
		set selectedTasks to every item of selectedTrees
	end tell
	
	tell front document
		repeat with i from 1 to count of selectedTasks
			set theTask to the value of item i of selectedTasks
			set currTags to name of tags of theTask
			
			repeat with x from 1 to count of currTags
				set currTag to item x of currTags
				if currTag = "today" then
					set currTag to (first flattened tag whose name is item x of currTags)
					remove currTag from tags of theTask
				end if
			end repeat
			
			mark complete theTask
			
		end repeat
	end tell
end tell
3 Likes

It does! You rock. Thanks so much!

wow this is amazing. You wont happen to be able to modify the code to do the same task in a specific project name?

I’m just getting started. Can you recommend a tutorial on where/how to actually enter this script?