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