Невозможно установить the_folder в папку пользователя (доступ запрещен)

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

Решение

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

    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 спецификатор объекта перед указанием имени файла, в противном случае все, что вы сделали, дали системным событиям фрагмент текста и сказали, что текст находится где-то в папке (что не имеет большого смысла). Теперь я сказал System Events, что это 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)
Другие вопросы по тегам