10-09-2023 11:44 AM - edited 10-09-2023 11:55 AM
Hi, In my recipe, I am selecting 2 columns from a SQL table, and want to put the results in the body of an email. I get results, but they look like this:
{"rows"=>[{"datetimeoftxn_b5896cc8"=>"2023-10-09 13:59:23.797000000", "listoutput_0ec6e5e5"=>"Test_Last_Name1, Test_First_Name1, Test_Door_Name1 "},
{"datetimeoftxn_b5896cc8"=>"2023-10-09 13:59:23.797000000", "listoutput_0ec6e5e5"=>"Test_Last_Name2, Test_First_Name2, Test_Door_Name2 "}]}
I just want the data in my email like this:
2023-10-09 13:59 Test_Last_Name1, Test_First_Name1, Test_Door_Name1
2023-10-09 13:59 Test_Last_Name2, Test_First_Name2, Test_Door_Name2
The 2 SQL Columns are datetime and nchar. What's the best way to get just the data in my email ?
Solved! Go to Solution.
10-09-2023 12:15 PM
I'd recommend using a message template to format the data into a nicely formatted HTML table, and then insert the table into the email body. You'll need to brush on HTML for the formatting and mustache for the parsing in the message template, but it's definitely worth the effort -- especially if you may need to create more emails in the future.
10-10-2023 02:07 PM - edited 10-10-2023 02:08 PM
For step 8, replace "Step 5 Output" with Step 5 Message. IMO it's very rare that you will use the "Step # Output" directly. You generally want to use the data pills within the step's output.
Anyway, switching gears: let's try something different.
First, make a variable list:
By doing this, you now have the ability to parse and transform (clean up) the values as they go into the list:
Using to_time makes the date string a date object and then using strftime converts it back to a string using the specified formatting. Using strip on the output removes leading/trailing whitespace characters.
Now that it's cleaned up, you can pluck/to_csv and it'll be a lot closer to what you want in your email, but I still recommend using a message template! It's only a few extra steps from here.
10-10-2023 06:13 AM
I believe replacing \t with \n will get you a newline.
10-10-2023 08:41 AM - edited 10-10-2023 08:42 AM
I added "Log message to Job report and Workato Logs" with this syntax:
[Step 3 output].pluck('datetimeoftxn_b5896cc8','listoutput_0ec6e5e5').to_csv
I get this error: Error calculating input for field 'message': no implicit conversion of String into Integer
My data from the SQL query in step 3 is a date field and a string. no integers involved.
10-10-2023 08:50 AM
That error generally means you're trying to access an index or range of something that isn't an array.
What happens when you remove .to_csv? The output of the logger/message should be a 2D array.
10-10-2023 08:56 AM - edited 10-10-2023 08:57 AM
Also, your example says: [Step 3 output]
It may make a difference if you use the "rows" array data pill instead of the full step 3 output. They're likely structured differently.
Post some screenshots if you can.
10-10-2023 11:28 AM
Screen shots posted below. Thanks for your help.