AppleScript Google 用引号搜索

AppleScript Google search with quotes

我想使用 Automator Google 搜索所选文本,但所选文本应在引号内!

我不知道如何让脚本在所选文本(输入)上加上引号,例如 "selected text"。

on run {input, parameters}
   open location "https://www.google.com/search?q=" & input
end run

编辑

这是解决方案:

on run {input, parameters}
   open location "https://www.google.com/search?q=" & quote & input & quote
end run

假设您希望双引号成为搜索查询的一部分(即您正在 Google 处进行文字字符串搜索),您需要在搜索字符串周围添加文字双引号。好吧,除了在 URL 中不允许使用文字双引号,所以它们应该被 URL 编码为 %22,像这样:

open location "https://www.google.com/search?q=%22" & input & "%22"

请注意,您可能还需要对 input 字符串进行 URL 编码,尽管它似乎可以自动处理诸如空格之类的基本内容。如果您需要更好的处理方式,请参阅 "I need to URL-encode a string in AppleScript"(问题 aaplmath 链接)。

如果您希望 Google 为您提供包含您要查找的确切短语的结果,则搜索查询必须在引号内,为此,Automator 服务必须如下所示:

on run {input, parameters}
   open location "https://www.google.com/search?q=" & quote & input & quote
end run

我强烈建议使用 AppleScriptObjC 的技能——这里是在 Foundation 框架的帮助下——可靠地转义搜索字符串 (macOS 10.10+)

use framework "Foundation"
use scripting additions

on run {input, parameters}
    set nsInput to current application's NSString's stringWithString:("https://www.google.com/search?q=" & input)
    set characterSet to current application's NSCharacterSet's URLQueryAllowedCharacterSet()
    set escapedInput to (nsInput's stringByAddingPercentEncodingWithAllowedCharacters:characterSet) as text
    open location escapedInput
end run

它处理引号以及空格或其他特殊字符