AppleScript para comparar contactos en dos grupos y eliminar duplicados de un grupo

1

Quiero crear una aplicación AppleScript para la Libreta de direcciones de Apple (Contactos) que se verá en dos grupos, y si un contacto está en un grupo, lo eliminará del otro grupo.

Específicamente, agrego clientes potenciales a mi libreta de direcciones para poder codificar por colores sus mensajes en Mail.app. Se agregan a un grupo "Trabajo pendiente". Una vez que el proyecto avanza, los agrego a un grupo "Trabajo - Actual". AppleScript compararía los dos, buscaría duplicados y los eliminaría del grupo "Pendiente".

    
pregunta George C 17.08.2012 - 21:32

1 respuesta

3

Aquí hay un script escrito rápidamente. Deberia trabajar. Pero no lo he revisado para ser eficiente.

tell application "Contacts"

    (*get the names of all groups *)
    set theGroupNames to name of groups

    (*choose you current group, the one to keep entries*)
    set text_returnedCurrent to choose from list theGroupNames with prompt "Choose Current Group" default items "Work - Current" without multiple selections allowed

    (*choose you pending group, the one to remove entries*)
    set text_returnedPending to choose from list theGroupNames with prompt "Choose Pending Group" default items "Work - Pending" without multiple selections allowed
    (*Get the people/entries of the Current group*)
    set the_peopleCurrent to people of group (text_returnedCurrent as text)

    (*Get the people/entries of the Pending group*)
    set the_peoplePending to people of group (text_returnedPending as text)

    (*iterate through the people of the Current group*)
    repeat with i from 1 to number of items in the_peopleCurrent

        (*get a person from the  Current group*)
        set thisPersonCurrent to item i of the_peopleCurrent

        (*iterate through ALL the people of the Pending group**)
        repeat with x from 1 to number of items in the_peoplePending

            (*get a person from the  Pending group*)
            set thisPersonPending to item x of the_peoplePending

            (*Check if the person from the Current group is the same person as thisPersonPending*)
            if thisPersonCurrent is equal to thisPersonPending then
                (* if they are remove them.  *)
                remove thisPersonPending from group (text_returnedPending as text)

                (*save the contacts changes*)
                save

            end if
        end repeat

    end repeat

end tell
    
respondido por el markhunte 18.08.2012 - 13:50

Lea otras preguntas en las etiquetas