cancel
Showing results for 
Search instead for 
Did you mean: 
Reply

Format timestamp from Excel Online to send mails: How to use formatDateTime?

Hi, here's what I'm trying to achieve:

  1. To get all rows from an excel online sheet (MS Forms Responses)
  2. Select only one user's rows and create an HTML table of the rows
  3. Send the html table to the user and cc his manager

The Excel Online sheet looks (MS Forms Responses) like this 

Excel Online MS Forms Response.PNG

The Start time, Completion time columns are timestamps and i have some other columns (like Meeting date) where the user selects a date from calendar option in MS Forms.

 

Here's how my flow looks:

Flow OutlineFlow OutlineApply to each 2.PNGApply to each 2 a.PNG

 

I was able to collect all rows of a user and send mail to them. And here's how it looks:
mail.PNGhtml table date formatting.PNG

 

In the mail (and in the attachement) the user gets the date-time and dates in integers, which is inconvinient.

 

How should I format the start time, completion time columns to match this format: 16/11/2020 7:22:46 PM (Indian format) and meeting date column to match: 16/11/2020 format?

 

Without much success, I tried using formatDateTime, addDays, addSeconds functions and kept stumbling on the following errors (one in each of my trials):

  1. Unable to process template language expressions in action 'Compose_2' inputs at line '1' and column '14327': 'The template language expression 'if(empty(items('Apply_to_each_2')?['Start_x0020_time']),'',addDays('1899-12-30',int(items('Apply_to_each_2')?['Start_x0020_time']),'MM/dd/yyyy'))' cannot be evaluated because property 'Start_x0020_time' cannot be selected. Property selection is not supported on values of type 'String'. 
  2. The template language function 'formatDateTime' expects its first parameter to be of type string. The provided value is of type 'Null'.

After searching for answers, and trying out all existing slutions for almost a week (yes, I'm a newbie to MS Flow 🙂 ), i'm compelled to post here and know the right away of doing this. 

 

Can someone plese tell me the right way to do this?

Any/all help will be much appreciated!

 

2 ACCEPTED SOLUTIONS

Accepted Solutions
abm
Super User
Super User

Hi @HarshavardhanG 

 

Please have a look at my video tutorials 

 

https://www.youtube.com/watch?v=uFZxXMuLj-E

 

https://www.youtube.com/watch?v=r1LhHU5lXkM

 

If you need any further help please let me know.

 

Thanks

 

 



Did I answer your question? Mark my post as a solution!

If you liked my response, please consider giving it a thumbs up


Proud to be a Flownaut!

Learn more from my blog
Power Automate Video Tutorials

View solution in original post

Paulie78
Super User
Super User

Here is something you could use:

 

addDays
(
  '1899-12-30', int(substring(string(outputs('ExcelDateTime')), 0, 
  indexOf(string(outputs('ExcelDateTime')),'.'))), 'dd-MM-yyyy'
)

 

You would need to either:

  • replace outputs('ExcelDateTime') with your own value retrieved from Excel or..
  • add a compose step before using this expression called "ExcelDateTime"

Explanation:

 

  • The first value in your example is 44065.8074768518.
  • The first part of that is 44065, which represents the day.
  • The addDays function is used as described in the linked videos
  • Substring is used so that the add days function ignore the time element and creates a date.

 

It looks like this:

ExcelDateTime.PNG

You can simply use this expression when you create your HTML Table and you will have sensible date values.

 

Please...

If I answered your question Accept it as a solution ✔️ 

If I helped you out, please give me some Kudos 👍

Thanks 😙

 

View solution in original post

7 REPLIES 7
abm
Super User
Super User

Hi @HarshavardhanG 

 

Please have a look at my video tutorials 

 

https://www.youtube.com/watch?v=uFZxXMuLj-E

 

https://www.youtube.com/watch?v=r1LhHU5lXkM

 

If you need any further help please let me know.

 

Thanks

 

 



Did I answer your question? Mark my post as a solution!

If you liked my response, please consider giving it a thumbs up


Proud to be a Flownaut!

Learn more from my blog
Power Automate Video Tutorials
ChadVKealey
Memorable Member
Memorable Member

The issue is that date columns in Excel do not store the date the way you think. What they actually store is the number of days since a fixed point in time: 12:00 AM on January 1, 1900. So, to get a date value out of that, you need to use the "addDays" expression or the "add to time" action. See https://powerusers.microsoft.com/t5/General-Power-Automate/Manipulating-Flow-Excel-Date/td-p/365876 for a more detailed explanation and example.

 

For what it's worth, if you can get away with just the date, then I would suggest doing that. Basically the value after the decimal point is a fraction of a full day. If that's "clean" (like .25 would be 1/4 of a day or 6 hours; .5 would be 1/2 of a day or 6 hours; etc.), then it's not too bad. However, if it's not a value that provides an even hour result, it involves performing a few calculations and gets a bit messy. I still haven't figured out a truly reliable way to do it. 

Paulie78
Super User
Super User

Here is yet another video that deals with the Date issue in Excel that I published yesterday:

https://www.youtube.com/watch?v=E67YoByn9eA

But your issue is that you have time in there also. Personally I would consider changing the flow that collects form responses and recording the date and time separately. That would then be easier to deal with in this flow.

I must thank @abm, @ChadVKealey & @Paulie78  for the prompt responses. Much obliged!


I checked all the suggestions and I now need to understand how to convert the Start time & Completion time values from timestamp xxxx.xxx to only date integers (like in the example videos provided by abm & Paulie78).

 

I'm okay if I must deal with the Start time & Completion time as Date only (without time).
My idea is to later filter data for today's date. Time data is of no use for me.

Please suggest how to convert the timestamp to simple dates in PowerAutomate, I do not want to do that in the Excel as i'm worried it might mess up with the live Forms Responses.

Paulie78
Super User
Super User

Here is something you could use:

 

addDays
(
  '1899-12-30', int(substring(string(outputs('ExcelDateTime')), 0, 
  indexOf(string(outputs('ExcelDateTime')),'.'))), 'dd-MM-yyyy'
)

 

You would need to either:

  • replace outputs('ExcelDateTime') with your own value retrieved from Excel or..
  • add a compose step before using this expression called "ExcelDateTime"

Explanation:

 

  • The first value in your example is 44065.8074768518.
  • The first part of that is 44065, which represents the day.
  • The addDays function is used as described in the linked videos
  • Substring is used so that the add days function ignore the time element and creates a date.

 

It looks like this:

ExcelDateTime.PNG

You can simply use this expression when you create your HTML Table and you will have sensible date values.

 

Please...

If I answered your question Accept it as a solution ✔️ 

If I helped you out, please give me some Kudos 👍

Thanks 😙

 

abm
Super User
Super User

Hi @HarshavardhanG 

 

You can get the time part from excel sheet. Please see this reply from @ymaglaras 

 

Re: Convert Excel date value - Power Platform Community (microsoft.com)

 

Thanks

 



Did I answer your question? Mark my post as a solution!

If you liked my response, please consider giving it a thumbs up


Proud to be a Flownaut!

Learn more from my blog
Power Automate Video Tutorials

Hi,

 

Extremely sorry for the delay in reply. 

 

Thanks to @abm @Paulie78, i was able to finally get it working.

 

Here's what i did:

 

I added a column to source data which would convert the timestamp into date (integers), which would work with the expressions (provided above) when filtered in PowerAutomate.

 

Thanks a ton!

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 (3,862)