4 votos

Uso de AppleScript para sincronizar el iPhone en Catalina

Antes de Catalina utilizaba un script para activar una sincronización con mi iPhone y mi iPad - similar a:

tell application "iTunes"
    tell every source whose kind is iPod to update
end tell

Catalina ha eliminado iTunes y los dispositivos iOS se sincronizan ahora con Finder.

¿Qué tengo que llamar para activar una sincronización en Finder?

5voto

oliland Puntos 133

He ampliado dyindude La respuesta de la empresa es hacer un único script</strkeep><strkeep> que abra el Finder, navegue hasta su dispositivo en la barra lateral, espere a que aparezca el botón de sincronización y haga clic en él. Esto supone que su dispositivo se llama iPhone :

tell application "Finder" to open ("/" as POSIX file)

tell application "System Events" to tell outline 1 of scroll area 1 of splitter group 1 of window 1 of application process "Finder"
    set theElements to first UI element of every row whose name is "iPhone"
    repeat with e in theElements
        try
            if name of e is "iPhone" then
                tell e to perform action "AXOpen"
                exit repeat
            end if
        end try
    end repeat
end tell

tell application "System Events" to tell application process "Finder"
    repeat until button "Sync" of splitter group 1 of splitter group 1 of window "iPhone" exists
    end repeat

    click button "Sync" of splitter group 1 of splitter group 1 of window "iPhone"
end tell

1voto

user247077 Puntos 968

Este Applescript hará clic en el botón "Sync" en Finder en una ventana que ya tiene el dispositivo abierto:

tell application "System Events" to tell application process "Finder"
   click button "Sync" of splitter group 1 of splitter group 1 of window "device name"
end tell

El siguiente Applescript navegará por la "ventana 1" del Finder hasta el dispositivo llamado "nombre del dispositivo", donde se encuentra el botón "Sync".

tell application "System Events" to tell outline 1 of scroll area 1 of splitter group 1 of window 1 of application process "Finder"
set theElements to first UI element of every row whose name is "device name"
        repeat with e in theElements
            try
                if name of e is "device name" then
                tell e to perform action "AXOpen"
                exit repeat
                end if
            end try
        end repeat
end tell

1voto

dwt Puntos 11

Me he encontrado con que he tenido que personalizar bastante los scripts anteriores, para a) hacerlo compatible con MacOS Big Sur y b) porque el finder no muestra de forma fiable mi iPhone, incluso cuando están en la misma red wifi. Lo que ha ayudado es reiniciar el AMPLibraryAgent y el AMPDeviceDiscoveryDaemon.

Así, el AppleScript que ahora por fin me funciona de forma fiable es este:

set iPhoneName to "My iPhone Name"

-- Open Finder window
tell application "Finder" to open ("/" as POSIX file)

on isPhoneVisible(iPhoneName)
    tell application "System Events" to tell outline 1 of scroll area 1 of splitter group 1 of window 1 of application process "Finder"
        set theElements to first UI element of every row whose name is iPhoneName
        repeat with e in theElements
            try
                if name of e is iPhoneName then
                    return true
                end if
            end try
        end repeat
    end tell
    return false
end isPhoneVisible

if not isPhoneVisible(iPhoneName) then
    -- Restart daemon that shows the iPhone in the sidebar so it is actually visible
    do shell script "pkill -9 AMPDevicesAgent AMPDeviceDiscoveryAgent"
end if

-- Select iPhone
-- needs retry until the iPhone becomes visible
tell application "System Events" to tell outline 1 of scroll area 1 of splitter group 1 of window 1 of application process "Finder"
    set hasFoundPhone to false
    repeat while not hasFoundPhone
        set theElements to first UI element of every row whose name is iPhoneName
        repeat with e in theElements
            try
                if name of e is iPhoneName then
                    tell e to perform action "AXOpen"
                    set hasFoundPhone to true
                    exit repeat
                end if
            end try
        end repeat
        delay 1
    end repeat
end tell

-- Start sync
tell application "System Events" to tell application process "Finder"
    repeat until button "Sync" of splitter group 1 of splitter group 1 of window iPhoneName exists
        delay 1
    end repeat

    click button "Sync" of splitter group 1 of splitter group 1 of window iPhoneName
end tell

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X