如何将 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 Catalina 和 macOS 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 标准加法:
如您所见,path
是 text 只读 属性 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 Catalina 和 macOS Big Sur 中复制这些结果脚本编辑器、Apple 默认 application for AppleScript,以及 Script Debugger,一个第三方应用程序,其设计优于Script Editor。
我在 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 Catalina 和 macOS 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 标准加法:
如您所见,path
是 text 只读 属性 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 Catalina 和 macOS Big Sur 中复制这些结果脚本编辑器、Apple 默认 application for AppleScript,以及 Script Debugger,一个第三方应用程序,其设计优于Script Editor。