Чтобы ответить на ваш конкретный вопрос о том, как AppleScript мог измениться с 2009 года, я не буду пытаться угадать множество способов, которыми он мог развиваться с тех пор (и я не мог найти языковую документацию с 2009 года или раньше), но я могу выделить текущая формулировка, поскольку это относится к вашему фрагменту кода. А именно, где ваш скрипт выдает ошибку, с синтаксической ошибкой в set folder "Documents" of home
.
Способ определения команды set
в (текущей версии) AppleScript:
[для] присвойте [ одно из] одно или несколько значений одной или нескольким переменным.
Он имеет следующий синтаксис:
установить переменнуюPattern в выражение
где variablePattern
- это имя переменной или списка переменных, а expression
оценивает значение (я), которое будет присвоено переменной (ам).
(Примечание. В Руководстве по языку AppleScript говорится, что вторая половина декларации, т.е. to %expression%
, является необязательной. Однако я не могу представить себе экземпляр, для которого это верно, и, насколько мне известно, set
всегда должен следовать полному синтаксису, как описано выше. Возможно, это один из способов, которым язык изменился ...?)
Итак, проще говоря, set
всегда используется, чтобы взять значение одной вещи и присвоить его другой, как и все остальные строки вашего фрагмента кода.
В следующей строке:
set folder "Documents" of home
у нас есть только половина объявления: команда начинается с предоставления объекта (в данном случае папки), который ищет новое значение, но затем не указывает, каким должно быть это новое значение.
Кроме того, объект folder
обычно не является тем, которому можно присваивать значения самому. Никто не может командовать:
set folder "Documents" of home to desktop
Однако можно назначить объект folder
чему-либо еще, например, переменной или значению существующего свойства, например, свойству target
Finder window
:
set the target of the front Finder window to folder "Documents" of home
Команда set
инструктирует AppleScript использовать значение папки выражений folder "Document" of home
(которая оценивает ссылку на местоположение на жестком диске) и назначать его свойству target
в front Finder window
(которое определяет, какой каталог показано в окне). Как и следовало ожидать, это приводит к переключению каталога активного окна Finder из домашнего каталога в каталог документов .
Это кажется маловероятным желаемым результатом, так как применение всех этих действий к одному окну Finder означает, что предыдущие строки несколько излишни: не было бы необходимости открывать домашнюю папку и устанавливать ее свойства (toolbar visible
, sidebar width
, current view
и bounds
), только затем изменить каталог и установить все эти свойства на новые значения.
Поэтому я думаю, что наиболее вероятное решение - это то, на что намекнул @ wch1zpink в своем ответе, а именно: открыть новое окно Finder в месте расположения папки « Документы ».
Я решил сделать это точно так же, как это делал скрипт с домашней папкой:
open folder "Documents" of home
которая полностью заменяет проблемную линию. Таким образом, полученный скрипт имеет приятную симметрию в том, как создаются и управляются два окна:
tell application "Finder"
activate
close every window
open home
set toolbar visible of the front Finder window to true
set the sidebar width of the front Finder window to 135
set the current view of the front Finder window to column view
set the bounds of the front Finder window to {36, 116, 511, 674}
open folder "Documents" of home
set toolbar visible of the front Finder window to false
set the current view of the front Finder window to flow view
set the bounds of front Finder window to {528, 116, 1016, 674}
select the last Finder window
end tell
open
команда, очевидно, открывает новое окно Finder в указанном месте, но и делает это новое окно Finder переднее окно Finder.
Отсюда легче увидеть, что первый блок операторов set
предназначен для одного окна Finder ; и второй блок для другого.
Надеюсь, я обратился к вашему запросу напрямую и предоставил объяснение, которое имеет смысл. Простите, если что-то из того, что я написал, звучит покровительственно: я старался избегать предположений о том, что вы делаете и не знаете об AppleScript, несмотря на доказательства того, что вы явно не новичок (репутация 2.5K в Super User). С другой стороны, если что-то из того, что я написал, является двусмысленным или плохо объясненным, дайте мне знать, и я с удовольствием уточню или переформулирую в случае необходимости.