Чтобы ответить на ваш конкретный вопрос о том, как 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
свойству a 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 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 select the last Finder window end tell
open
Команда, очевидно, открывает новый Finder окно в указанном месте, но и делает, что новый Finder Окно передней Finder окна .
Из этого легче увидеть, что первый блок set
операторов предназначен для одного окна Finder ; и второй блок для другого.
Надеюсь, я обратился к вашему запросу напрямую и предоставил объяснение, которое имеет смысл. Простите, если что-то из того, что я написал, звучит покровительственно: я старался избегать предположений о том, что вы делаете и не знаете об AppleScript, несмотря на доказательства того, что вы явно не новичок (репутация 2.5K в Super User). С другой стороны, если что-то из того, что я написал, является двусмысленным или плохо объясненным, дайте мне знать, и я с радостью уточнить или переформулировать в случае необходимости.