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

Applescript 无法将_文件夹设置为用户文件夹(访问被拒绝),applescript,posix,dropbox,access-denied,folder-permissions,Applescript,Posix,Dropbox,Access Denied,Folder Permissions,我已经搜索了几个小时了,每次我都尝试推荐的修复方法。我还是哪儿也去不了。我觉得我错过了一些非常明显的东西,我的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

我已经搜索了几个小时了,每次我都尝试推荐的修复方法。我还是哪儿也去不了。我觉得我错过了一些非常明显的东西,我的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
结果是:

无法获取\u文件夹的POSIX路径的ToDo.txt。无法访问 允许


文件夹是什么也不重要。我尝试过文档/库,但仍然经常遇到访问问题。

以下是您的脚本的更正版本:

    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
需要注意的要点如下:

对于未被内置AppleScript常量引用的文件夹(如主文件夹或桌面文件夹),不要使用指向的路径。相反,我将该行更改为对具有指定路径~/Dropbox的文件夹对象的简单引用。 类似地,您需要在声明文件名之前放置一个文件对象说明符,否则您所做的只是给系统事件一段文本,并说文本在文件夹中的某个地方,这没有多大意义。现在我已经告诉系统事件它是一个文件,文本是文件名,它确切地知道在哪里可以找到它。 最后,出于某种原因,您需要声明_文件的POSIX路径是类text类型。我真的不知道为什么AppleScript看不到它已经是文本了,但有时候就是这样。 现在,我将向您展示另一个脚本,它将与您的脚本完全相同:

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

非常感谢!运行脚本返回:错误文件结束错误。数字-39并将其放入一个告诉应用程序系统事件中,它会返回一个无法转换为类型的错误,这将是您的文本文件的错误。不要将read命令放入tell块。现在就把这个脚本放在一边,使用你的脚本的正确版本。非常感谢!当然,在苹果脚本方面还有很多需要学习的地方。。。你基本上是在和电脑对话,这很好,但我还是觉得其他语言更容易理解。许多非常有能力的程序员发现AppleScript很难理解。它的自然语言语法在某种程度上是一种优势,但在其他方面是一种缺陷。事实上,对于一个程序员来说,这感觉很不自然,尽管它会邀请一个新手,直到AppleScript的反复无常让每个人都哭了。