Sono un utente di voiceover cieco di mac.
Il nuovo Mail.app
rende difficile copiare l'email del mittente. Mi piacerebbe avere uno script che copia solo l'email del mittente, di uno o più messaggi selezionati.
È possibile?
Sì, AppleScript lo rende facilmente possibile!
Ecco un AppleScript che può farlo:
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
Copierà i mittenti di posta negli Appunti come segue: John Doe <[email protected]>
Lo stesso script senza i nomi:
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
Emette solo gli indirizzi con un delimitatore space
: [email protected] [email protected]
Per il segnale acustico, aggiungi appena beep
prima di end tell
(come ho già fatto sopra).
Due possibili modifiche al codice molto utile di Matthieu:
1. Puoi farlo pronunciare ogni indirizzo mentre lo trova (se questo è utile) usando il comando say
.
2. Alcuni considerano una buona forma preservare ciò che AppleScript's text item delimiters
era prima di cambiarli, quindi ripristinarli alle impostazioni originali, invece di assumere che fosse un carattere nullo ( ""
), specialmente se questo potrebbe essere eseguito mentre altri script sono in esecuzione , poiché è una proprietà globale.
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
Aggiornamento alla risposta di Matthieu , per rimuovere i duplicati e aggiungere una nuova riga tra ciascun indirizzo:
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
Leggi altre domande sui tag applescript script mail.app