无法将 the_folder 设置为用户文件夹(拒绝访问)

Can't set the_folder to a user folder (access denied)

我已经搜索了几个小时,每次我都尝试推荐的修复方法。我仍然无法到达任何地方。我觉得我错过了一些如此明显的东西,我的 Mac 正在嘲笑我糟糕的尝试。

脚本如下:

tell application "System Events"
set the_folder to path to folder "dropbox" from user domain as string
set the_file to "ToDo.txt" of (POSIX path of the_folder)
set the_text to (do shell script "cat " & quoted form of (POSIX path of the_file))
return the_text
end tell

结果:

Can’t get "ToDo.txt" of (POSIX path of the_folder). Access not allowed.

文件夹是什么也没关系。我试过 Documents/Library,但仍然总是遇到访问问题。

这是您脚本的更正版本:

    tell application "System Events"
        set the_folder to the folder "~/Dropbox"
        set the_file to the file "ToDo.txt" in the_folder

        set the_text to do shell script "cat " & ¬
            quoted form of (POSIX path of the_file as text)
    end tell

    return the_text

注意事项如下:

  1. 不要对未被内置 AppleScript 常量引用的文件夹使用 Path To,例如 home folderdesktop folder。相反,我将该行更改为对具有指定路径 "~/Dropbox".
  2. folder 对象的简单引用
  3. 同样,你需要在声明文件名之前放置一个file对象说明符,否则你所做的只是给系统事件一块text 并说文本在文件夹中的某个位置(这没有多大意义)。现在我已经告诉 System Events 它是一个 file 并且文本是文件名,它确切地知道在哪里可以找到它。
  4. 最后,出于某种原因,您需要声明 POSIX path of the_file 的类型为 class text。我真的不知道为什么 AppleScript 看不到它已经是文本,但有时就是这样。

现在我将向您展示另一个脚本,它完全可以执行您的操作:

    set the_text to read (POSIX path of ¬
        (path to home folder) & ¬
        "Dropbox/ToDo.txt" as POSIX file as alias)