You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以纯文本格式在Office脚本目录生成AppleScript文件?

解决直接在Office受保护脚本目录生成纯文本AppleScript的问题

这个问题的核心原因是Office的com.microsoft.*脚本目录属于沙箱保护路径,当你通过AppleScript的open for access配合Finder操作写入文件时,系统会自动将.scpt文件编译为字节码格式(二进制)——这就是Finder无法预览内容、VBA调用崩溃的根源。而复制粘贴的过程中,系统会把字节码文件转换回纯文本格式的脚本,所以就能正常工作了。

直接生成纯文本脚本的解决方案

要绕过自动编译的问题,最直接的方法是不通过AppleScript的文件操作或Finder来创建文件,而是用Shell命令直接将纯文本内容写入目标目录,这样生成的文件从一开始就是纯文本格式,不会被编译。

下面是修改后的完整脚本示例,替换了你原来的临时文件创建+复制逻辑:

property theFolders : {"~/Library/Application Scripts/com.microsoft.Excel", "~/Library/Application Scripts/com.microsoft.Word", "~/Library/Application Scripts/com.microsoft.Powerpoint"}

-- 确保所有目标目录存在
repeat with folderPath in theFolders
  do shell script "mkdir -p " & quoted form of folderPath
end repeat

-- 定义要写入的纯文本脚本内容
set scriptContent to "on handlerTest(thisPhrase)" & linefeed & "say thisPhrase" & linefeed & "end handlerTest"

-- 遍历每个Office应用目录,生成纯文本脚本
repeat with folderPath in theFolders
  set targetScriptPath to folderPath & "/test.scpt"
  -- 仅在文件不存在时执行写入
  if not my ExistsFile(targetScriptPath) then
    -- 通过Shell命令直接写入纯文本内容
    do shell script "echo " & quoted form of scriptContent & " > " & quoted form of targetScriptPath
  end if
end repeat

-- 弹出安装完成提示
display alert "安装成功" message "test.scpt已在所有Office脚本目录生成纯文本版本" as informational buttons {"OK"} default button "OK"

-- 文件存在性检查辅助函数
on ExistsFile(filePath)
  tell application "System Events" to return (exists disk item filePath) and class of disk item filePath = file
end ExistsFile

关键修改点说明

  1. 直接写入目标路径:用echo命令把脚本内容直接输出到目标目录的test.scpt文件,全程绕开可能触发编译的AppleScript文件操作。
  2. 批量处理多目录:把Excel/Word/PowerPoint三个目标目录都加入列表,一次完成所有目录的脚本生成。
  3. 保留存在性检查:避免重复生成已存在的文件,节省操作资源。

验证方法

生成后直接前往对应的com.microsoft.*目录查看test.scpt,Finder应该能直接预览纯文本内容。再运行你的VBA代码:

Sub TestScript()
AppleScriptTask "test.scpt", "handlerTest", "hello world"
End Sub

此时Office应用不会崩溃,能正常执行朗读操作。

内容的提问来源于stack exchange,提问作者Jamie Garroch - MVP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:41:57