script copia los remitentes de correo electrónico solo en el portapapeles

1

Soy un usuario ciego de voz en off de mac.

El nuevo Mail.app dificulta la copia del correo electrónico del remitente. Me gustaría tener un script que copie solo el correo electrónico del remitente, de uno o más mensajes seleccionados.

¿Es posible?

    
pregunta rossy kk 26.01.2014 - 18:03

3 respuestas

2

Sí, AppleScript lo hace fácilmente posible!

Aquí hay un AppleScript que puede hacer eso:

tell application "Mail"
    set theSenderList to {}
    set theMessages to the selected messages of message viewer 0
    repeat with aMessage in theMessages
        set end of theSenderList to sender of aMessage
    end repeat
    set the clipboard to (theSenderList as rich text)
    beep
end tell

Copiará los remitentes de correo al portapapeles de la siguiente manera: John Doe <[email protected]>

El mismo script sin los nombres:

tell application "Mail"
    set theSenderList to {}
    set theMessages to the selected messages of message viewer 0
    repeat with aMessage in theMessages
        set end of theSenderList to (extract address from sender of aMessage)
    end repeat
    set AppleScript's text item delimiters to " "
    set the clipboard to (theSenderList as string)
    set AppleScript's text item delimiters to ""
    beep
end tell

Solo genera las direcciones con un delimitador space : [email protected] [email protected]

Para el pitido, solo agrega beep antes de end tell (como ya lo hice anteriormente).

    
respondido por el Matthieu Riegler 26.01.2014 - 18:25
0

Dos posibles modificaciones al código muy útil de Matthieu:
    1. Puede hacer que hable cada dirección a medida que la encuentre (si es útil) utilizando el comando say .
    2. Algunos consideran que es una buena forma de conservar lo que AppleScript's text item delimiters era antes de cambiarlos, luego restaurarlos a la configuración original, en lugar de asumir que era un carácter nulo ( "" ), especialmente si esto podría ejecutarse mientras se ejecutan otros scripts , ya que es una propiedad global.

tell application "Mail"
    set theSenderList to {}
    set theMessages to the selected messages of message viewer 0
    repeat with aMessage in theMessages
        set oneAddress to extract address from sender of aMessage
        set end of theSenderList to oneAddress
        say "found: " & oneAddress
    end repeat
    set {prevDelims, AppleScript's text item delimiters} to {AppleScript's text item delimiters, " "}
    set the clipboard to (theSenderList as string)
    set AppleScript's text item delimiters to prevDelims
end tell
    
respondido por el Daniel A. Shockley 27.01.2014 - 16:14
0

Una actualización de respuesta de Matthieu para eliminar duplicados y agregar una nueva línea entre cada dirección:

tell application "Mail"
    set theSenderList to {}
    set theMessages to the selected messages of message viewer 0
    repeat with aMessage in theMessages
        set theSender to sender of aMessage
        if theSender is not in theSenderList then
            set end of theSenderList to theSender
            set end of theSenderList to "
"
        end if
    end repeat

    set the clipboard to (theSenderList as rich text)
    beep
end tell
    
respondido por el Ashley Mills 09.10.2018 - 15:29

Lea otras preguntas en las etiquetas