Jump to content

sterling

Member
  • Posts

    6
  • Joined

  • Last visited

Posts posted by sterling

  1. I've seen several workflows that do things like autocomplete tags, or folders, or something else. I'm wondering if there is a way to autocomplete mailboxes in mail.app? My use case would be a keyword to move a mail message, allowing the user to start typing the desired mailbox with the workflow providing matches.

     

    Any ideas?

  2. on alfred_script(q)
    	tell application "Mail"
    		set lst to (get selection)
    		set _msgRecent to my GetNewerMessage(lst)
    		repeat with _msg in _msgRecent
    			set _msgSubject to _msg's subject
    			set _msgBody to _msg's content
    			set _msgSender to _msg's sender
    			set _msgURL to "message://%3c" & _msg's message id & "%3e" -- Fixed: OmniFocus doesn't accept "<" and ">" as part of a URL
    			tell application "OmniFocus"
    				tell quick entry
    					set _task to make new inbox task with properties {name:_msgSubject, note:_msgBody}
    					tell note of _task
    						insert "From: " & _msgSender & "  Original Message" & (ASCII character 10) & (ASCII character 10) at before paragraphs
    						set value of attribute "link" of style of characters -1 thru -17 of first paragraph to _msgURL
    					end tell
    				end tell
    			end tell
    		end repeat
    	end tell
    	
    	tell application "OmniFocus"
    		tell quick entry to open
    	end tell
    	tell application "System Events"
    		tell process "OmniFocus"
    			key code 125
    		end tell
    	end tell
    	
    end alfred_script
    
    on GetNewerMessage(lst)
    	if lst = {} then return
    	if (count lst) = 1 then return (item 1 of lst)
    	set msg to (item 1 of lst)
    	repeat with i from 1 to (count lst) - 1
    		using terms from application "Mail"
    			if CompareDates(date received of msg, date received of (item (i + 1) of lst)) then
    				set msg to (item i of lst)
    			else
    				set msg to (item (i + 1) of lst)
    			end if
    		end using terms from
    	end repeat
    	return msg
    end GetNewerMessage
    
    on CompareDates(A, B)
    	if A > B then
    		return true
    	else
    		return false
    	end if
    end CompareDates

    This script is what I am using right now.

  3. I have a workflow that goes through several steps, with a couple filters in there too.

     

    Right now I invoke it with a keyword and an argument. I'd like to pass multiple arguments, running the workflow for each argument passed. I understand that the arguments are passed as a string, so it if were all one script being run I could just loop in the code. Is there a way to take those arguments and pass them along the rest of the workflow one at a time?

  4. I'm using the AppleScript below as part of a workflow to get mail messages to OmniFocus. This recently broke. I'm just wondering if anyone has a clue what the issue may be? Not sure if this is due to an Apple update, or an OmniFocus one.

     

    Error message

    [2017-01-11 10:29:46][input.keyword] Processing output of 'action.applescript' with arg ''
    [2017-01-11 10:29:46][ERROR: action.applescript] {
        NSAppleScriptErrorAppName = OmniFocus;
        NSAppleScriptErrorBriefMessage = "Unable to convert the string \U201cmessage://<03D12B465157E52C189B6D836173733D254AF6F9@AMX>\U201d to a url. Make sure that the string is a valid URL, including quoting characters that aren't valid in URLs.";
        NSAppleScriptErrorMessage = "OmniFocus got an error: Unable to convert the string \U201cmessage://<03D12B465157E52C189B6D836173733D254AF6F9@AMX>\U201d to a url. Make sure that the string is a valid URL, including quoting characters that aren't valid in URLs.";
        NSAppleScriptErrorNumber = 1;
        NSAppleScriptErrorRange = "NSRange: {1161, 94}";
    }
    [2017-01-11 10:29:46][action.applescript] Processing output of 'output.notification' with arg ''

    applescript

    on alfred_script(q)
    (*
    OmniFocus Selected Mail Messages.applescript
    	Copyright (c) 2015 Jonathan 'Wolf' Rentzsch: http://rentzsch.com
    	Some rights reserved: http://opensource.org/licenses/mit
      
    Pure AppleScript reimplementation of OmniGroup's Clip-o-Tron for OmniFocus.
    
    Hopefully this implementation will be more resilient against OS X, Mail, and OmniFocus updates.
    Successfully tested against OS X 10.10.1, OmniFocus 1.10.6, and OmniFocus 2.0.4.
    
    References:
    <http://daringfireball.net/2007/12/message_urls_leopard_mail>
    <http://forums.omnigroup.com/showthread.php?t=30754>
    <http://shawnblanc.net/box/smarter_clip-o-tron.txt>
     *)
    
    tell application "Mail"
    	set _sel to the selection
    	repeat with _msg in _sel
    		set _msgSubject to _msg's subject
    		set _msgBody to _msg's content
    		set _msgSender to _msg's sender
    		set _msgURL to "message://<" & _msg's message id & ">"
    		tell application "OmniFocus"
    			tell quick entry
    				set _task to make new inbox task with properties {name:_msgSubject, note:_msgBody}
    				tell note of _task
    					insert "From: " & _msgSender & "  Original Message" & (ASCII character 10) & (ASCII character 10) at before paragraphs
    					set value of attribute "link" of style of characters -1 thru -17 of first paragraph to _msgURL
    				end tell
    			end tell
    		end tell
    	end repeat
    end tell
    
    tell application "OmniFocus"
    	tell quick entry to open
    end tell
    tell application "System Events" to keystroke tab
    end alfred_script

     

×
×
  • Create New...