Reputation: 5922
I am using this AppleScript, that intends to activate QuickTime on OS X and automatically start recording audio.
When running the debug in Automator, the script seems to suddenly stop at the line "set lastLength to duration of x"
, and throws the error:
"AppleEvent handler failed".
What may be wrong with the script?
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
Upvotes: 0
Views: 817
Reputation: 1489
If you save the following as a stay open application in Script Editor, when you run the application, it will create a new audio recording and keep checking to see if you have manually stopped the recording. Once you do stop the recording, it will export the file, open it, and quit. If you really want it as an Automator action, just have the Automator action open the script application.
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
Upvotes: 1