cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
DoctaShed
Helper I
Helper I

Extracting HTML Table from email to Excel

Hi There,

                yes i am very new to this and i have followed many tutorials and they all seem to work fine with the example HTML and have given me a greater understanding of Power Automate, but when I try and apply what I've learned to my own HTML it just doesn't work and i've been going round in circles for quite some time. if someone could give me some pointers for my html that would be great.

 

 

<html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="Generator" content="Microsoft Word 15 (filtered medium)"><style>
    <!--
    @font-face
        {font-family:"Cambria Math"}
    @font-face
        {font-family:Calibri}
    @font-face
        {font-family:Cambria}
    @font-face
        {font-family:Tahoma}
    p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif}
    span.EmailStyle21
        {font-family:"Calibri",sans-serif;
        color:windowtext}
    .MsoChpDefault
        {font-size:10.0pt}
    @page WordSection1
        {margin:72.0pt 72.0pt 72.0pt 72.0pt}
    div.WordSection1
        {}
    -->
    </style>
    </head>
    
    <body lang="EN-GB" link="blue" vlink="purple" style="word-wrap:break-word">
        <div class="WordSection1">
            <div>
                <div>
                    <p><span lang="EN-US">Please find enclosed below detail of your recently raised call:- </span></p>
                    <p><span lang="EN-US">WO# R2012051 Work Order Created</span></p>
                    <p><span lang="EN-US">&nbsp;</span></p>
                    <table class="MsoNormalTable" border="1" cellpadding="0" width="601" style="width:450.75pt">
                        <tbody>
                            <tr>
                                <td width="42%" style="width:42.0%; padding:5.25pt 5.25pt 5.25pt 5.25pt">
                                    <p><a name="x_x__Hlk3181679"><b><span
                                                    style="font-family:&quot;Cambria&quot;,serif">Reference
                                                    Number:</span></b></a></p>
                                </td>
                                <td width="58%" style="width:58.0%; padding:5.25pt 5.25pt 5.25pt 5.25pt">
                                    <p><span style="font-family:&quot;Cambria&quot;,serif">R2012051</span></p>
                                </td>
                            </tr>
                            <tr>
                                <td style="padding:5.25pt 5.25pt 5.25pt 5.25pt">
                                    <p><b><span style="font-family:&quot;Cambria&quot;,serif">Reported Date:</span></b></p>
                                </td>
                                <td style="padding:5.25pt 5.25pt 5.25pt 5.25pt">
                                    <p><span style="font-family:&quot;Cambria&quot;,serif">Feb 23 2022 3:58PM</span></p>
                                </td>
                            </tr>
                            <tr>
                                <td width="42%" style="width:42.0%; padding:5.25pt 5.25pt 5.25pt 5.25pt">
                                    <p><b><span style="font-family:&quot;Cambria&quot;,serif">Reporter Name:</span></b></p>
                                </td>
                                <td width="58%" style="width:58.0%; padding:5.25pt 5.25pt 5.25pt 5.25pt">
                                    <p><span style="font-family:&quot;Cambria&quot;,serif">Mr Right</span></p>
                                </td>
                            </tr>
                            <tr>
                                <td width="42%" style="width:42.0%; padding:5.25pt 5.25pt 5.25pt 5.25pt">
                                    <p><b><span style="font-family:&quot;Cambria&quot;,serif">Priority:</span></b></p>
                                </td>
                                <td width="58%" style="width:58.0%; padding:5.25pt 5.25pt 5.25pt 5.25pt">
                                    <p><span style="font-family:&quot;Cambria&quot;,serif">P4</span></p>
                                </td>
                            </tr>
                            <tr>
                                <td width="42%" style="width:42.0%; padding:5.25pt 5.25pt 5.25pt 5.25pt">
                                    <p><b><span style="font-family:&quot;Cambria&quot;,serif">Estimated
                                                Completion:</span></b></p>
                                </td>
                                <td style="padding:5.25pt 5.25pt 5.25pt 5.25pt">
                                    <p><span style="font-family:&quot;Cambria&quot;,serif">Mar 23 2022 3:58PM</span></p>
                                </td>
                            </tr>
                            <tr>
                                <td width="42%" style="width:42.0%; padding:5.25pt 5.25pt 5.25pt 5.25pt">
                                    <p><b><span
                                                style="font-family:&quot;Cambria&quot;,serif">Actual&nbsp;Completion:</span></b>
                                    </p>
                                </td>
                                <td style="padding:5.25pt 5.25pt 5.25pt 5.25pt">
                                    <p><span style="font-family:&quot;Cambria&quot;,serif">N/A</span></p>
                                </td>
                            </tr>
                            <tr>
                                <td width="42%" style="width:42.0%; padding:5.25pt 5.25pt 5.25pt 5.25pt">
                                    <p><b><span style="font-family:&quot;Cambria&quot;,serif">Building:</span></b></p>
                                </td>
                                <td width="58%" style="width:58.0%; padding:5.25pt 5.25pt 5.25pt 5.25pt">
                                    <p><span style="font-family:&quot;Cambria&quot;,serif">Any Building</span></p>
                                </td>
                            </tr>
                            <tr>
                                <td width="42%" style="width:42.0%; padding:5.25pt 5.25pt 5.25pt 5.25pt">
                                    <p><b><span style="font-family:&quot;Cambria&quot;,serif">Location:</span></b></p>
                                </td>
                                <td width="58%" style="width:58.0%; padding:5.25pt 5.25pt 5.25pt 5.25pt">
                                    <p><span style="font-family:&quot;Cambria&quot;,serif">VARI </span></p>
                                    <p><span style="font-family:&quot;Cambria&quot;,serif">VARIOUS AREAS</span></p>
                                </td>
                            </tr>
                            <tr>
                                <td width="42%" style="width:42.0%; padding:5.25pt 5.25pt 5.25pt 5.25pt">
                                    <p><b><span style="font-family:&quot;Cambria&quot;,serif">Problem:</span></b></p>
                                </td>
                                <td width="58%" style="width:58.0%; padding:5.25pt 5.25pt 5.25pt 5.25pt">
                                    <p><span style="font-family:&quot;Cambria&quot;,serif">Grounds Maintenance (Shrub
                                            Clearance / Litter Picking / Weeding etc):&gt;BN0039A1the grass outside needs
                                            trimming </span></p>
                                </td>
                            </tr>
                            <tr>
                                <td width="42%" style="width:42.0%; padding:5.25pt 5.25pt 5.25pt 5.25pt">
                                    <p><b><span style="font-family:&quot;Cambria&quot;,serif">Detail:</span></b></p>
                                </td>
                                <td width="58%" style="width:58.0%; padding:5.25pt 5.25pt 5.25pt 5.25pt">
                                    <p class="MsoNormal">No Details</p>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                    <p>&nbsp; </p>
                    <p><span style="font-family:&quot;Times New Roman&quot;,serif">If you require any additional
                            information, please call Someone else or email on: </span></p>
                    <p>&nbsp;</p>
                    <p style="margin-bottom:8.0pt; line-height:105%"><span
                            style="font-family:&quot;Tahoma&quot;,sans-serif">Anyjob<span style="color:#435254"> Limited,
                                Registered Office: </span>Your<span style="color:#435254"> House, </span>My<span
                                style="color:#435254"> Place, London, W1</span>A<span style="color:#435254"> </span>2G<span
                                style="color:#435254">B, registered in England and Wales No. </span>6561248<span
                                style="color:#435254">.Regulated by the </span>myself<span
                                style="color:#435254">.<br>&nbsp;<br>This communication is from </span>Anyjob<span
                                style="color:#435254"> Limited or one of its associated/subsidiary
                                companies.<br>&nbsp;<br>This communication contains information which is confidential and
                                may be privileged. If you are not the intended recipient, please contact the sender
                                immediately.<br>&nbsp;<br></span>Remember who you send this too<span style="color:#435254">,
                            </span>may not send it on<span style="color:#435254">, </span>so dont<span
                                style="color:#435254"> rely on its contents in any way whatsoever.<br>&nbsp;<br>Reasonable
                                care has been taken to ensure that this communication (and any attachments or hyperlinks
                                contained within it) is free from computer viruses.<br>No responsibility is accepted by
                            </span>Anyjob<span style="color:#435254"> Limited or its associated/subsidiary companies and the
                                recipient should carry out any appropriate virus checks.<br>&nbsp;<br>Details about the
                                personal data </span>Anyjob<span style="color:#435254"> Limited collects and why, as well as
                                your data privacy rights under applicable law, are available&nbsp;</span><span
                                style="color:#003F2D">at&nbsp;</span></span>the&nbsp; Back door</p>
                </div>
            </div>
        </div>
        <div id="DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2"><br><br>
            <hr style="border:none; color:#909090; background-color:#B0B0B0; height:1px; width:99%">
            <table style="border-collapse:collapse; border:none">
                <tbody>
                    <tr>
                        <td style="border:none; padding:0px 15px 0px 8px"><a href="https://www.avast.com/antivirus"><img
                                    border="0" src="http://static.avast.com/emails/avast-mail-stamp.png" alt="Avast logo">
                            </a></td>
                        <td>
                            <p
                                style="color:#3d4d5a; font-family:&quot;Calibri&quot;,&quot;Verdana&quot;,&quot;Arial&quot;,&quot;Helvetica&quot;; font-size:12pt">
                                This email has been checked for viruses by Avast antivirus software. <br><a
                                    href="https://www.avast.com/antivirus">www.avast.com</a> </p>
                        </td>
                    </tr>
                </tbody>
            </table><br><a href="#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2" width="1" height="1"></a>
        </div>
    </body>
    
    </html>

 

 

 

I would like to be able to populate the below Spreadsheet on my onedrive with the data from the table in incoming emails.

 

defect excel.pngIf anyone knows of an example that would work with my HTML i would be happy to follow it if someone could point me in the right direction.

Kind Regards

Rick

1 ACCEPTED SOLUTION

Accepted Solutions
DamoBird365
Microsoft
Microsoft

Hi @DoctaShed 

 

Take a look at Extract HTML Table from Email in Power Automate - YouTube

 

This should get you started:

DamoBird365_0-1648583755195.png

Compose: your html sample

Compose2: slice(outputs('Compose'),indexOf(outputs('Compose'),'<table'),indexOf(outputs('Compose'),'</table'))

compose3: replace(outputs('Compose_2'),'&nbsp','')

 

Note that in compose2 I also have the closing </table> tag

 

Hope that helps you get up and running.

 

Please consider accepting my answer as a solution if it helps to solve your problem.

Cheers
Damien

Please take a look and subscribe to my YouTube Channel for more Power Platform ideas and concepts, or take a look at my website. Thanks

View solution in original post

7 REPLIES 7
DamoBird365
Microsoft
Microsoft

Hi @DoctaShed 

 

Take a look at Extract HTML Table from Email in Power Automate - YouTube

 

This should get you started:

DamoBird365_0-1648583755195.png

Compose: your html sample

Compose2: slice(outputs('Compose'),indexOf(outputs('Compose'),'<table'),indexOf(outputs('Compose'),'</table'))

compose3: replace(outputs('Compose_2'),'&nbsp','')

 

Note that in compose2 I also have the closing </table> tag

 

Hope that helps you get up and running.

 

Please consider accepting my answer as a solution if it helps to solve your problem.

Cheers
Damien

Please take a look and subscribe to my YouTube Channel for more Power Platform ideas and concepts, or take a look at my website. Thanks

Thanks Damien, using your solution made things a lot easier although i suspect after i have added my steps its a bit long and convoluted, i am working on getting the excel entries correct without the square brackets and quotes but i'm a lot further along than i was, so again thankyou very much for helping me out.

pramodklal
Frequent Visitor

Hi @DamoBird365 

I am getting below error message at the step "SelectRowsFromHTML", please suggest

how to remove this issue. TIA

InvalidTemplate. The execution of template action 'SelectRowsFromHTML' failed: The evaluation of 'query' action 'where' expression '{ "@{xpath(xml(outputs('ComposeHTML')),'//table[1]//tr[1]/td[1]/text()')?[0]}": "@xpath(xml(outputs('ComposeHTML')),concat('//table[1]//tr[',item(),']/td[1]/text()'))?[0]", "@{xpath(xml(outputs('ComposeHTML')),'//table[1]//tr[1]/td[2]/text()')?[0]}": "@xpath(xml(outputs('ComposeHTML')),concat('//table[1]//tr[',item(),']/td[2]/text()'))?[0]", "@{xpath(xml(outputs('ComposeHTML')),'//table[1]//tr[1]/td[3]/text()')?[0]}": "@xpath(xml(outputs('ComposeHTML')),concat('//table[1]//tr[',item(),']/td[3]/text()'))?[0]" }' failed: 'Unable to evaluate template language expression '@{xpath(xml(outputs('ComposeHTML')),'//table[1]//tr[1]/td[2]/text()')?[0]}' as JSON property name: the property with name '' already exists.'.

 

Error at SelectRowsFromHTMLError at SelectRowsFromHTML

below 

ash2022
New Member

Hi @DamoBird365

I'm having the same exact issue as @pramodklal 

Any advice on how to adjust the code?

Thanks!

ash2022_0-1651022942860.png

 

Hi @ash2022 

 

Not sure to be honest without seeing more of your logic. Try simplifying it with one key/value. Get that working and then extend it. It would be easier to start a new case if you are not sure.

 

Damien

ash2022
New Member

Thanks for the advice! The expression worked with only one key/value, but never more than one. I'm not savvy enough yet to understand why, so my workaround was to use the table header values directly. It isn't dynamic, but my table header values don't change, so that isn't an issue for me. I was then able to use the table header values in an Apply to each that created a SharePoint list item for each row of the email table (and incorporated some other data parsed from the body of the email as well).

 

ash2022_0-1651424235820.png

ash2022_1-1651424360217.png

 

lipster26
Frequent Visitor

Hello,

 

I'm trying to do this as well but can't determine the xpath expression in SelectRowsfromHTML for my table. How can i form the Key/Value to split out the table into headers/columns/rows? Thanks.

 

<table class=MsoNormalTable border=1 cellpadding=0>
<tr>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'>
<b>FX Rate Type
<o:p>
</o:p>
</b>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'>
<b>From Currency
<o:p>
</o:p>
</b>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'>
<b>To Currency
<o:p>
</o:p>
</b>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'>
<b>Date1 FX Rate
<o:p>
</o:p>
</b>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'>
<b>Date1
<o:p>
</o:p>
</b>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'>
<b>Date2 FX Rate
<o:p>
</o:p>
</b>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'>
<b>Date2
<o:p>
</o:p>
</b>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'>
<b>Same FX Rate?
<o:p>
</o:p>
</b>
</p>
</td>
</tr>
<tr>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>E
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>CLP
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>CAD
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>0.14537
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>20220831
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>0.14137
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>20220731
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
</td>
</tr>
<tr>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>E
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>EUR
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>CAD
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>1.31741
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>20220831
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>1.30593
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>20220731
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
</td>
</tr>
<tr>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>E
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>GBP
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>CAD
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>1.52460
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>20220831
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>1.55970
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>20220731
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
</td>
</tr>
<tr>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>E
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>JPY
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>CAD
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>0.94390
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>20220831
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>0.96080
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>20220731
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
</td>
</tr>
<tr>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>E
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>MXN
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>CAD
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>0.06520
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>20220831
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>0.06280
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>20220731
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
</td>
</tr>
<tr>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>E
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>USD
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>CAD
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>1.30890
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>20220831
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>1.28020
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>20220731
<o:p>
</o:p>
</p>
</td>
<td style='padding:.75pt .75pt .75pt .75pt'>
</td>
</tr>
</table>

Helpful resources

Announcements
Power Automate News & Announcements

Power Automate News & Announcements

Keep up to date with current events and community announcements in the Power Automate community.

Community Calls Conversations

Community Calls Conversations

A great place where you can stay up to date with community calls and interact with the speakers.

Power Automate Community Blog

Power Automate Community Blog

Check out the latest Community Blog from the community!

Top Solution Authors
Users online (4,387)