Экспорт содержимого из почтового сообщения и экспорт в Excel с использованием AppleScript - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь экспортировать письмо с заданным шаблоном, чтобы каждое из полей было помещено в отдельный столбец Excel.

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

Name:
Age:
Email address:
Phone Number:

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

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

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

tell application "Microsoft Excel"
    set LinkRemoval to make new workbook
    set theSheet to active sheet of LinkRemoval
    set formula of range "F1" of theSheet to "Phone Number"
    set formula of range "E1" of theSheet to "Email address"
    set formula of range "D1" of theSheet to "Age"
    set formula of range "C1" of theSheet to "Name"
    set formula of range "B1" of theSheet to "From"
    set formula of range "A1" of theSheet to "Date"

end tell

tell application "Mail"
    set theRow to 2
    set theAccount to "Gmail"
    set theMessages to messages of mailbox "signups" of account "Gmail"
    set mySelection to selection
    set myMail to first item of mySelection
    set myLines to every paragraph of (content of myMail)
    repeat with aMessage in theMessages
        my SetDate(date received of aMessage, theRow, theSheet)
        my SetFrom(sender of aMessage, theRow, theSheet)
        my SetMessageC(content of aMessage, theRow, theSheet)
        my SetMessageD(content of aMessage, theRow, theSheet)
        my SetMessageE(content of aMessage, theRow, theSheet)
        my SetMessageF(content of aMessage, theRow, theSheet)
        set theRow to theRow + 1
    end repeat
end tell

(* set myEvent to ExtractfromRichText(myLines) -- parse the paragraphs to make a record {EName, ERoom,EStart,EEnd}

on ExtractfromRichText(LocalLines) -- convert the rich text with fixed format into a data set
    set AppleScript's text item delimiters to {":", return & linefeed, return, linefeed} -- to remove all rich text end lines
    repeat with aLine in LocalLines
        try
            if text item 1 of aLine contains "Name" then set Name to text item 2 of aLine
            if text item 1 of aLine contains "Age" then set Age to text item 2 of aLine
            if text item 1 of aLine contains "Email Address is" then set emailAddress to text item 2 of aLine
            if text item 1 of aLine contains "Phone Number" then set phoneNumber to text item 2 of aLine
        on error -- unexpected format
            log "error"
            return {EName:""} -- not proper email format for calendar events. return empty name
        end try
    end repeat
    return {Name:Name, Age:Age, Email Address:emailAddress, Phone Number:phoneNumber}
end ExtractfromRichText *)

on SetDate(theDate, theRow, theSheet)
    tell application "Microsoft Excel"
        set theRange to "A" & theRow
        set number format of column 1 to "dd/mm/yyyy"
        set formula of range theRange of theSheet to theDate
    end tell
end SetDate

on SetFrom(theSender, theRow, theSheet)
    tell application "Microsoft Excel"
        set theRange to "B" & theRow
        set formula of range theRange of theSheet to theSender
    end tell
end SetFrom

on SetMessageC(theMessage, theRow, theSheet)
    tell application "Microsoft Excel"
        set AppleScript's text item delimiters to {":", return & linefeed, return, linefeed}
        set theRange to "C" & theRow
        set number format of column 3 to "Text"
        set formula of range theRange of theSheet to theMessage
    end tell
end SetMessageC

on SetMessageD(theMessage, theRow, theSheet)
    tell application "Microsoft Excel"
        set theRange to "D" & theRow
        set number format of column 4 to "Text"
        set formula of range theRange of theSheet to theMessage
    end tell
end SetMessageD

on SetMessageE(theMessage, theRow, theSheet)
    tell application "Microsoft Excel"
        set theRange to "E" & theRow
        set number format of column 5 to "Text"
        set formula of range theRange of theSheet to theMessage
    end tell
end SetMessageE

on SetMessageF(theMessage, theRow, theSheet)
    tell application "Microsoft Excel"
        set theRange to "F" & theRow
        set number format of column 6 to "Text"
        set formula of range theRange of theSheet to theMessage
    end tell
end SetMessageF
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...