cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
SamS-J
Frequent Visitor

Help needed with build -- Ondedrive or sharepoint file adjusted triggers mail

Hello,

 

I am trying to build a flow but have trouble getting the right outcome.

 

In Onedrive or Sharepoint (doesn't matter) I have a folder. 

In this folder i have 1 fixed excel file and some random PDF files that can be added or deleted.

 

Now there has to be send a E-mail to specific persons when other specific persons have changed or added something in the excel file, and virsa versa. Not for every change or added thing they did while working in the file, only just when they are finished and closed the file or something. 

 

For the added or deleted PDF files no action is needed.

 

I succeded only partly in this, so can somebody help me out?

 

Thank you

Sam

 

1 ACCEPTED SOLUTION

Accepted Solutions
JimmyWork
Super User
Super User

@SamS-J 

I have not tested this before but it should work.

On the trigger, "When a file is created or modified" click settings and add. This will now only run when the file gets published as a major version. (Versions ends with .0)

@contains(triggerBody()?['{VersionNumber}'],'.0')

 
For more info on how to work with minor major version check this page.
https://sharepointmaven.com/major-vs-minor-versions-in-sharepoint-online/

 

The user can work with it in any way the like, they dont need to check it out. When they want to publish a major version they press publish and write a comment if the like to. Now your flow will be triggered.

The next condition you want to look for is who modified it, not sure if you only want for 1 specific person or multiple different, but you could incorporate it in the trigger or a second condition or switch.

View solution in original post

12 REPLIES 12
Shujaath_Khan
Super User
Super User

Hi @SamS-J 

Did you tried this to trigger flow only on specific condition

 

@contains(triggerBody()?['{FilenameWithExtension}'],'.xlsx')

 

 

Can you refer Here for more.

Not sure if file onclose event is available in Power Automate.

 

If not above, you can think of triggering flow on a schedule basis to reduce frequent trigger execution.


Thanks
Please click Accept as Solution on this reply if it helped to solve your issue, and thumbs-up if you feel this is useful or important in other ways as a boost.

JimmyWork
Super User
Super User

To achieve this part: "Not for every change or added thing they did while working in the file, only just when they are finished and closed the file or something"

 

You would need to turn off auto save (Would not recommend this)

Or ask them to work with drafts and major/miner version.

 

When they are done editing the should check in a major version, the flow would check if the file is a major version and who last modified it, based on that it would send an email to the one you specify.

Thank for the reaction.

 

I know it is not recommend but i tried to turn off 'auto save'. But how to turn it off it if they open it in the online brower? Nowhere i find this option, autosave is alway actieve here.

 

Working with major and minor files is a good idea, i will give it a tought!

Hey, thanks for the reaction.

 

For onedrive you have 'when a file is edited' or 'when a file is begin edited'. I used the first one because this seemed to do the same like the 'on-close' function i search, however i can't make it work.

 

I am only a beginner in this flow automate, so where and how I need to fill in the file name in this specifion condition line you gave me? something like this;

@contains(triggerBody()?['{Overzicht Afisoleren Makrolon.xlsx}'],'.xlsx') 

 

For your information; I tried to work with a separate condition before but there i only have these dynamic options

SamSJ_0-1656321451450.png

But I learned that 'file name' is the coded file name and not the file name i gave it.

So no option can do the work here I guess...

 

How to schedule it, can it be every hour (with the condition that only when something is changed in that file)?

 

PS. sorry for the dutch image.

 

 

 

JimmyWork
Super User
Super User

I would suggest using SharePoint instead of OneDrive because of the available options.

 

I would set my trigger to only run when a major version is published.

Second condition would be where I check who edited it.

 

On the trigger "When an item is created or modified" (SharePoint) click Settings and set the following trigger condition. 

 

For example in the image below it will only trigger if the version not equal to 1.0, you would need to modify this to fit your needs. You could do a if modified by = 

This would allow you to only trigger the flow when a specific person has modified it.

JimmyWork_0-1656426529440.png

 

SamS-J
Frequent Visitor

Hey all,

 

I have build a flow that is almost good. The only thing i need is a condition code that the flow only start when the file is closed and there is something changed in the file.

 

Can someone help me with this?

 

Current Onedrive build:

SamSJ_0-1656491020855.png

 

 

JimmyWork
Super User
Super User

@SamS-J I don't know a way of doing that.

OneDrive will autosave the file, this means the flow will run all the time the file have been opened due to autosave it will modify the file. With SharePoint you can do major/minor versions and get around it but with OneDrive i'm out of solutions here, sorry hope someone else can help you and good luck 🙂

Hey Jimmy,

 

If your build will work, I change it immideately to sharepoint! 🙂 

But can you help me more please.

 

How does this major/minor flow works in sharepoint?

- They have to check-out the file? But I just tested this, and I can still edit the file in the online browser and desktop-app (or is this because i am the owner of the file)?

- Then if they adjusted the file and want to check in it again, how they pick if it is a major/minor update? now i only get a comment box.

 

For a minor update (or just reading the file) there is no trigger needed to send an e-mail.

For a major update there needs to be a trigger to send an e-mail to specific people depending on who checked the file back in.

 

Or is there a way to trigger this e-mails by editing in the online browser or desktop app, without sending mails for every little change?

Because I am thinking about the lazy colleauges that will just (want to) open the online browser because checking-out in to much work....

JimmyWork
Super User
Super User

@SamS-J 

I have not tested this before but it should work.

On the trigger, "When a file is created or modified" click settings and add. This will now only run when the file gets published as a major version. (Versions ends with .0)

@contains(triggerBody()?['{VersionNumber}'],'.0')

 
For more info on how to work with minor major version check this page.
https://sharepointmaven.com/major-vs-minor-versions-in-sharepoint-online/

 

The user can work with it in any way the like, they dont need to check it out. When they want to publish a major version they press publish and write a comment if the like to. Now your flow will be triggered.

The next condition you want to look for is who modified it, not sure if you only want for 1 specific person or multiple different, but you could incorporate it in the trigger or a second condition or switch.

oké, I changed the settings in sharepoint to minor/major versions (thanks for the helpfull website link)

Then I made 2 sharepoint flows.

 

1.  'When a file is created or modified in a folder'

In here I filled in at options your suggested condition trigger (version contains .0) but then when i try to test the flow i get an error, see below.

If I remove this trigger condition the flow works fine:

- goes to right folder on sharepoint

- checks if the file has 'overzicht' in its name

- sends email.

Only problem here, how can i put in a condition to check who adjusted it so it knows to who it has to send an email. There is no suitable 'dynamic content' available to work with.

 

Error description in this flow:

Unable to process the template language expressions for the When_a_file_is_created_or_modified_in_a_folder trigger on line 1 and in column 16768: The template language function contains expects the first argument collection to be a dictionary (object), an array, or a string. The specified value is of type Null..

 

2. 'When an item or file is changed'

In here there are alot more 'dynamic content' options available to play with, like:

TriggerOutputs()?['body/{VersionNumber}']

TriggerOutputs()?['body/Editor/DisplayName']

But also here i get the same error (see below) when testing the flow.  Even if I don't use your trigger condition.

 

Error Descirption in this flow:

Unable to process the template language expressions for the Condition_2 action on line 0 and column 0: The template language function contains expects the first argument collection to be a dictionary (object), an array, or a string. The specified value is of type Null..

 

I have the feeling i am getting closer to a fully working system :).

Hopefully you can help me with this?

 

Ps. Is maybe a direct cloudflow an option? If they are done changing the file they manually press a button to active a trigger to email the right person?

JimmyWork
Super User
Super User

@SamS-J 

I just tested the first part and thats working perfectly. Flow will only be triggered when a major version is published.

 

I can edit it how mnay times i want and the flow is not triggered until i press publish and the file becomes a major version.

 

JimmyWork_0-1656591018345.png

 

For your other condition, please explain more.

Is it always for example if User1 checks it in it should notify User2.
You could do a SharePoint list and use that as a config where you map user who edit with who to email and pull that. This way you can easily update the SharePoint list if a user needs to be replaced or change who to email.

Hey,

 

It works!

 

I had first trouble finding the right flow to start with. Because in each one I tried, I couldn't connect to the sharepoint site and/or right folder.

But with the flow 'When a file is created or modified (only properties)' It worked.

 

Also in this flow I had alot of 'Dynamic content' options. I don't know if this is because the link to the folder was working and then it can grap more info to create this content or that I just was lucky.

 

Anyhow, with this extra content I could create more conditions to determine to who it has to send an e-mail depending on who 'Published' the file to a major version.

 

This is now how the build looks and only get triggered thanks to your condtion code.

SamSJ_0-1656761754467.png

 

Helpful resources

Announcements
Microsoft 365 Conference – December 6-8, 2022

Microsoft 365 Conference – December 6-8, 2022

Join us in Las Vegas to experience community, incredible learning opportunities, and connections that will help grow skills, know-how, and more.

Difinity Conference 2022

Difinity Conference 2022

Register today for two amazing days of learning, featuring intensive learning sessions across multiple tracks, led by engaging and dynamic experts.

European SharePoint Conference

European SharePoint Conference

The European SharePoint Conference returns live and in-person November 28-December 1 with 4 Microsoft Keynotes, 9 Tutorials, and 120 Sessions.

Users online (4,133)