2011-03-24 2 views
1

Я использую этот AppleScript для редактирования данных в буфере обмена. Но есть некоторые вещи, которые я не мог понять, как это сделать:Редактирование текста буфера обмена без потери стиля форматирования и непрерывного запуска сценария

  1. Этот сценарий удаляет весь формат стиль текста в буфер обмена. Есть ли способ сохранить все форматы?

  2. Я попытался запустить этот скрипт в качестве приложения (оставаясь открытым при сохранении), но он работает только один раз после нового старта и не редактирует новый скопированный текст. Как я могу заставить этот скрипт работать непрерывно?

Вот мой сценарий:

on idle 

    get the clipboard 
    replacement of "SqlConnection" by "OleDbConnection" for the result 
    replacement of "SqlDataAdapter" by "OleDbDataAdapter" for the result 
    set the clipboard to (replacement of "SqlCommand" by "OleDbCommand" for the result) 

end idle 

on replacement of oldDelim by newDelim for sourceString 
    set oldTIDs to text item delimiters of AppleScript 
    set text item delimiters of AppleScript to oldDelim 
    set strtoks to text items of sourceString 
    set text item delimiters of AppleScript to newDelim 
    set joinedString to strtoks as string 
    set text item delimiters of AppleScript to oldTIDs 
    joinedString 
end replacement 

ответ

2

Во-первых, AppleScript работает только с текстом, а не форматированный текст. Поэтому, как только вы приносите буфер обмена в applescript, вы потеряли все форматирование. Вы ничего не можете с этим поделать. Во-вторых, для того, чтобы обработчик «на холостом ходу» работал, вам нужно вернуть значение времени, которое является временем, когда обработчик снова запустится. Поэтому перед операцией «end idle» добавьте «return 10», что означает запуск скрипта каждые 10 секунд.

2

Самый простой способ сохранить форматирование - это, откровенно говоря, использовать текстовый редактор в виде текстового редактора, например Text Edit или Pages, в качестве промежуточного этапа и манипулировать им там. то есть открыть новый документ на страницах, вставить текст, найти и заменить, чтобы изменить текст, выбрать все с помощью графического интерфейса пользователя, а затем скопировать его обратно в буфер обмена.

Вы также можете использовать эту технику, чтобы настроить стильный шаблон, заполнить информацию о базе данных, а затем распечатать или поместить его в буфер обмена. Я использую это довольно много. Я просто хочу, чтобы ты мог сделать это с Числами. (Номер поиска и замены не имеет опции для клавиатуры)

Редактировать: Вот быстрый и грязный образец сценария, чтобы использовать Страницы в качестве промежуточного места для поиска и замены текста, который будет поддерживать форматирование.

tell application "Pages" 
    activate 
    make new document 
end tell 

tell application "System Events" 
    tell process "Pages" 
     -- paste clipboard 
     keystroke "v" using (command down) 
     -- go to top of document 
     key code 126 using (command down) 
     -- open find window 
     keystroke "f" using (command down) 
     -- set word to replace 
     keystroke "original" 
     -- tab to replace field 
     keystroke tab 
     -- set word to replace with 
     keystroke "newword" 
     -- press replace all button 
     click button "Replace All" of tab group 1 of window "Find & Replace" 
     -- close find window 
     keystroke "w" using (command down) 
     -- select all text 
     keystroke "a" using (command down) 
     -- copy back to clipboard 
     keystroke "c" using (command down) 
    end tell 
end tell 
+0

Если я использую страницы или что-нибудь подобное, то я вернулся в начале, а это значит, заменяющий все вручную (конечно, я использую найти/заменить, но я должен сделать сам, и именно поэтому я начал используя applescript - для предотвращения этого. Это странно, когда вы заменяете те же самые 3-4 слова снова и снова на тексты выстрелов) – TabulaRasa

+0

Нет, это не то, что вам не нужно делать. Вы можете программно выполнять поиск и замену. Просто используйте GUI-скрипты, чтобы сделать это - я посмотрю, не могу ли я сегодня взломать сценарий, демонстрируя это. – Clark