AppleScript - Расширенные функции для улучшения шагов / сокращения кода

326
Jules

Я пытаюсь уменьшить количество шагов и увеличить производительность для моего appleScript, я просто подумал, есть ли некоторые общие функции, которые я могу использовать.

Вот пример сценария ...

tell application "QuickTime Player" activate  -- Get the iCloud file path to avoid permission error set filePath to "Macintosh HD:Users:jm:Library:Mobile Documents:com~apple~QuickTimePlayerX:Documents:movie.wav"  set f to a reference to file filePath -- Get a handle to the initial window set windowID to id of first window whose name = "Audio Recording" set audio to first document whose name = (get name of first window whose id = windowID)  tell audio stop end tell -- Get second handle to new titled window set windowID2 to id of first window whose name = "Untitled" set audio2 to first document whose name = (get name of first window whose id = windowID2)  tell audio2 -- Save audio file save audio2 in f end tell  -- Get third handle to new titled window set windowID3 to id of first window whose name = "movie.wav.qtpxcomposition" set audio3 to first document whose name = (get name of first window whose id = windowID3) tell audio3 close audio3 saving no end tell   end tell 

Это второй скрипт, который вызывается после скрипта, который начинает запись.

0
Почему у вас есть операторы, которые сначала получают идентификатор окна по его имени, а затем операторы, которые получают имя того же окна по его идентификатору? Это кажется немного излишним. CJK 6 лет назад 0
Хороший вопрос, спасибо Jules 6 лет назад 0

1 ответ на вопрос

0
CJK

Я могу сократить ваш сценарий до этого:

 tell application "QuickTime Player" -- Get the iCloud file path to avoid permission error set filePath to "Macintosh HD:Users:jm:Library:Mobile Documents:com~apple~QuickTimePlayerX:Documents:movie.wav"  -- Get a handle to the initial window stop the document named "Audio Recording"  -- Get second handle to new titled window save the document named "Untitled" in filePath  -- Get third handle to new titled window close the document named "movie.wav.qtpxcomposition" saving no end tell 

Как я уже говорил в моем комментарии, это излишнее, чтобы получить окно - х idпо ИТС name, только потом извлечь его nameиз этого id. Вы можете ссылаться на documentимя, которое у вас уже есть (если документ с таким именем не существует, он выдаст ошибку; но то же самое относится и к вашему исходному сценарию). Чтобы избежать этого, вы можете сначала проверить, существует ли он:

 tell document named "Audio Recording" to if it exists then stop 

Эта activateкоманда казалась ненужной, поскольку ни одна из следующих команд не требует, чтобы QuickTime был в фокусе.

Наконец, переменная fбыла избыточной.