gpt4 book ai didi

osx-snow-leopard - 为什么 Applescript 在脚本编辑器中运行,但保存为应用程序时出错?

转载 作者:行者123 更新时间:2023-12-04 07:24:57 25 4
gpt4 key购买 nike

我的 applescript 需要检测自己的文件名,下面的代码在 Snow Leopard (10.6) 上运行良好

set my_name to name of me as string
display dialog "Name: " & my_name

当我从 AppleScript 编辑器运行它时它显示“名称:AppleScript 编辑器”,当我将它保存为名为 NewTest 的应用程序时它显示“名称:NewTest”。

当我在 Leopare (10.5) 机器上运行它时,它会提示“无法将 <> 的名称转换为字符串类型。”当我删除“as string”部分时,它在脚本编辑器下运行,返回“名称:脚本编辑器”,但当另存为应用程序时,它出错并显示“无法获取名称”。

在 10.5 下,在脚本编辑器中运行和另存为应用程序有什么不同?

最佳答案

虽然我还没有检查过,但这是另一个想法。可能导致问题的一件事是命令“get”。通常,当您运行诸如“我的名字”之类的命令时,隐含了命令 get,因此您实际上是在运行“获取我的名字”。问题是隐含的“get”并不总是这样。所以有时你必须明确地说“得到”。每当我遇到像你这样的问题时,我尝试的第一件事就是在命令中添加“get”……这已成为习惯,因为你永远不知道。请注意,您始终可以使用 get 这个词,而不会遇到该问题。因此,尝试将命令更改为“将 my_name 设置为(获取我的名字)”。我很想知道这是否解决了您的 10.5 问题。另请注意,名称已经是字符串,因此无需将结果强制转换为字符串。

编辑:我查看了我的一些旧脚本。我使用以下代码来获取名称。在我的笔记中,我有这些评论......

-- 这将获取不带任何文件扩展名的应用程序或脚本的名称

-- 这是使用路径完成的,因为当从脚本菜单运行脚本时,你将 set myName 设置为我的名字,那么结果是“applescript runner”而不是实际的名字

-- 它还确保您获得的名称与 Finder 中显示的名称相同,因为有时系统事件进程名称与 Finder 名称不同

on getMyName()
set myPath to path to me as text
if myPath ends with ":" then
set n to -2
else
set n to -1
end if
set AppleScript's text item delimiters to ":"
set myName to text item n of myPath
if (myName contains ".") then
set AppleScript's text item delimiters to "."
set myName to text 1 thru text item -2 of myName
end if
set AppleScript's text item delimiters to ""
return myName
end getMyName

关于osx-snow-leopard - 为什么 Applescript 在脚本编辑器中运行,但保存为应用程序时出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3348290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com