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

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

1 ответ1

0

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

    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 была избыточной.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .