我試圖製作一個AppleScript,它將同步並彈出我的iPod,而不必在腳本啓動後提供任何輸入。基本的腳本是:如何判斷通過AppleScript完成iPod同步的時間
set ipodList to {}
tell application "iTunes"
try
set ipodList to (name of every source whose kind is iPod)
end try
repeat with ipodName in ipodList
update ipodName
eject ipodName
end repeat
end tell
與該腳本的問題是,它會導致iTunes將立即嘗試正在同步開始後,推出iPod,所以正在同步尚未完成。這會導致有時會出現一個,有時會出現兩個對話窗口。一個窗口顯示「iTunes正在同步iPod,你確定要彈出它嗎?」並有兩個按鈕,「取消」和「彈出」。另一個窗口顯示「iPod nanoBot」不能被彈出,因爲它包含另一個應用程序正在使用的文件。「並且只有一個「OK」按鈕。只需點擊「彈出」和「確定」,iTunes就可以完成iPod的同步並彈出。
我想用UI腳本來點擊這兩個按鈕,這樣iTunes就可以做我想做的事。事實上,下面的腳本似乎做什麼,我想:
tell application "System Events"
tell process "iTunes"
try
click button "Eject" of window 1
end try
try
click button "OK" of window 1
end try
end tell
end tell
不過,我測試了從第二AppleScript的運行它的代碼的第二位。第一個AppleScript的執行掛在彈出命令上,直到我點擊兩個對話框(如果只是掛在更新命令上,所有這些煩惱都會被解決......)。
是否有任何方式點擊與彈出命令相同的腳本中的對話框?或者從第一個啓動第二個Applescript的方式,讓它繼續檢查這些對話框窗口,然後點擊它們?還是隻有一些簡單的解決方案來解決這個問題?
[編輯:我應該補充說,我目前所做的只是將iPod與更新命令同步,暫停幾秒鐘,然後用Finder彈出iPod(我已將它設置爲磁盤驅動器)。這種方法的問題在於,沒有辦法告訴同步完成時間,如果沒有,腳本不會彈出iPod並引發錯誤。]
我真的發現我可以點擊對話窗口,如果我用Finder彈出而不是iTunes,但是這個解決方案好多了! – 2012-02-12 03:30:03