2015-02-21 4 views
0

просто пытается найти ванильный аппликационный способ установки переменной на все жирные слова документа. Я искал способы использования Applescript в Word, Pages & TextEdit и TextEdit кажутся единственными (может быть, и не так).В Applescript, находя только жирные слова в TextEdit, приложение вызывает зависание

Хорошей новостью является то, что работает следующий скрипт, но плохая новость заключается в том, что документ содержит более 2 страниц, скажем, ~ 50 выделенных жирным шрифтом слов, TextEdit зависает.

Любые другие способы получить выделенные жирным шрифтом слова с помощью Applescript?

tell application "TextEdit" 
    return words of text of document 1 where font contains "Bold" 
end tell 

Благодаря

ответ

0

Может быть, TextEdit в настоящее время неоправданно медленно. Я просто использовал следующий код для документа с 3600 словами, с некоторыми смелыми смелыми словами, перемежающимися повсюду. Это заняло слишком много времени. Я бы рассмотрел использование различных приложений для сценариев, таких как Tex-Edit Plus (все еще сильно, все еще замечательно). Причина, по которой я использовал «Черный» и «Жирный шрифт», заключается в том, что некоторые шрифты используют «Черный» вариант вместо «Жирный», когда вы делаете текст Bold (по крайней мере, в TextEdit). Чтобы быть понятным, следующий код работает, но это очень медленно. Может быть, ваш код, если вы так долго ждали, тоже работает. :-(НО продолжайте читать :-)

tell application "TextEdit" 
    tell document 1 
     set thisManyRuns to count of attribute run of text of it 
     repeat with r from 1 to thisManyRuns 
      if font of attribute run r of text of it contains "Black" then 
       --do stuff 
       set color of attribute run r of text of it to {35555, 0, 0} 
      end if 
      if font of attribute run r of text of it contains "Bold" then 
       --do stuff 
       set color of attribute run r of text of it to {35555, 0, 0} 
      end if 
     end repeat 
    end tell 
end tell 

Я просто побежал этот текст в Tex-Edit Plus и завершается приблизительно две секунды:

tell application "Tex-Edit Plus" 
    tell document 1 
     set thisManyRuns to count of style run of text of it 
     repeat with r from 1 to thisManyRuns 
      set thisStyle to style of style run r of text of it 
      if on styles of thisStyle contains bold then 
       --do stuff 
       set color of style run r of text of it to {0, 35555, 0} 
      end if 
     end repeat 
    end tell 
end tell 

... так что вы можете переключаться к тому, что. Просто предостережение, что я имел, чтобы поместить style в переменную thisStyle перед запросом на свойство on styles - это не сработает, если я попытаюсь сделать это в одной строке. Я работал с файлом rtf.

+0

(на самом деле, менее того, потребовалось 1,4 секунды с документом из 3600 слов) – CRGreen

+0

Awesome - это отлично работает. Определенно Tex-Edit Plus выглядит как способ. – thizzle