AppleScript将文本转换为可粘贴的HTML

时间:2009-12-05 01:19:38

标签: macos replace applescript clipboard

我们与bugzilla合作。每当你需要查询一个票证时,你只需要知道bugid(整数),然后你就可以将它添加到它中。

http://<bugzilla_server>/bugzilla/show_bug.cgi?id=<bug_id>

假设我有一个类似于777的错误链接。如果我选择并复制它,它将保留在粘贴板上,因此当我将其粘贴到邮件中时,它将正确保留链接及其属性。

我正在寻找的是简单类型'777'选择它并在其上运行一个applescript并用上面的链接替换它。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:3)

以下AppleScript将获取剪贴板的内容并将其替换为前缀的URL:

set the clipboard to "http://bugzilla_server/bugzilla/show_bug.cgi?id=" & (the clipboard)

您可以将其编译为AppleScript scpt并将其提供到Scripts文件夹中,或将其编译为可启动的app

osacompile -e 'set the clipboard to "http://bugzilla_server/bugzilla/show_bug.cgi?id=" & (the clipboard)' -o replacebug.scpt  # or -o replacebug.app

如果您的主要用例是在Mail.app编写邮件,那么这可能不是最方便用户的方法。如果您使用的是Snow Leopard(10.6),更简单的解决方案是利用新的Text Substitution功能。打开System Preferences -> Language & Text首选项面板,选择Text标签,然后点击+添加新的替换,可能:

Replace   With

  (b)     http://bugzilla_server/bugzilla/show_bug.cgi?id=

然后,在Mail.app中,启动New Message,然后在文本正文中单击光标,执行控制单击鼠标以显示上下文菜单。从中,选择Substitutions -> Text Replacement。从现在开始,当您在键入时输入电子邮件的文本正文:

(b)777

(b)会自动更改为您保存的网址文字:

http://bugzilla_server/bugzilla/show_bug.cgi?id=777

这也适用于其他支持Cocoa文本的应用程序,如Safari。

编辑:

在谈论在电子邮件中撰写URL链接时,至少有三种不同格式的电子邮件,每种格式都有不同的解决方案。既然你没有说你正在使用哪种,我将涵盖所有三种:

  1. 纯文本格式 - 虽然某些电子邮件阅读器可能会为纯文本网址提供可点击的链接,但无法在撰写的电子邮件中“隐藏”该网址。

  2. HTML格式的电子邮件 - Apple的Mail.app不支持以此格式撰写电子邮件,尽管它会显示它。使用其他邮件编写客户端或您自己的程序,使用标准HTML锚点<a href=...>标记撰写链接非常容易。

  3. 富文本格式电子邮件 - AFAIK,这是使用Mail.app撰写网址链接的唯一方法。不幸的是,似乎没有一种简单的方法可以使用AppleScript命令直接创建RTF超链接。基于建议here,这是通过剪贴板创建可修改的RTF模板来实现的。

    • TextEdit.app中,创建一个新的文档窗口。
    • 插入要在电子邮件中显示的文字,即777
    • 选择文本(⌘A),然后添加链接(⌘K)。在{Link destination}字段中输入带有777的完整URL;单击“确定”。
    • 使用“格式”菜单命令修改文本格式。
    • 使用temp.rtf - &gt;将文件(⇧⌘S)保存为File Format Rich Text Format
    • 关闭文档窗口。
    • 打开文档窗口(⌘O),选择文件temp.rtf并选择Ignore rich text commands
    • 在文件的第一行之前插入以下内容:

      #!/bin/sh
      sed -e "s/777/$(pbpaste -Prefer txt)/g" <<EOF | pbcopy -Prefer rtf
      
    • 在文件末尾附加EOF作为单独的行。

      现在看起来应该是这样的:

      #!/bin/sh
      sed -e "s/777/$(pbpaste -Prefer txt)/g" <<EOF | pbcopy -Prefer rtf
      {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf250
      {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
      {\colortbl;\red255\green255\blue255;}
      \margl1440\margr1440\vieww9000\viewh8400\viewkind0
      \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
      {\field{\*\fldinst{HYPERLINK "http://bugzilla_server/bugzilla/show_bug.cgi?id=777"}}{\fldrslt 
      \f0\fs24 \cf0 777}}}
      EOF
      
    • 将其另存为Plain Text文件并直接作为shell脚本执行,或通过AppleScript do shell script命令调用它。

    此类解决方案适用于支持RTF格式的大多数其他应用程序。

答案 1 :(得分:1)

不确定您正在寻找的功能,但是这将从剪贴板中取出一个数字并将其处理为链接,并将链接作为标准href URL放在剪贴板上,该URL将用于纯文本或富文本格式,喜欢: <a href="http://<bugzilla_server>/bugzilla/show_bug.cgi?id=777" title="777">Bug number 777 link</a>

<bugzilla_server>更改为您的工作网址。

set bug_number to the clipboard

set the_text to "<a href=\"http://<bugzilla_server>/bugzilla/show_bug.cgi?id=" & bug_number & "\" title=\"" & bug_number & "\">Bug number " & bug_number & " link</a>"

set the clipboard to the_text