dar100111 Posted December 16, 2013 Share Posted December 16, 2013 Hey All! I've been playing around with making a unique array for all instances in an excel sheet to email out to certain users and I'm trying to find a way to take my unique array which is $emailarray in this script and have it go into the body of the email like a table. I know I can't paste the array straight in there but does anyone have any ideas? I attached the sheet if you wanted to get an idea of what it's supposed to accomplish. Thanks! expandcollapse popup#cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.8.1 Author: Daniel Rowe Script Function: Mass Email Tool #ce ---------------------------------------------------------------------------- ; Script Start - Add your code below here #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <INet.au3> #include <excel.au3> #include <array.au3> #include <OutlookEX.au3> #include <_2DArrayInsertRow.au3> Global $oOutlook = _OL_Open() Global $automatednote = @lf&"****PLEASE NOTE THIS EMAIL IS AUTOGENERATED FROM ORACLE NMC****" Func _CreateEmailfromUniqueArray($p_array_to_loop, $p_array_to_search, $p_emailbody) $searchcount = UBound($p_array_to_loop) - 1 $rowcounter = $p_array_to_search[0][0] Global $columncounter = $p_array_to_search[0][1] For $i = 1 To $searchcount Step 1 $podoffice = StringLeft($p_array_to_loop[$i],3) ;MsgBox("", "", $podoffice) Global $found = _ArrayFindAll($p_array_to_search, $podoffice, 0,0,0,1,1) ;_ArrayDisplay($found);;not showing up yet Global $finalarray = _ExcelReadSheetToArray($oExcel, 1, 1, 1, $columncounter) Global $finalstartrow = 2 Global $finalstartcolumn = 1 For $r = 1 to UBound($found) Step 1;add rows to final unique array depending on unique instances _2DArrayInsertRow($finalarray, $finalstartrow) For $c = 1 To $columncounter Step 1 ;assign array indeces with variable from original search array $data = $p_array_to_search[$found[$r - 1]][$c] $finalarray[$finalstartrow][$c] = $data Next ;_ArrayDisplay($finalarray) $finalstartrow = $finalstartrow + 1 ;dynamic to insert another row with 2darrayinsert Next $emailarray = _ArrayToClip($finalarray);;item I need to paste into email below. $oItem = _OL_ItemCreate($oOutlook, $olMailItem, "", "", "Subject="&$subjectline&" for "&$podoffice) $oItem.BodyFormat = $olFormatPlain $oItem.GetInspector $sBody = $oItem.Body $oItem.Body = $emailbody &$emailarray&@lf& $sBody &@lf&$automatednote $oItem.Display Next EndFunc ;;;;;;;;;;;;;;;;;;;;;;;;;Start $missingpodsubject = "Missing Oracle POD's" $template = InputBox("Mass Email", "Select Template"&@lf&@lf&"1. Missing POD's"&@lf&"2. ..."&@lf&"3. ..."&@lf&"4. ..."&@lf&"5. Custom Template","", "", 200, 220) If @error = 1 Then Exit If $template = 1 Then $subjectline = $missingpodsubject $emailbody = "Please update POD's into expo for following shipments"&@lf&@lf EndIf If $template = 2 Then Exit If $template = 3 Then Exit If $template = 4 Then Exit If $template = 5 then #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Enter Email Body", 610, 438, 192, 124) $Label1 = GUICtrlCreateLabel("Enter Email Body Below", 56, 16, 497, 41, BitOR($SS_CENTER,$SS_CENTERIMAGE,$SS_SUNKEN)) GUICtrlSetFont(-1, 24, 400, 0, "MS Sans Serif") $body = GUICtrlCreateEdit("", 24, 110, 561, 240) $Button1 = GUICtrlCreateButton("Finish", 216, 368, 185, 57) GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif") GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### Do $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button1 $emailbody = ControlGetText("", "", $body) $Button1 = 1 EndSwitch Until $Button1 = 1 EndIf ;;;;execute results of template select Global $oExcel = _ExcelBookOpen( @ScriptDir & "\Missing POD template.xlsx") Global $aArray = _ExcelReadSheetToArray($oExcel);This will contail all the info to send to the branches Global $1darray = _ExcelReadArray($oExcel, 2, 1,UBound($aArray) - 2, 1) ;_ArrayDisplay($aArray) ;_ArrayDisplay($1darray) Global $resultsarray = _ArrayUnique($1darray);build an array to have 1 row for each unique branch ;_ArrayDisplay($resultsarray) _CreateEmailfromUniqueArray($resultsarray, $aArray, $emailbody) Missing POD template.xlsx Link to comment Share on other sites More sharing options...
Solution markyrocks Posted December 17, 2013 Solution Share Posted December 17, 2013 (edited) Idk I found this '?do=embed' frameborder='0' data-embedContent>> I see that you have the data in the clipboard already. if that doesn't work youll need to use a for statement do for $col = 0 to ubound($finalarray) -1 send($finalarray[$row][$col]) next $row += 1 until $row = ubound($finalarray)-1 something like that..... to make rows and columns there needs to be tabs and line breaks added in there also from reading here http://www.autoitscript.com/autoit3/docs/libfunctions/_ArrayToClip.htm looks like from the documentation $emailarray will only be equal to 1 or 0 it doesnt save the data to an array just to the clipboard. least that's what i gather Edited December 17, 2013 by markyrocks Spoiler "I Believe array math to be potentially fatal, I may be dying from array math poisoning" Link to comment Share on other sites More sharing options...
dar100111 Posted December 17, 2013 Author Share Posted December 17, 2013 Hey Marky! Ok I did that and it looks to be working good. I just need to find a way to format with my tabs between the columns but I should be able to check string length on the data to do that. Thanks for idea! Link to comment Share on other sites More sharing options...
JohnOne Posted December 17, 2013 Share Posted December 17, 2013 Or similarly... $Output = '' Do For $col = 0 To UBound($finalarray) - 1 $Output &= $finalarray[$row][$col] & @TAB ;Send($finalarray[$row][$col]) Next $Output &= @CRLF $row += 1 Until $row = UBound($finalarray) - 1 ClipPut($Output) Send("^v") AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans. Link to comment Share on other sites More sharing options...
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