Guest
2010-04-21, 11:03 PM
Just had to make a rough of count some words in a hurry this morning.
For what its worth, I am now using a simpler applescript to do this, which may run a little faster.
It gives 3 word counts:
- Whole document
- Visible rows
- Selected rows
Code:
-- Ver 0.6
-- If value of following property is edited to true,
-- then total word count will be placed in clipboard
property pToClipboard : true
property pDelim : space
property pEOL : return & return
tell application id "com.omnigroup.OmniOutlinerPro3"
try
activate
set oDoc to front document
on error
return
end try
-- Ensure that text item delimiter is SPACE
-- and prepare to restore any other value at the end of the script
set strDelim to my text item delimiters
set my text item delimiters to pDelim
tell front document
set lstAllTopics to topic of rows
set lstVisblTopics to topic of rows where visible is true
set lstSeldTopics to topic of selected rows
-- Count total, visible, and selected rows
set intAllRows to count of lstAllTopics
set intVisblRows to count of lstVisblTopics
set intSeldRows to count of lstSeldTopics
-- Count words in all, visible, and selected rows
set intAllWords to count of words of (lstAllTopics as text)
if intVisblRows is not equal to intAllRows then
set blnAllVisible to false
set intVisblWords to count of words of (lstVisblTopics as text)
else
set blnAllVisible to true
set intVisblWords to intAllWords
end if
if intSeldRows is not equal to intAllRows then
set blnAllSeld to false
set intSeldRowWords to count of words of (lstSeldTopics as text)
else
set blnAllSeld to true
set intSeldRowWords to intAllWords
end if
end tell
end tell
-- Prepare report to user
set strMsg to (intAllWords as text) & pl(intAllWords, "word") & " in total (" & (intAllRows as text) & pl(intAllRows, "row") & ")" & pEOL
if not blnAllVisible then set strMsg to strMsg & ¬
(intVisblWords as text) & pl(intVisblWords, "word") & " in " & (intVisblRows as text) & " visible" & pl(intVisblRows, "row") & ")" & pEOL
if not blnAllSeld then
set strMsg to strMsg & ¬
(intSeldRowWords as text) & pl(intSeldRowWords, "word") & " in " & (intSeldRows as text) & " selected" & pl(intSeldRows, "row")
end if
try
display dialog strMsg with icon 1 with title ("WORD COUNT")
end try
set my text item delimiters to strDelim
if pToClipboard then ¬
tell application id "com.apple.finder" to set the clipboard to (intAllWords as text)
-- Pluralize word unless lngQuant is 1
on pl(lngQuant, strWord)
if lngQuant is 1 then return " " & strWord
" " & strWord & "s"
end pl
--
Last edited by RobTrew; 2010-06-25 at 05:32 AM..
Reason: ver 0.6 Minor edits and improvements in reporting