Salva gli allegati da Mail.app in base all'oggetto

3

Ho cercato di scrivere un file Applescript per aiutarmi a salvare gli allegati, ma mi sono reso conto rapidamente che non ho le conoscenze per fare uno script così difficile. Ecco alcuni sfondi.

Riceviamo rapporti sulle vendite giornaliere e manifesti di voli. Il formato nell'oggetto dovrebbe essere: dd.mm.yyyy/"two letter airline code".DSR.Weight .

vale a dire. 30.01.2013/VS.DSR.1110KG

Nel caso del manifest, nello stesso formato, sostituisci DSR con MNFST .

vale a dire. 30.01.2013/VS.MNFST.1110KG .

Ci sono tuttavia innumerevoli variazioni sull'argomento, e siamo tutti umani, e talvolta , è usato, o più / ecc. Il nostro staff è fantastico e lavora molto duramente, e l'ultima cosa di cui hanno bisogno per fare è nel loro caso sui formati degli argomenti.

Quindi stavo cercando di ottenere un Applescript per guardare le due cose che sono sempre nell'argomento. Il codice due lettere della compagnia aerea e la parola DSR o MNFST/MFST/Manifest

Abbiamo i seguenti due codici lettera, a volte in basso, in maiuscolo o in un mix.

CV VS SAA TK DHV LH

Ora DSR può essere nell'oggetto in un certo numero di modi, non è sempre separato, vale a dire. 30.01.2013/VSDSR1110KG

Lo stesso vale per MNFST/MFST/Manifest .

Idealmente, ho bisogno che uno script funzioni in due parti:

DSR:

  1. Verifica l'oggetto per il codice di volo e DSR
  2. Salva l'allegato .xls in / DSR / Codice lettera due linee aeree
  3. Se File è più recente (potrebbe essere inviata una correzione più tardi quel giorno / al mattino presto.), aggiungi 1 , se un'altra 2 ecc.

vale a dire. 30.01.2013/VS.DSR.1110KG.xls : Macintosh HD/Users/(My username)/Dropbox/DSR/VS Cioè 30.01.2013/CV.DSR.1110KG.xls : Macintosh HD/Users/(My username)/Dropbox/DSR/CV

Manifest (a volte un file .xls / .pdf / .zip. Varia.)

  1. Controlla l'oggetto per il codice di volo e (Manifest o MNFST o MFST)
  2. Salva l'allegato .xls / .pdf / .zip in Manifesti / Codice compagnia aerea con due lettere
  3. Se il file è più recente (ovvero un conflitto di file con lo stesso nome. Una correzione potrebbe essere inviata più tardi quel giorno / al mattino successivo.), aggiungi 1 , se un'altra 2 ecc.

vale a dire. Per VS : Macintosh HD/Users/(My username)/Dropbox/Manifests/VS

Dalle 3 ore che ho trascorso provando questo e arrivando da nessuna parte velocemente, ho pensato che qualcuno potrebbe trovare questa una sfida interessante, e sarebbe molto apprezzato!

Nel frattempo, leggerò su Applescript nel mio tempo libero, strumento molto potente e risparmio di tempo!

    
posta user41766 13.02.2013 - 21:54
fonte

1 risposta

4

Crea innanzitutto una regola che cerchi QUALSIASI del Manifest in tutte le varianti o DSR

Like So:

Quindisalvaquestoscript(supponendochetustiausando10.8MountainLion.)Nellacartella~/Library/ApplicationScripts/com.apple.mail/

usingtermsfromapplication"Mail"
    on perform mail action with messages theMessages for rule theRule

        set codeList to {"CV", "VS", "SAA", "TK", "DHV", "LH"}
        set subFolder to ""
        set theDate to do shell script "date +%Y_%m_%d_%H%M%S"
        --set ruleName to name of theRule





        -- The folder to save the attachments in (must already exist)
        tell application "Finder" to set attachmentsFolder to ((path to home folder as text) & "Dropbox:DSR") as text

        tell application "Mail"

            repeat with eachMessage in theMessages
                set theSubject to subject of eachMessage
                repeat with i from 1 to number of items in codeList
                    set this_item to item i of codeList
                    if theSubject contains this_item then

                        set subFolder to this_item

                    end if
                end repeat
                if (count of (eachMessage's mail attachments)) > 0 then


                    try

                        tell application "Finder"

                            if not (exists folder subFolder of folder attachmentsFolder) then
                                make new folder at attachmentsFolder with properties {name:subFolder}
                            end if
                        end tell
                        -- Save the attachment
                        repeat with theAttachment in eachMessage's mail attachments

                            set originalName to name of theAttachment
                            set savePath to attachmentsFolder & ":" & subFolder & ":" & originalName

                            tell application "Finder"

                                if (exists file originalName of folder subFolder of folder attachmentsFolder) then
                                    set savePath to attachmentsFolder & ":" & subFolder & ":" & theDate & "_" & originalName
                                end if
                            end tell
                            try
                                save theAttachment in file (savePath)



                            end try
                        end repeat


                    end try

                end if

            end repeat

        end tell
    end perform mail action with messages
end using terms from

E punta su Esegui Applescript.

Se stai usando un Mac OS precedente. Allora dovresti essere in grado di posizionare lo script dove vuoi.

Ecco.

I miei test hanno funzionato tutti. Ma è tardi e dovrei essere a letto. Quindi fammi sapere se qualche problema e cercherò di ordinare. : -)

L'unica cosa da notare è che ho aggiunto un timestamp invece di un numero per i file con lo stesso nome. È più affidabile.

    
risposta data 14.02.2013 - 02:27
fonte

Leggi altre domande sui tag