将参数传递给 AppleScriptTask
Pass argument to AppleScriptTask
当我切换到 MacOS Mojave 后,我无法再使用宏将 Excel 文档另存为 PDF 到特定位置。
我不得不将它保存到 /Library/Group Containers/UBF8T346G9.Office/,然后通过调用存储在 /Library/Application Scripts/com.microsoft.Excel/.
这已经工作了几个月。使用此 macro/script 组合的人突然无法使用。没有其他用户遇到问题,有些用户具有相同的 Excel 和 MacOS(分别为 16.29 和 10.14.6)组合。
当她尝试 运行 宏时,它抛出
Invalid procedure call or argument (Error 5)
特别是在调用此脚本的行上。
宏的开头还有另一个脚本,它不带参数并且正在运行。我使用 MsgBox 查看传递给 AppleScriptTask 的字符串,使用脚本编辑器将其插入脚本,然后 运行 它没有问题。
这是 AppleScript:
ExistsFile(sPath)
on ExistsFile(sPath)
set sPath to sPath as POSIX file
tell application "Finder" to set sPath to file sPath
set dest to (path to desktop)
move sPath to dest without replacing
end ExistsFile
这是宏的调用:
result = AppleScriptTask("moveToDesktop.scpt", "ExistsFile", sPath & strJobNumber & " Cover Page.pdf")
我根据在其他论坛上看到的内容尝试了以下方法:
- 将文件名设置为变量并将其传递给 AppleScriptTask
- 删除脚本中的扩展名、删除文件夹中的扩展名以及这两者的组合
如果仅对一个用户 运行 失败,听起来可能是权限错误。此 page 具有 运行 AppleScriptTask
命令的所有要求。可能的解决方案是使用来自终端的 chmod
命令为脚本启用 运行 的正确权限。这将为 root 和当前用户提供权限。如果这不起作用,请仔细检查用户系统是否满足所有要求。
cd <path to script file>
sudo chmod 755 moveToDesktop.scpt
在 MacOS Mojave 和更新版本中,您需要执行以下操作:
打开系统偏好设置 - 安全和隐私 - 隐私选项卡 - 自动化 - Excel ~ 勾选 Finder。
它是您传递给 AppleScript 的参数中的空格。在“Cover Letter.pdf”之前至少有一个(然后在“Cover”和“Letter”之间有一个),可能在您用来创建参数的其他单元格中。
我遇到了同样的问题,当直接向它提供组合参数时,AppleScript 本身工作正常,这让我很生气。
当我切换到 MacOS Mojave 后,我无法再使用宏将 Excel 文档另存为 PDF 到特定位置。
我不得不将它保存到 /Library/Group Containers/UBF8T346G9.Office/,然后通过调用存储在 /Library/Application Scripts/com.microsoft.Excel/.
这已经工作了几个月。使用此 macro/script 组合的人突然无法使用。没有其他用户遇到问题,有些用户具有相同的 Excel 和 MacOS(分别为 16.29 和 10.14.6)组合。
当她尝试 运行 宏时,它抛出
Invalid procedure call or argument (Error 5)
特别是在调用此脚本的行上。
宏的开头还有另一个脚本,它不带参数并且正在运行。我使用 MsgBox 查看传递给 AppleScriptTask 的字符串,使用脚本编辑器将其插入脚本,然后 运行 它没有问题。
这是 AppleScript:
ExistsFile(sPath)
on ExistsFile(sPath)
set sPath to sPath as POSIX file
tell application "Finder" to set sPath to file sPath
set dest to (path to desktop)
move sPath to dest without replacing
end ExistsFile
这是宏的调用:
result = AppleScriptTask("moveToDesktop.scpt", "ExistsFile", sPath & strJobNumber & " Cover Page.pdf")
我根据在其他论坛上看到的内容尝试了以下方法:
- 将文件名设置为变量并将其传递给 AppleScriptTask
- 删除脚本中的扩展名、删除文件夹中的扩展名以及这两者的组合
如果仅对一个用户 运行 失败,听起来可能是权限错误。此 page 具有 运行 AppleScriptTask
命令的所有要求。可能的解决方案是使用来自终端的 chmod
命令为脚本启用 运行 的正确权限。这将为 root 和当前用户提供权限。如果这不起作用,请仔细检查用户系统是否满足所有要求。
cd <path to script file>
sudo chmod 755 moveToDesktop.scpt
在 MacOS Mojave 和更新版本中,您需要执行以下操作:
打开系统偏好设置 - 安全和隐私 - 隐私选项卡 - 自动化 - Excel ~ 勾选 Finder。
它是您传递给 AppleScript 的参数中的空格。在“Cover Letter.pdf”之前至少有一个(然后在“Cover”和“Letter”之间有一个),可能在您用来创建参数的其他单元格中。 我遇到了同样的问题,当直接向它提供组合参数时,AppleScript 本身工作正常,这让我很生气。