Hi there
This is the first time posting in the forum but a long time user of the forum. What I am trying to do, is to get a flow to trigger an sending an email when the date of a required audit approaches. The audit due dates are listed in a SharePoint list and you would think that this would be a simple thing to do. However, no matter how much I tinker and how much I see what others have done, I cannot get this to work.
This is what I have done:
@equals(item()?['Nextauditdue'], adddays(utcnow(),'mm-dd-yyyy')+14)
So basically I want this to send me an email when it is 14 days to the audit due date.
If anyone can shed light on this, I would be most grateful.
Solved! Go to Solution.
I have tried using 'get items' instead of 'get files (properties only)' and again I do get the notification email but flow says it has failed.
Here's what I see in outputs body ... I cannot see my 'Consent_x0020_End_x0020_Date' column in there as it happens.
{
"value": [
{
"@odata.etag": "\"13\"",
"ItemInternalId": "6",
"ID": 6,
"Personal_x0020_Info0": {
"@odata.type": "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedReference",
"Id": 1,
"Value": "No"
},
"Personal_x0020_Info0#Id": 1,
"Purpose12": {
"@odata.type": "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedTaxonomy",
"TermGuid": "030ec442-3c21-4d8e-bb6f-26c5d7e4735f",
"WssId": 189,
"Label": "Case study",
"Path": null,
"Value": "Case study|030ec442-3c21-4d8e-bb6f-26c5d7e4735f"
},
"Purpose12#WssId": 189,
"products_x0020_and_x0020_services": {
"@odata.type": "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedTaxonomy",
"TermGuid": "a67d7f16-fd3f-4f7d-8127-08d36c525c1d",
"WssId": 153,
"Label": "Benefactor",
"Path": null,
"Value": "Benefactor|a67d7f16-fd3f-4f7d-8127-08d36c525c1d"
},
"products_x0020_and_x0020_services#WssId": 153,
"Organisation": {
"@odata.type": "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedTaxonomy",
"TermGuid": "1a9c34ec-985b-4149-9445-ab4d2623cf56",
"WssId": 184,
"Label": "Jami & Jewish Care",
"Path": null,
"Value": "Jami & Jewish Care|1a9c34ec-985b-4149-9445-ab4d2623cf56"
},
Here is a shot of my doc library with workflow cols. Might be helpful to see these too.
Thanks again, Vicki
Hmm. I'm not sure what's going on. Your column names that show up in the picture are not showing up in the output results. To test things, I've created a new document library, put in two files and made a new column called Expiration with the type Date and Time.
Then I made a Flow:
So it all worked with no errors. I connected to one of our SharePoint sites and a document library there under the Get File (properties only). Then I used the code we've been discussing to check the dates if the dates in the Expiration column is equal to today + 30 days:
@equals(formatDateTime(item()?['Expiration'], 'MM/dd/yyyy'), formatDateTime(addDays(utcNow(), 30), 'MM/dd/yyyy'))
And for me, that information showed up in the Output:
Does any of that help?
Can you try renaming your Consent End Date column to just Consent and using the following code under the condition:
@equals(formatDateTime(item()?['Consent'], 'MM/dd/yyyy'), formatDateTime(addDays(utcNow(), 30), 'MM/dd/yyyy'))
Let me know if any of that helps! I'm using SharePoint Online with an Office 365 account.
Also, based on your picture below, can you double check if you have the Get Files (properties only) pointed to the right document library?
Hi again,
I've fully tested this now. The flow works perfectly if every document in the library has an end date. I added a date for all docs in the library to test.
So the flow definately has an issue when there is no date value in the consent end column. It does generate the email but says it fails, presumably when it gets to the records without dates.
I need to be able to run this on selected documents because not all library docs will need to be reviewed and added to the flow. Is there any way to exclude those without a date value or use my other (choice) column 'add to review'. All docs in flow would a 'yes' value in here which corresponds to those with consent end dates.
Thanks again for your help. Vicki
Awesome to hear that you Flow is working!
Okay, now we can make use of the code:
@not(empty(triggerBody()?['column name goes here']))
Just use the same column name that you used for the expiration condition and put a condition right under the Get Files (properties only).
So your Flow will check will check if the particular file has a date, if not it stops. If it does have a date, it'll check if the date is 30 days away from the target date in your column. If not, it stops. If yes, you get an e-mail.
Let me know if it works out!
Have done that. But flow still saying failed. Not sure if I am adding condition 2 in the right place?
I believe it should go
Hi again, I really do appreciate you help and patience!
Do you mean in this format?
The flow now says it ran successfully however I'm no longer getting any emails. Checked
Hey
This was extremely helpful to me! I just had a couple of additional questions to build on this.
In your formula, would the time be a 24hour or 12hour clock? Also would only the items within the ' ' comma's have to be replaced with actual figures?
Thanks in advance
Hi,
Not sure what you mean about only the items within the ' ' comma's have to be replaced with actual figures.
The 'ConsentEnd' column is a 'date and time' column, although I am using it to log the date only, not time.
Thanks again, I really appreciate your efforts to help me.
Vicki
Hey,
I am sorry for not communicating my request clearly. I meant to ask which field in the following formula must be changed to make the formula useful.
@equals(formatDateTime(item()?['Nextauditdue'], 'MM/dd/yyyy'), formatDateTime(addDays(utcNow(), 14), 'MM/dd/yyyy'))
Sorry, quite new to SP and coding.
Thanks in advance
Hey @Anonymous,
This formula, as far as I know, does not care about the time or whether it's in 12 hour or 24 hour format. It just takes the date information. I have not tested what happens if you give it a Date and Time value.
@equals(formatDateTime(item()?['Consent'], 'MM/dd/yyyy'), formatDateTime(addDays(utcNow(), 30), 'MM/dd/yyyy'))
The code above has the word Consent in it. That is the column name that you'll want to change to your own column name. The whole original discussion is about how sometimes the name of the column that has spaces and it you need to give it this column name that SharePoint interprets it as. On page 1 and 2 of this discussion you can see that I was able to get the correct column name based on the the error that Flow returned.
Let me know if you have need more help!
Hmm. So your first condition that is checking that things actually have values in them is returning a false value. Meaning, the Flow is not finding any values in the ConsentEnd column.
Where it says false in the screenshot below, can you go through and click the arrows inside the Apply to each step and see if you ever get a true?
Sorry about the delay, I was not working yesterday.
Arggh. This is driving me nuts! No, I don't have any matches in the Apply to each step.
Here is the doc library with data entries in the Consent End column...
Here is the column name, so it is correct...
And this is the formula I've used..
@not(empty(triggerBody()?['ConsentEnd']))
Thanks you, Vicki
Hi @kristof805
Have finally got this going with help from the MS Flow team. Here's what we did.
There are some slight tweaks to the formula below.
condition1:@not(equals(items('Apply_to_each')?['ConsentEnd'], null))
condition2:@equals(items('Apply_to_each')?['ConsentEnd'], formatDateTime(addDays(utcNow(), 30), 'yyyy-MM-dd'))
Thank you for all your help. Vicki
Hey @kristof805
Thank you so much! You have been very helpful.
I was having slight issues with error messaged and I was wondering if you could clarify for me which end of the formula the current date is entered into (mm-dd-yyyy) ? I am operating under the assumption that the formula already knows that it needs to check for any items that expire within the next 30 days.
Also, would the date move forward everyday? Like if I set it as today's date, when the recurrence happens again tomorrow, will the code check for 30 days from tomorrows date?
Thanks in advance!
So glad to hear it's working! I would not have figured out those combinations of formulas but I'm sure your post will be a good reference for others!
@Anonymous
The current date is entered into your columns on your SharePoint list or document library column. Then, the Flow checks if that date is exactly 30 days away (you can change this) every day. That's why it runs every day, so it checks for you, so you don't have to. On the day that your date in your column is 30 days away, you can have the Flow send an e-mail, some kind of warning, change something, etc.
@Anonymous
I believe that error is from the condition not finding a date. Do you have the name of your column with the right name? Do all items have a date in the date column? What do the other results say if you go forward or backward on "next failed" and "previous failed". Are they all indetical?
I have put the coloumn name where the formula earlier said Consent. The error shows all the information from the SP List so it is getting the data. All items have a date in the list. I have 60 items in the list, all have the same error message.
User | Count |
---|---|
89 | |
37 | |
26 | |
13 | |
13 |
User | Count |
---|---|
127 | |
54 | |
38 | |
24 | |
21 |