
Estoy intentando buscar el resultado de un AppleScript para determinar si aparece una cadena.
Ejecutando este código:
tell application "System Events" to tell process "Box Sync" to ¬
tell menu bar item 1 of menu bar 2
click
get menu items of menu 1
set myStatus to menu items of menu 1
set myResult to result
return myResult
end tell
Resultados en:
{menu item "Files Synced" of menu 1 of menu bar item 1 of menu bar 2 of application process "Box Sync" of application "System Events", menu item 2 of menu 1 of menu bar item 1 of menu bar 2 of application process "Box Sync" of application "System Events", menu item "Pause" of menu 1 of menu bar item 1 of menu bar 2 of application process "Box Sync" of application "System Events", menu item 4 of menu 1 of menu bar item 1 of menu bar 2 of application process "Box Sync" of application "System Events", menu item "Open Box Sync Folder" of menu 1 of menu bar item 1 of menu bar 2 of application process "Box Sync" of application "System Events", menu item "Open Box.com" of menu 1 of menu bar item 1 of menu bar 2 of application process "Box Sync" of application "System Events", menu item 7 of menu 1 of menu bar item 1 of menu bar 2 of application process "Box Sync" of application "System Events", menu item "Preferences…" of menu 1 of menu bar item 1 of menu bar 2 of application process "Box Sync" of application "System Events", menu item 9 of menu 1 of menu bar item 1 of menu bar 2 of application process "Box Sync" of application "System Events", menu item "Quit" of menu 1 of menu bar item 1 of menu bar 2 of application process "Box Sync" of application "System Events"}
Ahora me gustaría buscar este resultado para ver si "Archivos sincronizados" está presente. sin embargo corriendo
myResult contains "Files Synced"
Me da una copia impresa del resultado completo nuevamente. ¿Cómo busco este resultado para determinar si hay una cadena presente?
Respuesta1
Obtuviste la misma impresión ambas veces porque no eliminaste la return myResult
línea después de la primera ejecución. return
siempre finalizará un script cuando llegue a este comando.
▸ Además, cambie esto:
set myStatus to menu items of menu 1
a esto:
set myResult to name of menu items of menu 1
▸ Eliminar esta línea:
get menu items of menu 1
y esta línea:
set myResult to result
(Literalmente no están haciendo nada).
Su guión final se verá así:
tell application "System Events" to tell process "Box Sync" to ¬
tell menu bar item 1 of menu bar 2
click
set myResult to name of menu items of menu 1
myResult contains "Files Synced"
end tell
que regresará true
o false
.
Alternativamente, sin las declaraciones explícitas de variables (y usando la variable predefinida de AppleScript result
):
tell application "System Events" to tell process "Box Sync" to ¬
tell menu bar item 1 of menu bar 2
click
get the name of menu items of menu 1
result contains "Files Synced"
end tell
Si necesitas alguna aclaración o tienes alguna otra consulta, no dudes en dejar un comentario y me pondré en contacto contigo. Considere seleccionar esta como su respuesta aceptada si ayuda a resolver su problema.