nooneclose Posted October 25, 2018 Posted October 25, 2018 (edited) Hello again everyone, I am trying to make a simple bot/AI to help me at work. I need it to read the subject line of emails, open them if a certain subject line is found, and then copy the contents of the said email and paste it in a different program. Can the Autoit outlook UDF help me achieve this? Also, I have tried the Outlook UDF and so far I have only figured out how to find all the unread emails (thanks to one of water's example scripts. @water you are a genius just saying). I am very new to this UDF and would love any help that would guide me into making this bot/AI a reality at work. Edited November 1, 2018 by nooneclose noidea11 1
Moderators JLogan3o13 Posted October 25, 2018 Moderators Posted October 25, 2018 @nooneclose so what have you tried on your own? Showing what code you have tried will always result in your receiving more assistance. "Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball How to get your question answered on this forum!
nooneclose Posted October 25, 2018 Author Posted October 25, 2018 @JLogan3o13 This is all that I have looked at and tried so far. I would say 95% is just Water's code that I have copied and tested. expandcollapse popup#include <OutlookEX.au3> ;Allows the outlook functions AutoItSetOption('MouseCoordMode', 0) ;Sets the script to accept coordinates off the program window and not the screen AutoItSetOption('SendKeyDelay', 10) ;Defines the time it takes to send text to the software/program ;Closes the script if "End" is pressed $oMyError = ObjEvent("AutoIt.Error","MyErrFunc") HotKeySet("{END}", "Terminate") Func Terminate() MsgBox($MB_ICONINFORMATION, "DEATH", "Script Stoped!") Exit EndFunc ;***************************************************************************************************************************************************************** ;Script has started ;***************************************************************************************************************************************************************** Sleep(2000) MsgBox($MB_ICONINFORMATION, "WO_to_FTE_Bot", "Script Started!") Sleep(1500) ; ***************************************************************************** ; Create test environment ; ***************************************************************************** Global $oOutlook = _OL_Open() If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF", "Error creating a connection to Outlook. @error = " & @error & ", @extended = " & @extended) ; ***************************************************************************** ; List all accounts available for the current profile ; ***************************************************************************** Global $aResult = _OL_AccountGet($oOutlook) If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF: _OL_AccountGet Example Script", "Error getting list of accounts for the current profile. @error = " & @error & ", @extended = " & @extended) _ArrayDisplay($aResult, "OutlookEX UDF: _OL_AccountGet Example Script", "", 0, "|", "|AccountType|Displayname|SMTPAddress|Username|Account object|AutoDiscoverConnectionMode|ExchangeConnectionMode|ExchangeMailboxServerName|ExchangeMailboxServerVersion") ; ***************************************************************************** ; Get the first mail in the inbox and display the mail headers ; ***************************************************************************** ; Access the inbox Global $aFolder = _OL_FolderAccess($oOutlook, "", $olFolderInbox) If @error Then Exit MsgBox(48, "", "@error = " & @error & ", @extended: " & @extended) ; Find all items in the inbox Global $aItems = _OL_ItemFind($oOutlook, $aFolder[1], $olMail, "", "", "", "EntryID,Subject", "", 1) If Not IsArray($aItems) Then Exit MsgBox(48, "", "@error = " & @error & ", @extended: " & @extended) ; Get the mail headers of the first mail Global $sMailHeaders = _OL_MailheaderGet($oOutlook, $aItems[1][0]) If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF: _OL_MailheaderGet Example Script", "Error retrieving mail headers of mail with subject '" & $aItems[1][1] & "'. @error = " & @error & ", @extended: " & @extended) MsgBox(64, "OutlookEX UDF: _OL_MailheaderGet Example Script", "Mail headers of mail with subject '" & $aItems[1][1] & "'." & @CRLF & @CRLF & $sMailHeaders) ;------------------------------------------------------------------------------------------------------------------------------------------------ ; Example 4 - Get unread mails from a folder and all subfolders ;------------------------------------------------------------------------------------------------------------------------------------------------ $aItems = _OL_ItemFind($oOutlook, "*\Outlook-UDF-Test", $olMail, "[UnRead]=True", "", "", "Subject,Body", "", 1) If IsArray($aItems) Then _ArrayDisplay($aItems, "OutlookEX UDF: _OL_ItemFind Example Script - Unread mails") Else MsgBox(48, "OutlookEX UDF: _OL_ItemFind Example Script", "Could not find an unread mail. @error = " & @error & ", @extended: " & @extended) EndIf _OL_Close($oOutlook) I still do not know enough about this UDF, and I can not find a function to open and or read an email yet. If they do exist they either do not have clear names or do not do just those operations. Sadly it is looking like there is not a straightforward answer to my question/s or I am easily missing it because I do not understand this UDF yet. Again, I want to make something bot/AI that can read a subject line pick certain emails based on the subject line, open the email and copy and paste certain contents of the email into another program. (this would greatly help make a daily task for me at work easier)
water Posted October 26, 2018 Posted October 26, 2018 Replace _OL_MailHeaderGet with _OL_ItemGet to retrieve the subject of a mail. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
nooneclose Posted October 26, 2018 Author Posted October 26, 2018 (edited) @water The code below which I changed per your request finds the first email in my inbox and displays the subject line. However, I want to read all emails one at a time and copy and past certain contents. Only the emails that are unread with a certain subject line. (subject line of "blank request") ; Get the mail headers of the first mail Global $sMailHeaders = _OL_ItemGet($oOutlook, $aItems[1][0]) If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF: _OL_MailheaderGet Example Script", "Error retrieving mail headers of mail with subject '" & $aItems[1][1] & "'. @error = " & @error & ", @extended: " & @extended) MsgBox(64, "OutlookEX UDF: _OL_MailheaderGet Example Script", "Mail headers with the subject of:'" & $aItems[1][1] & "'." & @CRLF & @CRLF & $sMailHeaders) if I modify these lines could I get the first of those results? $aItems = _OL_ItemFind($oOutlook, "*\Outlook-UDF-Test", $olMail, "[UnRead]=True", "", "", "Subject,Body", "", 1) If IsArray($aItems) Then _ArrayDisplay($aItems, "OutlookEX UDF: _OL_ItemFind Example Script - Unread mails") Else MsgBox(48, "OutlookEX UDF: _OL_ItemFind Example Script", "Could not find an unread mail. @error = " & @error & ", @extended: " & @extended) EndIf What I want the code to do: 1. open outlook or a connection to outlook 2. search for any unread email with a certain subject ("blank request") in a certain inbox (inbox is labeled "requests") 3. open that email and copy certain information (not all) and paste that into another program. 4. Leave that open email and search for the next unread email with the subject line of "blank request" 5. Repeat 3, and 4 until the program is closed. Am I asking for too much from Autoit? Or am I not being clear? Edited October 26, 2018 by nooneclose
water Posted October 26, 2018 Posted October 26, 2018 You have already solved 1) and 2). 2) returns all unread mails. But if you loop through the returned array you can ignore all entries with the "wrong" subject. 3) You already have the mail body in the returned array. Select the needed information from there and paste the array element to the other program 4) Why would you need to leave th processed mail open? 5) Simply to do with a loop My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
nooneclose Posted October 26, 2018 Author Posted October 26, 2018 (edited) Thank you for getting back with me @water This is what I have so far. ; ***************************************************************************** ; Create test environment ; ***************************************************************************** Global $oOutlook = _OL_Open() If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF", "Error creating a connection to Outlook. @error = " & @error & ", @extended = " & @extended) ; ***************************************************************************** ; List all accounts available for the current profile ; ***************************************************************************** Global $aResult = _OL_AccountGet($oOutlook) If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF: _OL_AccountGet Example Script", "Error getting list of accounts for the current profile. @error = " & @error & ", @extended = " & @extended) _ArrayDisplay($aResult, "OutlookEX UDF: _OL_AccountGet Example Script", "", 0, "|", "|AccountType|Displayname|SMTPAddress|Username|Account object|AutoDiscoverConnectionMode|ExchangeConnectionMode|ExchangeMailboxServerName|ExchangeMailboxServerVersion") ; ***************************************************************************** ; Get the first mail in the inbox and display the mail headers ; ***************************************************************************** ; Access the inbox Global $aFolder = _OL_FolderAccess($oOutlook, "", $olFolderInbox) If @error Then Exit MsgBox(48, "", "@error = " & @error & ", @extended: " & @extended) ; Find all items in the inbox Global $aItems = _OL_ItemFind($oOutlook, "*\Outlook-UDF-Test", $olMail, "", "", "", "EntryID,Subject", "", 1) If Not IsArray($aItems) Then Exit MsgBox(48, "", "@error = " & @error & ", @extended: " & @extended) ; Get the mail headers of the first mail Global $sMailHeaders = _OL_ItemGet($oOutlook, $aItems[1][0]) If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF: _OL_MailheaderGet Example Script", "Error retrieving mail headers of mail with subject '" & $aItems[1][1] & "'. @error = " & @error & ", @extended: " & @extended) MsgBox(64, "OutlookEX UDF: _OL_MailheaderGet Example Script", "Mail headers with the subject of:'" & $aItems[1][1] & "'." & @CRLF & @CRLF & $sMailHeaders) ; Display the information and contents of the email _ArrayDisplay($sMailHeaders, "") _OL_Close($oOutlook) I was able to figure out how to access the contents of the array with the _ArryDisplay (is this the correct way to do this?) (PS. My browser glitched so please forgive the lack of format on this reply It will not let me tab or enter) And yes so far task 1 & 2 are done. A connection is created and I find all the unread emails in the specific folder. I think I did what you said and accessed the mail body in the returned array with _Arraydisplay. (Please tell me if I did it wrong) As for "4) Why would you need to leave the processed mail open?" I do not want to keep any of the processed emails open. I am sorry if what I said was not clear. I want to mark each processed email as read once the information has been copied and pasted and then close it and then move on to the next unread email. (does this make sense?) As for the looping until all unread emails with the subject line of "request" have been processed and mark as read. Which loop would you suggest here? For loop or a while? Also, I wanted to say thank you very much for the UDF you made. Just to have the possibility of this becoming a real thing is sweet music to my ears. I'm sure I am not the only person who would say your work is more than greatly appreciated. Edited October 26, 2018 by nooneclose
nooneclose Posted October 26, 2018 Author Posted October 26, 2018 I forgot to ask this in the last post but is there a way to extend the size of the array for the body in the array? (row 9, from 0-9) when I use _ArrayDisplay and look at the body portion it does not contain the entire body of the email. It is very close though, It only cuts off two sentences worth of info. I notice that row28 which holds the HTMlBody has a bigger element size. Where are these values located so that I may change them? Like always any help would be greatly appreciated.
water Posted October 26, 2018 Posted October 26, 2018 As _OL_ItemFind returns the EntryID we need to translate it to the corresponding object. $oItem = $oOL.Session.GetItemFromID($aItems[1][0], Default) ; retrieve the items object $oItem.Unread = False ; Set the item to read My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
water Posted October 26, 2018 Posted October 26, 2018 (edited) According to the help information in the UDF _OL_Itemfind returns a 1-based 2D array. Means: the 0th element holds the numbr of entries (rows and columns). So the loop should look like: For $i = 1 to $aItems[0][0] ; access the item using: $aItems[$i][0] Next Edited October 26, 2018 by water My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
water Posted October 26, 2018 Posted October 26, 2018 $oItem = $oOL.Session.GetItemFromID($aItems[1][0], Default) ; retrieve the items object $oItem.GetInspector $sBody = $oItem.Body IIRC you need to call GetInspector to retrieve the full body. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
nooneclose Posted October 26, 2018 Author Posted October 26, 2018 (edited) I will test the code you posted next week. I am too busy at work now to do so. I will get back with you after I test to let you know how it goes 😊 thanks again water. Edited October 26, 2018 by nooneclose
nooneclose Posted October 29, 2018 Author Posted October 29, 2018 (edited) @water This is what I have tried so far and I cannot figure out how to get and open the unread emails with a subject line of 'request' ;------------------------------------------------------------------------------------------------------------------------------------------------ ; Get/List all unread mails from the folder (MT_Inbox) ;------------------------------------------------------------------------------------------------------------------------------------------------ $aItems = _OL_ItemFind($oOutlook, "*\Outlook-UDF-Test", $olMail, "[UnRead]=True", "", "", "Subject,Body", "", 1) If IsArray($aItems) Then _ArrayDisplay($aItems, "OutlookEX UDF: _OL_ItemFind - Unread mails") Else MsgBox(48, "OutlookEX UDF: _OL_ItemFind Example Script", "Could not find an unread mail. @error = " & @error & ", @extended: " & @extended) EndIf ;_OL_Close($oOutlook) Local $numberOfUnRead = UBound($aItems, $UBOUND_ROWS) - 1 ; Gets the number of unread emails Global $emailHeaders = _OL_ItemGet($oOutlook, $aItems[1][0]) If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF: _OL_MailheaderGet", "Error retrieving mail headers of mail with subject '" & $aItems[1][1] & "'. @error = " & @error & ", @extended: " & @extended) MsgBox(64, "OutlookEX UDF: _OL_MailheaderGet", "MAIL HEADERS WITH THE SUBJECT OF:" & @CRLF & "'" & $aItems[1][1] & "'." & @CRLF & @CRLF & $emailHeaders) does $aItems[1][1] know the subject line that I am looking for? Is it the value that is guiding the search? Is this code even trying to find unread emails based on their subject? I am starting to think not. Any help would be appreciated. Also, this code just gives me the error of "OutlookEX UDF: _OL_MailheaderGet", "Error retrieving mail headers of mail with subject '".... Edited October 29, 2018 by nooneclose
nooneclose Posted October 30, 2018 Author Posted October 30, 2018 @water I figured out how to search for the unread emails based on subjects. Here is my code, I also figured out where and when to input your code to find the body of the email thank you very much. Here is what I have so far for this portion of the code. expandcollapse popup;------------------------------------------------------------------------------------------------------------------------------------------------ ; Get/List all unread mails from the folder (R_Inbox) ;------------------------------------------------------------------------------------------------------------------------------------------------ $aItems = _OL_ItemFind($oOutlook, "*\Outlook-UDF-Test", $olMail, "[UnRead]=True", "Subject", "Request", "EntryID,Subject", "", 1) If IsArray($aItems) Then _ArrayDisplay($aItems, "OutlookEX UDF: _OL_ItemFind - Unread mails") Else MsgBox(48, "OutlookEX UDF: _OL_ItemFind Example Script", "Could not find an unread mail. @error = " & @error & ", @extended: " & @extended) EndIf ;_OL_Close($oOutlook) Local $numberOfUnRead = UBound($aItems, $UBOUND_ROWS) - 1 ; Gets the number of unread emails ;***************************************************************************************************************************************************************** ; Get the first mail in the inbox and display the emails contents ;***************************************************************************************************************************************************************** ; Access the inbox Global $aFolder = _OL_FolderAccess($oOutlook, "", $olFolderInbox) If @error Then Exit MsgBox(48, "", "@error = " & @error & ", @extended: " & @extended) ; Find all items in the inbox Global $aItems = _OL_ItemFind($oOutlook, "*\Outlook-UDF-Test", $olMail, "", "", "", "EntryID,Subject", "", 1) If Not IsArray($aItems) Then Exit MsgBox(48, "", "@error = " & @error & ", @extended: " & @extended) ; Get the mail headers of the first mail Global $sMailHeaders = _OL_ItemGet($oOutlook, $aItems[1][0]) If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF: _OL_MailheaderGet", "Error retrieving mail headers of mail with subject '" & $aItems[1][1] & "'. @error = " & @error & ", @extended: " & @extended) MsgBox(64, "OutlookEX UDF: _OL_MailheaderGet", "MAIL HEADERS WITH THE SUBJECT OF:" & @CRLF & "'" & $aItems[1][1] & "'." & @CRLF & @CRLF & $sMailHeaders) $oItem = $oOutlook.Session.GetItemFromID($aItems[1][0], Default) ; retrieve the items object $oItem.GetInspector $sBody = $oItem.Body MsgBox("", "Did this work", $sBody) All I have to do now is do a loop until all of the unread emails have been processed. But before I can do that I need to figure out how to use _OL_ItemGet to open each email correct? Or is that not even necessary?
water Posted October 30, 2018 Posted October 30, 2018 If you mean to display a mail item then _OL_ItemGet is not needed. If you want to access further properties then you could simply retrieve them using _OL_ITemFind (you already use it to retrieve the subject). My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
nooneclose Posted October 30, 2018 Author Posted October 30, 2018 I want to pull data like this: (yes, I want to further access the contents of the email) $oItem = $oOutlook.Session.GetItemFromID($aItems[1][0], Default) ; retrieve the items object $oItem.GetInspector $eBody = $oItem.Body ; The Body of the email $eSenderAddress = $oItem.SenderEmailAddress ; Customers email address $eSentOn = $oItem.SentOn ; When was the email sent? $eSubject = $oItem.Subject ; Subject of the email from the email. Also in the body, it is possible to break the information up into pieces on certain words: (see attached image) I want to take parts of the body and store each of those different bits of information into variables. like: $eDescription = ( The email body Description ) $eComments = ( The email body Additional comments ) Does this make sense? I would like to take everything after the word "description" and before the word "Additional" and store that string into a variable named "$eDescription" Once I finish this part I can begin coding the loop process. Also thank you for your help so far. I know you have answered a lot of my questions and I must seem annoying at this point. So thanks for sticking with me during this experience.
water Posted October 30, 2018 Posted October 30, 2018 Splitting the mailbody into pieces could be a task for StringRegExp (regular expression). Or use Stringsplit with separator @CRLF or @LF (whichever applies) to split the mailbody into an Array of single lines. Then loop through the array and check for lines starting with "Description:". Grab the rest of the line using StringMid and all following lines as long as they do not start with "Additional comments:" Can't post runnable code as I do not have access to a Windows System a the emoment. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
nooneclose Posted October 31, 2018 Author Posted October 31, 2018 (edited) @water I figured out how to break up the body and get the information I wanted...by accident. I'm glad I am able to get the info. It is just that I don't actually understand how my code works. Can you please explain this to me? ;******************************************************************************* ; Gets the Description from the email body ;******************************************************************************* $eParts1 = StringSplit($eBody, "Description:", $STR_ENTIRESPLIT) _ArrayDisplay($eParts1, "Pass 1") $eParts2 = StringSplit($eParts1[2], "Additional" , $STR_ENTIRESPLIT) _ArrayDisplay($eParts2, "Pass 2") $eDescription = StringSplit($eParts2[1], "Reported" , $STR_ENTIRESPLIT) _ArrayDisplay($eDescription, "Description") ;******************************************************************************* ; Gets the Comments from the email body ;******************************************************************************* $eParts1 = StringSplit($eBody, "comments:", $STR_ENTIRESPLIT) _ArrayDisplay($eParts1, "Pass 1") $eParts2 = StringSplit($eParts1[2], "Location" , $STR_ENTIRESPLIT) _ArrayDisplay($eParts2, "Pass 2") $eComments = StringSplit($eParts2[1], "Address" , $STR_ENTIRESPLIT) _ArrayDisplay($eComments, "Comments") The output of both of those is just what I needed. (you can reference the image I posted last time to see what I started with) So I start with this whole body then I split at one word in pass 1. Then by Pass 2, a little more is cut out leaving some words behind that I don't want. Then by Pass 3 everything I don't want is cut out and what I want is left. Also is there a more efficient way to achieve this? Getting closer to being done. Feels good, thanks for your help with this. 😊 Edited October 31, 2018 by nooneclose
water Posted October 31, 2018 Posted October 31, 2018 Glad you got it running Using StringSplit the way you do is one of the many ways to solve your problem. Any other solution might be a bit faster but could be much more complex (like regular expression). nooneclose 1 My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
nooneclose Posted November 1, 2018 Author Posted November 1, 2018 This tread can be changed to solved because my original question was answered.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now