Невозможно установить the_folder в папку пользователя (доступ запрещен) - PullRequest
0 голосов
/ 26 июня 2018

Я искал пару часов сейчас, и каждый раз, когда я пытаюсь рекомендовать исправление.Я до сих пор не могу никуда добраться.Я чувствую, что упускаю что-то настолько очевидное, мой 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

Результаты:

Не удается получить «ToDo.txt» из (путь POSIX к папке_).Доступ запрещен.

Также не имеет значения, что это за папка.Я пытался с Документами / Библиотекой и все еще всегда получаю эту проблему доступа.

1 Ответ

0 голосов
/ 26 июня 2018

Вот исправленная версия вашего скрипта:

    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. Не используйте Path To для папок, которые не являютсяна него ссылается встроенная константа AppleScript, например home folder или desktop folder.Вместо этого я изменил строку на простую ссылку на folder объект с указанным путем "~/Dropbox".
  2. Аналогично, вам нужно поместить спецификатор объекта file перед указанием имени файла,в противном случае все, что вы сделали, дали Системные события кусок текста и сказали, что текст находится где-то в папке (что не имеет большого смысла).Теперь я сказал Системные события , что это file, а текст - это имя файла, он точно знает, где его найти.
  3. Наконец, по какой-то причине вам необходимоукажите, что POSIX path of the_file относится к типу класса text.Я действительно не знаю, почему AppleScript не может видеть, что это уже текст, но иногда это так.

Теперь я собираюсь показать вам еще один скрипт, который будет делать именно то, что вашделает:

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