Forum Discussion
Get email attachment with receivedtime
Hello,
I'm learning Dataflow and Queries and I'm trying to load into a Lake an email with an excel attachment with the email received date.
I cannot find the way to add the email received date as a column of the excel.
Thanks for your help.
Here is an example where the email receive timestamp is blended into the table from the Excel attachment
let Source = Exchange.Contents(<email address>), Mail1 = Source{[Name="Mail"]}[Data], #"Filtered Rows" = Table.SelectRows(Mail1, each ([HasAttachments] = true)), #"Filtered Rows1" = Table.SelectRows(#"Filtered Rows", each Date.IsInPreviousNDays([DateTimeReceived], 1)), #"Expanded Sender" = Table.ExpandRecordColumn(#"Filtered Rows1", "Sender", {"Name", "Address"}, {"Name", "Address"}), #"Filtered Rows2" = Table.SelectRows(#"Expanded Sender", each ([Name] = <Sender>)), #"Removed Other Columns" = Table.SelectColumns(#"Filtered Rows2",{"DateTimeReceived", "Attachments"}), #"Expanded Attachments" = Table.ExpandTableColumn(#"Removed Other Columns", "Attachments", {"Name", "Extension", "IsInline", "Size", "ContentType", "Last Modified", "AttachmentContent"}, {"Name", "Extension", "IsInline", "Size", "ContentType", "Last Modified", "AttachmentContent"}), #"Filtered Rows3" = Table.SelectRows(#"Expanded Attachments", each ([Extension] = ".xlsx")), AttachmentContent = #"Filtered Rows3"{0}[AttachmentContent], #"Imported Excel Workbook" = Excel.Workbook(AttachmentContent), Detail_Sheet = #"Imported Excel Workbook"{[Item="Detail",Kind="Sheet"]}[Data], #"Promoted Headers" = #table({"Received"},{{#"Filtered Rows3"{0}[DateTimeReceived]}}) & Table.PromoteHeaders(Detail_Sheet, [PromoteAllScalars=true]) in #"Promoted Headers"Note the last line before "in"
#"Promoted Headers" = #table({"Received"},{{#"Filtered Rows3"{0}[DateTimeReceived]}}) & Table.PromoteHeaders(Detail_Sheet, [PromoteAllScalars=true])Where you can see that a previous step #"Filtered Rows3" is referenced.
9 Replies
- lbendlinSuper User
The Email Received date is part of the Email meta data, not the Excel meta data. You need to grab that independently, before you interpret the Excel data.
- ComprateurRegular Visitor
Hi, How can you save the email meta data for having it use later during the transform, Is it possible to record it into a variable and call it at a later stage?
Thanks,
- lbendlinSuper User
Power Query steps can reference any prior steps, doesn't have to be the exact previous step. You would need to use the advanced editor though as this cannot be done in the UI
- v-tejramaCommunity Support
Hi Comprateur ,
Thank you lbendlin for the helpful input!
Were you able to resolve the issue? If the response addressed your query, kindly confirm. This helps keep the community informed and improves solution visibility.
Thank you for your support!
- ComprateurRegular Visitor
Thanks,
I think I understand what you are saying ", doesn't have to be the exact previous step. You would need to use the advanced editor though as this cannot be done in the UI " But I don't know how to extract that information at the a particular step and reuse it late.
Again thanks for your help.
- lbendlinSuper User
Here is an example where the email receive timestamp is blended into the table from the Excel attachment
let Source = Exchange.Contents(<email address>), Mail1 = Source{[Name="Mail"]}[Data], #"Filtered Rows" = Table.SelectRows(Mail1, each ([HasAttachments] = true)), #"Filtered Rows1" = Table.SelectRows(#"Filtered Rows", each Date.IsInPreviousNDays([DateTimeReceived], 1)), #"Expanded Sender" = Table.ExpandRecordColumn(#"Filtered Rows1", "Sender", {"Name", "Address"}, {"Name", "Address"}), #"Filtered Rows2" = Table.SelectRows(#"Expanded Sender", each ([Name] = <Sender>)), #"Removed Other Columns" = Table.SelectColumns(#"Filtered Rows2",{"DateTimeReceived", "Attachments"}), #"Expanded Attachments" = Table.ExpandTableColumn(#"Removed Other Columns", "Attachments", {"Name", "Extension", "IsInline", "Size", "ContentType", "Last Modified", "AttachmentContent"}, {"Name", "Extension", "IsInline", "Size", "ContentType", "Last Modified", "AttachmentContent"}), #"Filtered Rows3" = Table.SelectRows(#"Expanded Attachments", each ([Extension] = ".xlsx")), AttachmentContent = #"Filtered Rows3"{0}[AttachmentContent], #"Imported Excel Workbook" = Excel.Workbook(AttachmentContent), Detail_Sheet = #"Imported Excel Workbook"{[Item="Detail",Kind="Sheet"]}[Data], #"Promoted Headers" = #table({"Received"},{{#"Filtered Rows3"{0}[DateTimeReceived]}}) & Table.PromoteHeaders(Detail_Sheet, [PromoteAllScalars=true]) in #"Promoted Headers"Note the last line before "in"
#"Promoted Headers" = #table({"Received"},{{#"Filtered Rows3"{0}[DateTimeReceived]}}) & Table.PromoteHeaders(Detail_Sheet, [PromoteAllScalars=true])Where you can see that a previous step #"Filtered Rows3" is referenced.
- ComprateurRegular Visitor
Hi,
I was going to the work direction trying to use parameters or references.
It kind of works, but I have 2 additional questions.
How can I retrieve all sheets in a workbook using
Detail_Sheet = #"Imported Excel Workbook"{[Item="Detail",Kind="Sheet"]}[Data],And second question, how can you get all line from the excel filled with the Received time? In order to always know the datetime received when I analyse my Excel data at later stage.
thanks,