The Omni Group Forums

The Omni Group Forums (http://forums.omnigroup.com/index.php)
-   OmniFocus Extras (http://forums.omnigroup.com/forumdisplay.php?f=44)
-   -   Text line 1 → task, rest → note (http://forums.omnigroup.com/showthread.php?t=30709)

RobTrew 2013-08-22 04:15 AM

Text line 1 → task, rest → note
 
Just been asked about converting a piece of text to an action (first line as task, rest as note).

If I have understood the question properly, then the bare bones might look something like this:

[CODE]property pstrSample : "This is the title,
and here is the note,
possibly continuing over various lines
etc"


on run
MakeTask(pstrSample)
end run


on MakeTask(strText)
set lstLines to paragraphs of strText
if lstLines ≠ {} then
if (length of lstLines) > 1 then
set {dlm, my text item delimiters} to {my text item delimiters, linefeed}
set strNote to (items 2 thru -1 of lstLines) as text
set my text item delimiters to dlm
else
set strNote to ""
end if

tell application id "OFOC"
tell default document to make new inbox task with properties {name:item 1 of lstLines, note:strNote}
end tell
end if
end MakeTask[/CODE]

RobTrew 2013-08-22 04:55 AM

Tho the shell is arguably cleaner and easier to follow than Applescript string handling:

[CODE]property pstrSample : "This is the SECOND title,
and here is the SECOND note,
possibly continuing over various lines
etc"

on run
MakeTask2(pstrSample)
end run

on MakeTask2(strText)
set str to quoted form of strText
set strTask to do shell script "echo " & str & " | head -n 1"
set strNote to do shell script "echo " & str & " | tail -n +2"

tell application id "OFOC"
tell default document to make new inbox task with properties {name:strTask, note:strNote}
end tell
end MakeTask2[/CODE]

RobTrew 2013-08-22 05:52 AM

It turns out that the use case is clipboard → action + note,

So something like:

[CODE]on run
try
set strText to (the clipboard) as text
on error
return
end try

MakeTask(strText)
end run


on MakeTask(strText)
set lstLines to paragraphs of strText
if lstLines ≠ {} then
if (length of lstLines) > 1 then
set {dlm, my text item delimiters} to {my text item delimiters, linefeed}
set strNote to (items 2 thru -1 of lstLines) as text
set my text item delimiters to dlm
else
set strNote to ""
end if

tell application id "OFOC"
tell default document to make new inbox task with properties {name:item 1 of lstLines, note:strNote}
end tell
end if
end MakeTask[/CODE]


All times are GMT -8. The time now is 01:16 PM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.