我正在使用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
答案 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