Сохранить вложения из Mail.app в зависимости от темы

3

Я пытался написать Applescript, чтобы помочь мне сохранить вложения, но быстро понял, что у меня нет знаний для написания такого сложного сценария. Вот немного фона.

Мы получаем ежедневные отчеты о продажах и выписки рейсов. Формат в теме должно быть: dd.mm.yyyy/"two letter airline code".DSR.Weight.

Т.е. 30.01.2013/VS.DSR.1110KG

В случае манифеста в том же формате заменить DSRна MNFST.

То есть 30.01.2013/VS.MNFST.1110KG.

Тем не менее, существует бесчисленное множество вариаций в предмете, и мы все люди, и иногда ,мы используем их, или даже больше /и т. Д. Наши сотрудники великолепны и работают очень усердно, и последнее, что им нужно, чтобы я занимался их вопросами о форматах предметов ,

Поэтому я пытался заставить Applescript взглянуть на две вещи, которые всегда есть в теме. Авиакомпании двухбуквенный код и слово DSRилиMNFST/MFST/Manifest

У нас есть следующие двухбуквенные коды, иногда строчные, прописные или смешанные.

CV VS SAA TK DHV LH

Теперь DSRпредмет может быть в субъекте несколькими способами, его не всегда разделяют, т.е.30.01.2013/VSDSR1110KG

То же самое относится и к MNFST/MFST/Manifest.

В идеале мне нужен скрипт для работы в двух частях:

DSR:

  1. Проверьте предмет для кода полета и DSR
  2. Сохраните вложение .xls в двухбуквенный код / ​​DSR / Airline
  3. Если файл более поздний (исправление может быть отправлено позднее в тот же день / рано утром следующего дня), добавьте 1, если другое, 2и т. Д.

Т.е. 30.01.2013/VS.DSR.1110KG.xls: Macintosh HD/Users/(My username)/Dropbox/DSR/VS Т.е. 30.01.2013/CV.DSR.1110KG.xls:Macintosh HD/Users/(My username)/Dropbox/DSR/CV

Манифест (иногда файл .xls / .pdf / .zip. Он различается.)

  1. Проверьте предмет для кода полета и (манифест или MNFST или MFST)
  2. Сохраните приложение .xls / .pdf / .zip к Манифестам / Двухбуквенный код авиакомпании.
  3. Если файл более поздний (т. Е. Конфликт файлов с тем же именем. Исправление может быть отправлено позднее в тот же день / рано утром следующего дня.), Добавьте 1, если другое, 2и т. Д.

Т.е. для VS:Macintosh HD/Users/(My username)/Dropbox/Manifests/VS

Из 3 часов, которые я потратил, пытаясь это сделать и никуда не спеша, я подумал, что кто-то может найти это интересным испытанием, и оно будет высоко оценено!

Тем временем я собираюсь читать Applescript в свое свободное время, очень мощный инструмент и экономящий время!

user41766
источник
3
Пожалуйста, приложите свой AppleScript, если вы просите нас просмотреть ваш AppleScript (то, что вы написали до сих пор). Иначе ваш вопрос звучит как просьба к кому-то написать. Возможно, перефразируйте свой вопрос, чтобы искать программное обеспечение или инструменты, которые делают то, что вы хотите?
Глобальный кочевник
Что вам нужно, это кусок регулярного выражения. Это может быть полезно: stackoverflow.com/questions/997828/…
Helium
Обратите внимание, что может быть проще предоставить скрипт для создания почты, чтобы формат был правильным
Марк
Я рекомендую вам либо опубликовать то, что вы пробовали, либо нанять одного из многих талантливых разработчиков в разделе карьеры
adayzdone

Ответы:

4

Сначала создайте правило, которое ищет ЛЮБОЙ Манифест во всех вариациях или DSR

Вот так:

введите описание изображения здесь

Затем сохраните этот скрипт (при условии, что вы используете 10.8 Mountain Lion.) В папке ~ / Library / Application Scripts / com.apple.mail /

    using terms from application "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

И наведите на него «Запустить Applescript».

Если вы используете более раннюю версию Mac OS. Тогда вы сможете разместить сценарий где угодно.

Это оно.

Все мои тесты сработали. Но уже поздно, и я должен быть в кровати. Так что дайте мне знать, если возникнут проблемы, и я постараюсь разобраться. :-)

Стоит отметить, что я добавил метку времени вместо числа для файлов с одинаковыми именами. Это более надежно.

markhunte
источник
Эй, Маркхунте! Вы, вероятно, только что сэкономили мне час / день с этими строками кода! 15 дней моей жизни в году! Большое спасибо. Это работает почти идеально,
user41766
Он извлекает все DSR и Манифесты и помещает их в двухбуквенный код DSR / Airline. Что хорошо, и на самом деле я предпочитаю это так, поскольку манифесты и DSR проходят рядом друг с другом. Ваш сценарий из предыдущей темы, касающейся почты, был моей базой, и я вижу, что и в этом. Я был близок (и забыл прокомментировать диалоговое окно подпапки в вашем оригинале, пришлось поставить кружку чая на мой ключ возврата для 80 000 запросов на сообщения!). Часть обучения! Этот сценарий также очень помог мне понять Applescirpt. PS Добавил в закладки свой блог!
user41766