我正在使用AppleScript来编辑我的剪贴板数据。但是有一些我无法弄清楚如何做的事情:
此脚本删除剪贴板中文本的整个格式样式。有没有办法保留所有格式?
我尝试将此脚本作为应用程序运行(在保存时保持打开状态),但它只是在重新启动后运行一次,并且不会编辑任何新的复制文本。如何让这个脚本连续运行?
这是我的剧本:
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
答案 0 :(得分:3)
保持格式化的最简单方法是坦率地使用样式文本编辑器(如Text Edit或Pages)作为中间阶段并在那里进行操作。即在Pages中打开一个新文档,粘贴文本,执行查找和替换以修改文本,使用GUI脚本选择所有文档,然后将其复制回剪贴板。
您也可以使用此技术设置样式化模板,填写数据库信息,然后打印或将其放在剪贴板上。我用了很多东西。我只是希望你能用Numbers做到这一点。 (数字的查找和替换没有键盘选项)
编辑:这是一个快速而又脏的示例脚本,可以使用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
答案 1 :(得分:2)
首先,applescript仅适用于文本,而不适用于格式化文本。因此,一旦将剪贴板带入Applecript,您就会丢失所有格式。你无能为力。其次,为了使“on idle”处理程序工作,您需要返回一个时间值,这是处理程序再次运行的时间。因此,在“结束空闲”语句之前添加“返回10”,这意味着每10秒运行一次脚本。