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

Error when trying to trigger email based on SharePoint List Date Value

Hi

 

I'm trying to trigger an email to be sent when a date field for a SharePoint list item is equal to today. I've set this as a scheduled flow to run once a day to check the date and trigger the email. 

 

When the flow runs I get the following error: 

 

The execution of template action 'Apply_to_each' failed: the result of the evaluation of 'foreach' expression '@items('Apply_to_each_2')?['Date_x0020_Acknowledgement_x0020']' is of type 'String'. The result must be a valid array.

 

I'm assuming this is a formatting issue for the date field? It is formatted correctly as a date rather than text (as I need it to display correctly as a date in SharePoint). Have I done something else wrong? Attached is the condition used to trigger the email.

 

If anyone can help I will be very greatful! 🙂

1 ACCEPTED SOLUTION

Accepted Solutions
Blurryface
Resolver I
Resolver I

It is likely a Time zone issue with your SharePoint tenant.

 

There's a few things you can do (in no particular order, note also you only need to do one of the options below -not all):

1-

Change Date field on SharePoint to include times and set it to be 21/07/2022 23:00 for example (this may not be suitable if your getting users to enter in this data manually to the list)

 

2 -

Convert the time zone on the SharePoint date field to your time zone via the flow using the an OOTB action or expression: Converting time zone in Power Automate - Power Automate | Microsoft Docs

 

3 -

Change the date field to a single text field instead on SharePoint (this may not be suitable if your getting users to enter in this data manually)

 

4 -

You can add 1 day to the date by using the expression below:

formatDateTime(addDays(items('Apply_to_each')?['Date_x0020_Acknowledgement_x0020'],1),'dd/MM/yyyy')

View solution in original post

15 REPLIES 15
AlanStevens
Helper I
Helper I

This is the condition setThis is the condition set

Blurryface
Resolver I
Resolver I

Hi @AlanStevens,

There is two problems I can see with your Flow:

1. You need to move your condition out of the “Apply to each” and then delete the “Apply to each” so your left with the condition within the “Apply to each 2” only. (That will remove the error your seeing)

 

2. Your condition will need a function to format the date fields as utcNow() includes minutes and seconds so your date won’t match exactly down to the minute or second.

 

You can use a formatDateTime() function on both your Date Acknowledgement and the utcNow().
Here’s utcNow as an example: formatDateTime(utcNow(),‘dd/MM/yyyy’) you will need to do the same for the Date Acknowledgment dynamic content also.

 

let me know if this resolves your issue, thanks 

Hi

 

Thanks for your response - How do I use that function? Is it the initialise variable? when I try to do that for the Data Acknowledgement - it doesn't let me pick from the list of dynamic content - all that is there under dynamic content is 'Body' and 'Value' - all my other fields names are not showing.

AlanStevens
Helper I
Helper I

I cant seem to select the synamic field to formatI cant seem to select the synamic field to format

Blurryface
Resolver I
Resolver I

Hi @AlanStevens 

 

So you need to identify what the dynamic content field name is and enter it manually into the function, you can find the name by first adding it into a compose and then selecting "Peek code":

 

Blurryface_0-1658396207460.png

 

Blurryface_1-1658396291565.png

 

So your function will read something similar to the following you will just need to change the piece in red to be your Data Acknowledgement field:

 

formatDateTime(items('Apply_to_each')?['AppVersion'],‘dd/MM/yyyy’)

 

Also once you have this working you can delete the Compose as this is only used to identify what the dynamic content field name is you need to refer to add to the function.

AlanStevens
Helper I
Helper I

Thank you for your help!. I've done that now for both the UTC now and the dynamic field. The flow seems to run without error, however it's not triggering the action as it is saying the expression result is false not true which I can't understand. I've checked my data (see below) the Date acknowledgement due is today so it should have triggered the action but it isn't. Any other ideas?date1.PNGformatdate1.PNGrun1.PNG

Blurryface
Resolver I
Resolver I

No problem at all - can you share the expression for both within the condition please?

 

Also if you want to add two composes above the condition you can check what the condition is trying to evaluate - see example below:

 

Blurryface_0-1658401598051.png

 

Flow run then shows:

Blurryface_1-1658401683779.png

 

AlanStevens
Helper I
Helper I

Hi

 

Expression for the dynamic field: 

formatDateTime(items('Apply_to_each')?['Date_x0020_Acknowledgement_x0020'],'dd/MM/yyyy')
 
Expression for 'Today' 
formatDateTime(utcNow(),'dd/MM/yyyy')
 
I have tried to add those compose sections in above the condition but now I get an error saying it can't save so not sure what i'm doing wrong! - Apologies, i'm really bad at this LOLCompose1.PNG
Blurryface
Resolver I
Resolver I

No worries at all 🙂

 

So the composes need to be within the apply to each - they can't be outside it as the apply to each loops and checks each value in the list including the composes.

AlanStevens
Helper I
Helper I

Hi,

 

Thank you - I have done that and managed to save the flow. Thank you for the suggestion as I can now see why the action isn't triggering, although I don't understand how this has happened! 

 

In the screenshot below - you can see the first compose is for the dynamic field pulled from SharePoint, and the second compose is the 'today' condition..

 

The action isn't triggering because the dates do not match - but the data field in SharePoint is showing 21/07/2022 NOT 20/07/2022 - so I don't understand how the date is somehow different when the data is being retrieved by Power Automate??  There is no date field at all in my SharePoint list that shows 20/07/2022CompFlowRun.PNG

AlanStevens
Helper I
Helper I

I've had a closer look at the data - I think the problem is in SharePoint rather than Power Automate. The date field im using to act as the condition is a calculated field based on another field's value (So in my case I have a received date and then other dates are populated as trigger points for activities based on the received date plus x days). Looks like although the calculated fields display correctly in SharePoint and in an excel extract, the data being supplied to PowerBI isn't the same - maybe due to the time being included?? 

 

Anyway, I was wondering, rather than use these calculated date fields as the condition - can I use a normal date field and within the expression add a number of days? (as well as ensuring the format is dd/MM/yyyy) ? Is this possible?

 

Hope you can help

Blurryface
Resolver I
Resolver I

It is likely a Time zone issue with your SharePoint tenant.

 

There's a few things you can do (in no particular order, note also you only need to do one of the options below -not all):

1-

Change Date field on SharePoint to include times and set it to be 21/07/2022 23:00 for example (this may not be suitable if your getting users to enter in this data manually to the list)

 

2 -

Convert the time zone on the SharePoint date field to your time zone via the flow using the an OOTB action or expression: Converting time zone in Power Automate - Power Automate | Microsoft Docs

 

3 -

Change the date field to a single text field instead on SharePoint (this may not be suitable if your getting users to enter in this data manually)

 

4 -

You can add 1 day to the date by using the expression below:

formatDateTime(addDays(items('Apply_to_each')?['Date_x0020_Acknowledgement_x0020'],1),'dd/MM/yyyy')

AlanStevens
Helper I
Helper I

Hi

 

I opted for option 4 - I get an error when running. This is the compose error:

InvalidTemplate. Unable to process template language expressions in action 'Compose' inputs at line '0' and column '0': 'In function 'addDays', the value provided for date time string '19/07/2022' was not valid. The datetime string must match ISO 8601 format.'.

 

This is the format of the expression: 

 

formatDateTime(addDays(items('Apply_to_each')?['DateofComplaint'],2),'dd/MM/yyyy')
 
The new field im using from SharePoint which is just a normal date field (not calculated) is 'DateofComplaint'
 
Any idea what i'm doing wrong?
AlanStevens
Helper I
Helper I

I've FINALLY got it to work bny changing the format of the date field as you suggested! Thank you so much for spending all this time helping me with this - really appreciate it!!

Blurryface
Resolver I
Resolver I

Great! 😀 Your welcome - I ran a test and it was actually this code that I should've sent you which should do the trick also.

addDays(items('Apply_to_each')?['DateofComplaint'],2,'dd/MM/yyyy')

Helpful resources

Announcements
 WHAT’S NEXT AT MICROSOFT IGNITE 2022

WHAT’S NEXT AT MICROSOFT IGNITE 2022

Explore the latest innovations, learn from product experts and partners, level up your skillset, and create connections from around the world.

Register for a Free Workshop.png

Register for a Free Workshop

Learn to digitize and optimize business processes and connect all your applications to share data in real time.

Users online (3,024)