0 votos

Applescript para agregar remitente del mensaje a un grupo específico en Contactos

Estoy tratando de configurar un Applescript para agregar el remitente de un mensaje seleccionado en Apple Mail a un grupo específico en la aplicación de Contactos. Al reconfigurar el código proporcionado en esta respuesta, elaboré lo siguiente pero no está funcionando. ¿Alguna sugerencia sobre qué estoy haciendo mal?

    tell application "Mail"
    set theMessage to selection
    tell application "Contacts"
        set theGroup to "_TEST"
    end tell
    set theSender to sender of theMessage
    tell application "Contacts"
        set theName to name of theSender
        set thePerson to make new person with properties {first name:name of theSender}
        add thePerson to theGroup
    end tell
    tell application "Contacts" to save
    end tell

3voto

Ged Byrne Puntos 481

Intente esto, creará un contacto con el nombre, apellido y dirección de correo electrónico adecuados:

tell application "Mail"
set theMessages to selection
if theMessages is not {} then -- check empty list
    set theSenderName to extract name from sender of item 1 of theMessages
    set nameArray to my split(theSenderName, " ")
    set theFirstName to item 1 of nameArray
    set theLastName to last item of nameArray
    set theEmail to extract address from sender of item 1 of theMessages

    tell application "Contacts"
        set theGroup to group "_TEST"
        set thePerson to make new person with properties {first name:theFirstName, last name:theLastName}
        make new email at end of emails of thePerson with properties {label:"Work", value:theEmail}
        add thePerson to theGroup
        save
    end tell
    end if
end tell

on split(theString, theDelimiter)
    set oldDelimiters to AppleScript's text item delimiters
    set AppleScript's text item delimiters to theDelimiter
    set theArray to every text item of theString
    set AppleScript's text item delimiters to oldDelimiters
    return theArray
end split

Hubo algunos problemas con tu intento original, así es como trabajé en torno a ellos.

  • Para empezar, selection te da una lista de elementos (incluso si es solo una lista de uno), así que necesitas elegir el primer elemento de la selección.
  • En Mail, sender te da una cadena no muy útil con el nombre y el correo electrónico combinados. extract name from y extract address from te dan cadenas útiles.
  • La cadena de nombre es el nombre completo, pero Contacts.app espera nombres y apellidos separados, así que dividí esa cadena (usando una función práctica encontrada aquí) para hacer una suposición decente de nombres y apellidos. Esto puede dar resultados inesperados con nombres de correo electrónico formateados de manera extraña.

Si tienes algún problema con este, házmelo saber y veré si puedo solucionarlo. En el futuro, puede ser útil ejecutar los scripts en Editor de AppleScript y revisar el Registro de eventos para obtener detalles sobre lo que está fallando (los mensajes de error son útiles, aunque sea para poner en Google o dar a otros un punto de partida para resolver tu problema).

0 votos

Eso funcionó, gracias. La sugerencia del registro de errores también es útil, gracias. Tu solución funcionó, pero recibo un error de "valor faltante" cuando lo ejecuto en el editor.

0 votos

Sí, eso no es tanto un error como simplemente no tener un valor de retorno. El registro de eventos de AppleScript imprime el valor de retorno de la última instrucción. En este caso, es solo save, que no devuelve nada, si se guarda con éxito. No hay de qué preocuparse, pero parece ominoso si no sabes por qué está ahí.

0 votos

Gracias por la aclaración, poco a poco tratando de entender la sintaxis de AS. ¡Eso ayuda!

1voto

san Puntos 81

Tengo una versión más extensa de esta idea que presenta una lista de grupos y te permite seleccionarlos; también maneja múltiples mensajes. Puedes agregar el remitente de varios mensajes diferentes a un solo grupo, o puedes agregar uno o más remitentes a varios grupos.

Mi script utiliza un atajo de teclado para agregar el remitente a tus Contactos: Cmd-Shift-Y (ejecutado por el script, ¡pero apuesto a que no sabías que existía un atajo de teclado que hacía esto! Está en el menú Mensaje cuando se selecciona un mensaje).

tell application "Mail" to set theSelection to selection
  if theSelection is {} then return beep 2
  if length of theSelection = 1 then
    set thePrompt to "Seleccione el grupo (o grupos) al que agregar el remitente del mensaje seleccionado."
  else
    set thePrompt to "Seleccione el grupo (o grupos) al que agregar los remitentes de los mensajes seleccionados."
  end if
tell application "Contacts" to set theList to name of groups
set R to choose from list theList with prompt thePrompt with multiple selections allowed
if R is false then return

tell application "Mail"
    activate
    set theSenders to {}
    repeat with thisMessage in theSelection
        set theSender to extract name from sender of thisMessage
        copy theSender to the end of theSenders
    end repeat
    tell application "System Events" to keystroke "y" using {shift down, command down}

tell application "Contacts" activate repeat with thisSender in theSenders delay 0.1 set thePersons to (people whose value of emails contains (thisSender as text)) if (count thePersons) = 1 then repeat with theGroupName in items of R add (item 1 of thePersons) to group theGroupName end repeat else repeat with theGroupName in items of R repeat with thisPerson in thePersons add thisPerson to group theGroupName

0 votos

Nada sucede cuando ejecuto tu script, aparte de que se abre Contactos.

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