我一直在用Excel对数据库进行编码,最近不得不支持Mac,Office 2016以及更高版本,实际上不支持内联代码,因此我不得不借用Mac。
我想制作一个“补丁” .app,当在最终用户计算机上运行时,它将把AppleScripts放入Microsoft所说的必需文件中。
我能够检测文件夹是否存在并根据需要创建它们。我可以使用桌面和文档目录在命令中移动文件,但是如果我使用onedrive目录(从中执行文件),将无法正常工作。
我尝试了几种不同的代码结构,我是Windows用户,所以我要学习操作系统。
我已经尝试过复制,有复制和无复制,在vs.使用文件,vs。文件或项目以及每一个中键入目录。
这是我现在的代码,几乎可以掌握正在运行的脚本的位置,然后删除应用程序的名称,并添加其他脚本的正确目录。
检查文件夹是否存在,如果不存在,则创建它们。
然后用于将源中的所有文件移动到目标。
set Source to POSIX path of ((path to me as text) & "::") & "AppleScripts/"
set ParentDestination to ("/Library/Application Scripts/")
set Destination to ("/Library/Application Scripts/com.microsoft.Excel/")
set ParentFound to false
set DestinationFound to false
tell application "System Events"
if exists folder ParentDestination then
set ParentFound to true
if exists folder Destination then
set DestinationFound to true
end if
end if
end tell
tell application "Finder"
if ParentFound = false then
make new folder at folder "Library" of startup disk with properties {name:"Application Scripts"}
end if
if DestinationFound = false then
make new folder at folder "Application Scripts" of folder "Library" of startup disk with properties {name:"com.microsoft.Excel"}
end if
duplicate (every item in Source) to Destination
end tell
我当前遇到的错误是:Finder got an error: Handler can’t handle objects of this class.
这取决于我尝试的代码变化,但始终取决于所有文件的移动。
我知道这可能很简单,但是我还没有开始让Excel调用代码,所以我需要一些帮助。
答案 0 :(得分:0)
Finder对文件说明符有些敏感;这就是为什么我总是更喜欢使用系统事件的原因。但是系统事件没有功能性的“复制”命令,因此...以下内容应适用于本地副本(无论如何,它在我的机器上也可以):
set Source to POSIX path of ((path to me as text) & "::") & "AppleScripts/"
set libraryFolder to "~/Library"
tell application "System Events"
if exists folder "Application Scripts" of folder libraryFolder then
set AppScriptsFolder to folder "Application Scripts" of folder libraryFolder
else
set AppScriptsFolder to make new folder at folder libraryFolder with properties {name:"Application Scripts"}
end if
if exists folder "com.microsoft.Excel" of AppScriptsFolder then
set targetFolder to folder "com.microsoft.Excel" of AppScriptsFolder
else
set targetFolder to make new folder at AppScriptsFolder with properties {name:"com.microsoft.Excel"}
end if
set targetFolder to (path of targetFolder) as alias
set Source to (path of folder Source) as alias
end tell
tell application "Finder"
duplicate (every item in Source) to targetFolder
end tell
我衷心怀疑您是否可以从云目录运行AppleScript。我的意思是,我从未尝试过自己,也无法访问OneDrive对其进行测试,但是能够从远程驱动器运行任意代码似乎是一场安全噩梦。我很想知道您是否可以管理它。