Applescript - копирование от определенного слова до конца документа TextEdit / другого слова

Я хотел бы знать, есть ли более быстрый способ скопировать диапазон текста из документа TextEdit без необходимости использовать так много системных событий для поиска, cmd + shift + down и скопируйте диапазон текста (для случаев от word -> конец документа).

Заранее спасибо.


person klutznic    schedule 29.04.2016    source источник


Ответы (2)


Этот ответ может быть слишком упрощенным для того, что вы ищете, но он должен, по крайней мере, направить вас в правильном направлении.

set yourText to "This is some test text that you might want to work with."
set i to offset of "test" in yourText
set finalText to characters i thru -1 of yourText as string

Кстати, я вижу, как многие люди делают что-то в таких приложениях, как TextEdit, когда им это действительно не нужно. Другими словами, если вы просто пытаетесь получить контент, нет причин открывать файл в TextEdit (или аналогичном) и создавать скрипт, вы можете просто прочитать текстовый файл в переменной, а затем работать со своим контентом.

Например, ваш сценарий может выглядеть примерно так ...

on run
    set yourText to read file "Macintosh SSD:Users:myuser:Desktop:myTextFile.txt"
    set i to offset of "test" in yourText
    set finalText to characters i thru -1 of yourText as string
end run
person ThrowBackDewd    schedule 29.04.2016
comment
В самом AppleScript вы должны использовать text i thru j of someString для получения подстроки. Увы, отправить тот же запрос в TextEdit не удастся, потому что его поддержка Text Suite бессмысленна; сторонние приложения, такие как TextWrangler и Tex-Edit Plus, являются гораздо лучшим выбором, если они доступны. Получение characters i thru j of ... из TextEdit имеет ужасно низкую производительность, потому что вы просите его вернуть список односимвольных строк. Наконец, приведение списка к одной строке также даст непредсказуемые результаты, если только вы не позаботитесь всегда сначала устанавливать разделители текстовых элементов AppleScript на "". - person foo; 30.04.2016

Возможно нет; Поддержка текстового пакета Cocoa Scripting ужасна и не поддерживает спецификаторы текстового диапазона (например, text (word N) thru end of document ...), текстовые стили, перемещение / дублирование / удаление разделов текста (по крайней мере, не облажавшись) или что-либо еще, что могло бы сделать это разумно полезный.

Вы не говорите, чего на самом деле пытаетесь достичь, но я предполагаю, что это связано с файлами с расширенным текстом (например, .rtf), иначе вы бы просто использовали команду read StandardAdditions для чтения простого текста непосредственно в AS и манипулирования им там, поэтому вы можете изучить одну из следующих альтернатив:

  1. Службы OS X, которые вы можете написать в Automator и привязать к сочетаниям клавиш в Системных настройках, что позволяет читать и обрабатывать выбранный текст.

  2. сторонний текстовый редактор с поддержкой сценариев, который реализует собственный Text Suite, который не отстой

  3. _3 _ + _ 4_, который вы можете использовать через ObjC / Swift / AppleScript-ObjC / что угодно, чтобы читать файлы .rtf и напрямую работать с их содержимым.

person foo    schedule 29.04.2016
comment
Я фактически передаю файлы из форматов отчетов SAP, которые загружаются как файлы txt, в файлы Excel, некоторые из которых очень длинные, поэтому я хочу попробовать копировать только с определенного момента. - person klutznic; 03.05.2016
comment
Это звучит особенно противно. Я рекомендую вам сразу вернуться и начать с того, чтобы спросить у окружающих о помощи с экспортом отчетов SAP в лучший формат? Или, если вы не контролируете, как экспортируются данные, запрашивать указатели на существующие скрипты / библиотеки / приложения, которые вы могли бы использовать для пост-обработки SAP Wharrgarble в нормальном формате? Я серьезно сомневаюсь, что вы первый (или последний) человек, который когда-либо сталкивался с такой паршивой хренью, и развертывание собственного решения должно быть последним вариантом в вашем списке, а AppleScript - наихудшим вариантом для этого. - person foo; 03.05.2016