Last active
December 29, 2018 13:26
-
-
Save doug4j/a6af365ebc2d212cfca039df5f67387d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- Modified from: http://bylr.net/3/2011/07/omnifocus-script-get-total-time-of-selected-items/ | |
on main() | |
tell application "OmniFocus" | |
tell content of first document window of front document | |
--Get selection | |
set totalMinutes to 0 | |
set validSelectedItemsList to value of (selected trees where class of its value is not folder and class of its value is not tag) | |
set totalItems to count of validSelectedItemsList | |
if totalItems is 0 then | |
set alertName to "Error" | |
set alertTitle to "Script failure" | |
set alertText to "No valid task(s) selected" | |
my notify(alertName, alertTitle, alertText) | |
return | |
end if | |
--Perform action | |
repeat with thisItem in validSelectedItemsList | |
--display dialog "isContext " & (thisItem is context) | |
--display dialog "name " & (thisItem to name of thisItem) | |
set thisTaskSubTaskNum to number of tasks of thisItem | |
set thisEstimate to estimated minutes of thisItem | |
set thisTaskName to name of thisItem | |
set thisTaskBlocked to blocked of thisItem | |
set thisTaskCompleted to completed of thisItem | |
--TURN on for debugging only | |
--display dialog "task: '" & thisTaskName & " estimate: " & thisEstimate & " mins, " & " isBlocked: " & thisTaskBlocked & ", completed: " & thisTaskCompleted & ", subTaskCount: " & thisTaskSubTaskNum | |
if thisEstimate is not missing value and thisTaskBlocked is false and thisTaskSubTaskNum is 0 and thisTaskCompleted is false then set totalMinutes to totalMinutes + thisEstimate | |
end repeat | |
set modMinutes to (totalMinutes mod 60) | |
set totalHours to (totalMinutes div 60) | |
end tell | |
end tell | |
--Show summary notification | |
if totalItems is 1 then | |
set itemSuffix to "" | |
else | |
set itemSuffix to "s" | |
end if | |
set alertName to "General" | |
set alertTitle to "Script complete" | |
set alertText to totalHours & "h " & modMinutes & "m total for " & totalItems & " item" & itemSuffix as string | |
my notify(alertName, alertTitle, alertText) | |
end main | |
(* Begin notification code *) | |
on notify(alertName, alertTitle, alertText) | |
--Call this to show a normal notification | |
tell application "OmniFocus" to display dialog alertText with icon 1 buttons {"OK"} default button "OK" | |
end notify | |
(* end notification code *) | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment