使用AppleScript从剪贴板复制纯文本

12

情况

  • 打开一个Word文档。
  • 从文档中复制一些格式化的文本到剪贴板。
  • 将其粘贴到CKEditor的实例中。

CKEditor收到带有大量无用html元素和样式的恶臭M$-style HTML。即使使用CKEditor的功能去除格式,也不能呈现纯文本。

期望的解决方案

是否有人可以提供一个AppleScript,它可以删除样式/HTML字符串并将纯文本部分粘贴回剪贴板

另外,如果能提供一个简短的提示,如何将AppleScript绑定到功能键,那就更好了。

5个回答

21

你没有展示你当前是如何复制和粘贴的。虽然这应该是可以使用以下类似的方式来完成:

tell application "Word"
    set theData to (the clipboard as text)
    set the clipboard to theData
end tell

获取剪贴板数据的纯文本版本,然后用纯文本替换包含HTML的剪贴板内容。
建议使用Automator创建一个运行脚本的服务并将其绑定到功能键,然后使用系统偏好设置中的键盘面板分配一个键。实际上,我认为整个任务最好作为接收文本输入的服务,而不是试图从剪贴板中显式获取它。

谢谢!我会尝试一下。脚本应该告诉FINDER而不是WORD吧?这样可以使其与应用程序无关。 - SteAp
好的,你之前说过你想从Word中复制。如果你想从当前应用程序中复制,那么你可以尝试adayzdone的方法,或者你可以使用System Events来获取当前应用程序并进行操作。 - Ken Thomases

7

虽然这是一个老问题,但我发现现有的答案并不能完全将文本转换为纯文本。它们似乎将字体设置为 Helvetica,大小设置为 12。

然而,您可以使用 pbpastepbcopy 命令来真正地去除格式。

在终端中:

$ pbpaste | pbcopy

作为一个AppleScript:

do shell script "pbpaste | pbcopy"

这就是全部。


3

echo -n 无法工作是因为AppleScript的 do shell script 命令使用的是sh,而不是bash,而sh的echo是内置的,不接受选项。明确指定/bin/echo即可解决问题:

do shell script "/bin/echo -n " & quoted form of my_string & " | pbcopy"

那会将my_string的纯文本副本放入剪贴板中。

3

将剪贴板设置为已定义的标准附加项。您不需要将其包含在 tell application "Word" ... 中。

set the clipboard to (the clipboard as text)

剪贴板命令在StandardAdditions字典中的文档都说“在'tell'块内使用并先激活应用程序”或类似语句。我同意,从经验上看,似乎不需要这样做也可以工作。 - Ken Thomases

0
这对我有用:
do shell script "echo " & total_paying & " | tr -d \"\n\" | pbcopy"
注意:当你点击编译时, \n 将被转换为一个字面上的换行符。这没关系,它仍然有效。我尝试使用 echo -n 但它在输出中打印出 -n。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接