用于QuickTime录制的AppleScript:" AppleEvent处理程序失败"

时间:2016-05-16 17:18:49

标签: macos applescript

我正在使用this AppleScript,它打算在OS X上激活QuickTime并自动开始录制音频。

在Automator中运行调试时,脚本似乎突然停在"set lastLength to duration of x"行,并抛出错误:

  

" AppleEvent处理程序失败"。

脚本可能有什么问题?

on run {input, parameters}

    tell application "QuickTime Player"
        activate
        set x to new audio recording
        start x
        delay 1
        set lastLength to duration of x
        delay 1
        set newLength to duration of x
        try
            repeat while lastLength is not equal to newLength
                delay 1
                set lastLength to newLength
                set newLength to duration of x
            end repeat
        end try --  display alert name of document 1
        set v to file of front document
        set audioNotePath to "/Users/me/Dropbox/Inbox/- Voice Memos"
        set thePath to POSIX path of audioNotePath
        set dateVariable to do shell script "date '+%m.%d.%y'"
        set timeVariable to do shell script "date +'%l.%M %p'"
        tell x to activate
        delay 1
        tell application "System Events"
            keystroke "w" using {command down}
            delay 1
            keystroke thePath
            delay 1
            keystroke return
            delay 1
            keystroke "AudioNote "
            keystroke dateVariable
            keystroke " "
            keystroke timeVariable
            delay 1
            click pop up button "Format:" of group 1 of sheet 1 of window "Untitled" of application process "QuickTime Player" of application "System Events"
            delay 1
            key code 125
            delay 1
            keystroke return
            delay 1
            keystroke return
            delay 1
            open thePath
        end tell

        return input
    end tell
end run

1 个答案:

答案 0 :(得分:1)

如果在脚本编辑器中将以下内容保存为保持打开的应用程序,则在运行应用程序时,它将创建新的录音并继续检查是否已手动停止录制。一旦停止录制,它将导出文件,打开它并退出。如果您确实希望将其作为Automator操作,只需让Automator操作打开脚本应用程序即可。

property savePath : "Desktop:" --update e.g.,: "Dropbox:Inbox:- Voice Memos:"
property defaultName : "AudioNote"

my start_recording()

on start_recording()
    tell application "QuickTime Player"
        activate
        tell (new audio recording) to start
    end tell
end start_recording

on export_recording()
    set homeFolder to (path to home folder) as string
    set dateTimeStamp to do shell script "date '+%m%d%y-%H%M%S'"
    set audioNotePath to (homeFolder & savePath & defaultName & " " & dateTimeStamp & ".m4a")
    tell application "QuickTime Player"
        tell document 1
            export in file audioNotePath using settings preset "Audio Only"
            close saving no
        end tell
    end tell
    return audioNotePath
end export_recording

on open_recording(audioNotePath)
    tell application "QuickTime Player" --you could change this if you wanted to open the file in another app
        repeat --keep trying until the file is exported and ready to be opened
            try
                delay 1
                open file audioNotePath
                exit repeat
            end try
        end repeat
    end tell
end open_recording

on idle
    try
        tell application "QuickTime Player" to set documentName to name of document 1
        if (documentName ≠ "Audio Recording") then
            set audioNotePath to my export_recording()
            my open_recording(audioNotePath)
            quit
        end if
    end try
    return 1
end idle