如何将 AppleScript URL 对象转换为文本

How to convert an AppleScript URL object to text

我在 AppleScript 中有一个 URL 对象,我正在尝试将其转换为文本对象。

set theURL to "http://apple.com/myfile" as URL

--set t to theURL as text --Fails, can't coerce to text

set a to scheme of theURL --works
set b to host of theURL --works
set c to path of theURL --fails

无法获取 {class:URL、scheme:http URL 的路径,路径:“http://apple.com/myfile” , 主机:{class:互联网地址, DNS格式:"apple.com", port:80, 点分十进制格式:"17.253.144.10"}}.

很明显,从报错信息来看,URL对象有一个'path'属性。我的理论是 'path' 这个词可能被保留了?我需要以某种方式逃避它吗?

是的,它与其他一些 path 属性 («属性 ppth») 冲突。请改用以下。 编译代码后它将引用正确的路径属性:

set theURL to "http://apple.com/myfile" as URL
set c to «property FTPc» of theURL

或者,采用以下形式(这种形式允许您将已经编译的代码按原样交付给其他用户:

set URLpath to run script "set theURL to \"http://apple.com/myfile\" as URL
set d to «property FTPc» of theURL"

下面显示的示例AppleScript代码在[=94=中进行了测试macOS CatalinamacOS Big Sur 下的脚本编辑器,具有 语言和地区 设置在 系统偏好设置 中设置为 英语(美国)- 主要 并为我工作没有问题 1.

要解决此问题,请在 脚本编辑器 中,仅使用例如:

set theURL to "http://apple.com/myfile" as URL

--set t to theURL as text --Fails, can't coerce to text

set a to scheme of theURL --works
set b to host of theURL --works
set c to path of theURL --fails

就是在脚本的最前面至少加上use scripting additions。您可能还需要添加什么 use AppleScript version "2.4" -- Yosemite (10.10) or later.

因此,在 脚本编辑器 中,例如:

use AppleScript version "2.4" -- Yosemite (10.10) or later
use scripting additions

set theURL to "http://apple.com/myfile" as URL

set c to path of theURL

备注:

这与 path 作为 关键字 (或 保留 )没有冲突,因为它不是 关键词!参见:AppleScript Keywords

另请参阅下面 脚本编辑器 中的 标准添加 的屏幕截图。

这个问题完全是因为 use scripting additions 必须在您的 示例 AppleScript AppleScript 的上下文中使用=76=]代码.

假设您是 运行 Yosemite (10.10) 或更高版本,一般来说,将上述行添加到您的 脚本。我个人只在需要时添加它们。


  • 1 系统偏好设置 > 安全与隐私 [=] 中假定必要且适当的设置140=] > 隐私 已根据需要 set/addressed。



来自脚本编辑器中的 (⇧⌘L) for 标准加法:

如您所见,pathtext 只读 属性 of URL 并且在使用 use scripting additions 时很容易检索,如上所示。




更新:

为了反驳 Robert Kniazidis 在我的回答下的评论中对我的不实指控,...

...在我发表评论时引用了他的回答,这是他最近重写之前删除的答案后截取的三个屏幕截图,自从我发表评论以来,这证实了我所说的。

在第一个屏幕截图中,我再次将 code 的第一个 block 复制并粘贴到 Script Editor,可以看到它是紫色的,这意味着它还没有被编译。

第二个屏幕截图显示点击了运行按钮,它编译了代码 并执行它。可以清楚地看到,它完全按照我之前所说的去做,它自动将 set c to «property FTPc» of theURL 更改为 set c to path of theURL 并导致我提到的错误,这在 OP 中也提到过,是问题问的问题!

在第三张截图中,我再次添加了 use scripting additions 和 运行 脚本 ,得到了预期的输出,并且没有像 OP 或我的那样的错误我被指控撒谎的事实陈述。

我能够在两台不同的机器上使用 macOS CatalinamacOS Big Sur 中复制这些结果脚本编辑器Apple 默认 application for AppleScript,以及 Script Debugger,一个第三方应用程序,其设计优于Script Editor