Istnieje wiele sposobów odnosi się do obiektów w hierarchii obiektów: nazwa jest tylko jeden sposób (patrz AppleScript Language Guide: Reference Forms Twój skrypt korzysta już jeden z innych sposobów:.. Index
tell menu bar 1
To się odnosząc się do paska menu przez jego indeks. (w przeciwieństwie do wielu języków programowania, pozycje na liście w AppleScript są indeksowane począwszy od 1 zamiast 0) poniższy skrypt powinien osiągnąć to, co chcesz:
tell application "Twitter" to activate
tell application "System Events"
tell application process "Twitter"
click menu item "Empty Cache" of menu "Twitter" of menu bar item "Twitter" of menu bar 1
delay 1
--click button "Empty Cache" of front window
click button "Empty Cache" of window 1
end tell
end tell
tell application "Twitter"
quit
delay 1
activate
end tell
Możesz prawdopodobnie skomentować linie delay 1
; Dodałem te, aby spowolnić procedurę, aby łatwiej było zobaczyć, co się dzieje.
Kiedy próbujemy dowiedzieć się, jak "dostać się" do obiektu w aplikacji za pomocą AppleScript, często uważam, że pomocne jest użycie AppleScript Editor do tworzenia małych skryptów zapytań, aby spróbować odkryć więcej informacji o aplikacji. Na przykład w serwisie Twitter wybrałem opcję Twitter> Empty Cache, aby wyświetlić okno Empty Cache. Potem pobiegł następujący skrypt:
tell application "Twitter"
set theWindows to every window -- get a list of windows
(* turns out there's only one window listed,
so get the first item in the list *)
set theWindow to first item of theWindows
-- get the properties of the window
properties of theWindow
end tell
Ten skrypt zwrócony następujący wynik:
{closeable:true, zoomed:false, class:window, index:1,
visible:true, name:missing value, miniaturizable:true,
id:28551, miniaturized:false, resizable:true,
bounds:{-618, 76, -128, 756}, zoomable:true}
Nie musisz podać tytuł okna (chociaż lepiej jeśli nie); możesz po prostu zrobić "kliknij przycisk" Opróżnij pamięć podręczną "okna 1'' – fireshadow52
Możesz nawet zrobić" ... okna przedniego ", jeśli chcesz. – fireshadow52