cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Anonymous
Not applicable

MS Forms upload file, change file name in OneDrive, email file with changed name via Power Automate

I'm currently in the processing of brainstorming a flow that seeks to take a user's file, upload the file to our agency one drive, rename that file after the upload, and then receive a copy of that renamed file in their email.

 

I'm having a terribly difficult time getting myself along from here: the uploaded document hits my OneDrive, I need to rename the file, then I need to send an email to the author of the Forms response with the renamed-uploaded file as an attachment.

 

I'm stumbling when it comes time to modify the uploaded file's name and location in OneDrive, subsequently I'm not able to figure out how to attach this renamed file yet.

 

Help?

1 ACCEPTED SOLUTION

Accepted Solutions
Anonymous
Not applicable

UPDATE: I figured it out.

 

This may not be the most elegant solution but I learned a whole bunch along the way. If I'm wrong or explain something poorly, please point out the mistakes and, if you can, provide the correct information where possible.

 

To get this Flow to work you're gonna need a little prep. You'll need at minimum the following three variables: LocalFileID, NewFileName, and NewFileBody, they're pretty obvious what they're intended to be but for absolute clarity here's mine:

LocalFileID.PNG

"Gimme file upload" is the title of my file-upload question on my Form. In your Flow, this will be the output containing the uploaded file reference.

 

Next we're going to pull apart the properties of the file-upload output using a Parse JSON:

 

{
    "type": "array",
    "items": {
        "type": "object",
        "properties": {
            "name": {
                "type": "string"
            },
            "link": {
                "type": "string"
            },
            "id": {
                "type": "string"
            },
            "type": {},
            "size": {
                "type": "integer"
            },
            "referenceId": {
                "type": "string"
            },
            "driveId": {
                "type": "string"
            },
            "status": {
                "type": "integer"
            },
            "uploadSessionUrl": {}
        },
        "required": [
            "name",
            "link",
            "id",
            "type",
            "size",
            "referenceId",
            "driveId",
            "status",
            "uploadSessionUrl"
        ]
    }
}
Huge thanks to Chad Kealey, YT.
 
Your Parse JSON Flow action should look like this next:
ParseJSON.PNG
Where, "LocalFileInfo" is your variable created out of the Forms File-upload output.
 
Next we're going to build our "NewFileName" variable, it should look like a basic string variable. This will become the file name without extension, so keep that in mind later in your development. Enter whatever name you want, but remember that this information will be transmitted via the internet, refrain from using special characters like: !@#$%^&*(), treat it like a normal file name on your computer.
 
Here's mine for example:
NewFileName.PNG
I'm using the responses from my Forms user to build a new file name in my OneDrive. If you have no need to rename the file, you can skip this step.
 
Next we need to build our "NewFileBody" variable, pretty simple too.
 
Create  a basic String type variable and give it the Body property of your Parse JSON Flow action.
 
Here's mine:
NewFileBody.PNG
 
Finally we're ready to begin doing something to all this data.
 
Compose a Rename or move a file (OneDrive) Flow Action. It will probably be converted into a For-Each sub-action, that's fine. This is because of the nature of File-Upload outputs being an array type object. Since there can be multiple files uploaded at a time, even if we're only dealing with one, the rest of the Microsoft systems must also handle for this situation. Keep this in mind!: If you only have one uploaded file we're dealing with, it's still treated as an array!
 
My rename/move action is simply called, "Rename a file". Keep in mind you can do both a rename AND a move file action in the same Flow action block. To rename a file, add the desired file name at the end of your file path: /Apps/Microsoft Forms/TEST/Unga.Bunga.png (< this is your new file name), if you want to change the directory then simply add or remove to the file path like so:
/Apps/Microsoft Forms/Unga.Bunga.png (or) /Apps/Microsoft/Forms/TEST/Subliminal Testing/Super Subliminal Testing/Unga.Bunga.png
 
Here's my Rename a File for-each:
RenameFile.PNG
 
Next we need to get a good reference to the file content (in human-speak, get to the file itself), and a good reference to the file name. We already have the file name (if you're changing it) as a variable. All we need to do is find the file in our OneDrive and that'll be enough to get a reference to the file content.
 
Create a "Find files in folder" OneDrive Flow action. In the "Search query" box enter your file name and the extension. It's important that you add the extension because otherwise OneDrive is being instructed to search for an unrecognized file. (Or the wrong file)
 
For example, you might have the file "Unga.Bunga.png" in your OneDrive, but also you have "Unga.Bunga" (without file extension). If you were to simply enter the Search query of "Unga.Bunga" you'd always get the one without an extension, or worse, no file at all and a Flow error.
 
Here's an example of my Find files in folder Flow action:
Find Files.PNG
 
Almost done now. We've got a way to get a good reference to the file in our OneDrive now. Previously we just had a reference from Forms about the file.
 
Now we have to create a Get file content using path Flow action. Provide this action the full file path to your uploaded file, plus the name and extension of the file. Format your file path like this:
 
/Apps/Microsoft Forms/Your Form Name/Your Upload Question/YourFileName.extension
 
Use a forward slash between the directory where the file exists and the file name, just like on your computer.
 
Here's mine:
GetFilePath.PNG
 
Finally, we're ready to email this file back to the author and or whomever.
 
Create a Send an Email (v2) Flow action. Set the To: field to whomever you need this email to go to. Set up your subject, body, and any other properties you need to set up. When you're all done and the email is dressed up and ready to go, you can now add the references to the attachment file you want.
 
To do so, click on "Show advanced options". In the "Attachments Name - 1" field, enter the variable for your new file name followed by the extension. In the "Attachments Content - " field, enter the "File content" variable from the "Get file content" subsection in the "Add dynamic content" menu.
 
If you have the need to add more than one attachment you can simply repeat the above three final steps until the desired goal is met by containing Find files in folder, Get file content using path, and Send an email in a for-each loop triggered by the length of the Body property of the Parse JSON action. I'm not entirely certain about the validity of that advice however, as I have no need to do that. I also haven't tested it. LOL.
 
Here's one last example of my email with my single attachment from my Forms response, renamed toboot:
UploadedFileAttachment.PNG
 
 
I struggled really hard for a hot minute to get this working. I've been off-and-on developing this solution for a little over 6 months at the time of writing this. I cannot thank Chad Kealey enough for creating his tutorial video on YouTube and for being so informative.
 
I also want to extend a thank you to everyone on the Microsoft Power Automate Community forum for being supportive of each other and for always providing as much information as humanly possible. Without the collaborative environment of this forum, and people like Chad, I'd likely never have figured out this solution.
 
I hope this benefits anyone who was stuck in a similar situation as me.

View solution in original post

1 REPLY 1
Anonymous
Not applicable

UPDATE: I figured it out.

 

This may not be the most elegant solution but I learned a whole bunch along the way. If I'm wrong or explain something poorly, please point out the mistakes and, if you can, provide the correct information where possible.

 

To get this Flow to work you're gonna need a little prep. You'll need at minimum the following three variables: LocalFileID, NewFileName, and NewFileBody, they're pretty obvious what they're intended to be but for absolute clarity here's mine:

LocalFileID.PNG

"Gimme file upload" is the title of my file-upload question on my Form. In your Flow, this will be the output containing the uploaded file reference.

 

Next we're going to pull apart the properties of the file-upload output using a Parse JSON:

 

{
    "type": "array",
    "items": {
        "type": "object",
        "properties": {
            "name": {
                "type": "string"
            },
            "link": {
                "type": "string"
            },
            "id": {
                "type": "string"
            },
            "type": {},
            "size": {
                "type": "integer"
            },
            "referenceId": {
                "type": "string"
            },
            "driveId": {
                "type": "string"
            },
            "status": {
                "type": "integer"
            },
            "uploadSessionUrl": {}
        },
        "required": [
            "name",
            "link",
            "id",
            "type",
            "size",
            "referenceId",
            "driveId",
            "status",
            "uploadSessionUrl"
        ]
    }
}
Huge thanks to Chad Kealey, YT.
 
Your Parse JSON Flow action should look like this next:
ParseJSON.PNG
Where, "LocalFileInfo" is your variable created out of the Forms File-upload output.
 
Next we're going to build our "NewFileName" variable, it should look like a basic string variable. This will become the file name without extension, so keep that in mind later in your development. Enter whatever name you want, but remember that this information will be transmitted via the internet, refrain from using special characters like: !@#$%^&*(), treat it like a normal file name on your computer.
 
Here's mine for example:
NewFileName.PNG
I'm using the responses from my Forms user to build a new file name in my OneDrive. If you have no need to rename the file, you can skip this step.
 
Next we need to build our "NewFileBody" variable, pretty simple too.
 
Create  a basic String type variable and give it the Body property of your Parse JSON Flow action.
 
Here's mine:
NewFileBody.PNG
 
Finally we're ready to begin doing something to all this data.
 
Compose a Rename or move a file (OneDrive) Flow Action. It will probably be converted into a For-Each sub-action, that's fine. This is because of the nature of File-Upload outputs being an array type object. Since there can be multiple files uploaded at a time, even if we're only dealing with one, the rest of the Microsoft systems must also handle for this situation. Keep this in mind!: If you only have one uploaded file we're dealing with, it's still treated as an array!
 
My rename/move action is simply called, "Rename a file". Keep in mind you can do both a rename AND a move file action in the same Flow action block. To rename a file, add the desired file name at the end of your file path: /Apps/Microsoft Forms/TEST/Unga.Bunga.png (< this is your new file name), if you want to change the directory then simply add or remove to the file path like so:
/Apps/Microsoft Forms/Unga.Bunga.png (or) /Apps/Microsoft/Forms/TEST/Subliminal Testing/Super Subliminal Testing/Unga.Bunga.png
 
Here's my Rename a File for-each:
RenameFile.PNG
 
Next we need to get a good reference to the file content (in human-speak, get to the file itself), and a good reference to the file name. We already have the file name (if you're changing it) as a variable. All we need to do is find the file in our OneDrive and that'll be enough to get a reference to the file content.
 
Create a "Find files in folder" OneDrive Flow action. In the "Search query" box enter your file name and the extension. It's important that you add the extension because otherwise OneDrive is being instructed to search for an unrecognized file. (Or the wrong file)
 
For example, you might have the file "Unga.Bunga.png" in your OneDrive, but also you have "Unga.Bunga" (without file extension). If you were to simply enter the Search query of "Unga.Bunga" you'd always get the one without an extension, or worse, no file at all and a Flow error.
 
Here's an example of my Find files in folder Flow action:
Find Files.PNG
 
Almost done now. We've got a way to get a good reference to the file in our OneDrive now. Previously we just had a reference from Forms about the file.
 
Now we have to create a Get file content using path Flow action. Provide this action the full file path to your uploaded file, plus the name and extension of the file. Format your file path like this:
 
/Apps/Microsoft Forms/Your Form Name/Your Upload Question/YourFileName.extension
 
Use a forward slash between the directory where the file exists and the file name, just like on your computer.
 
Here's mine:
GetFilePath.PNG
 
Finally, we're ready to email this file back to the author and or whomever.
 
Create a Send an Email (v2) Flow action. Set the To: field to whomever you need this email to go to. Set up your subject, body, and any other properties you need to set up. When you're all done and the email is dressed up and ready to go, you can now add the references to the attachment file you want.
 
To do so, click on "Show advanced options". In the "Attachments Name - 1" field, enter the variable for your new file name followed by the extension. In the "Attachments Content - " field, enter the "File content" variable from the "Get file content" subsection in the "Add dynamic content" menu.
 
If you have the need to add more than one attachment you can simply repeat the above three final steps until the desired goal is met by containing Find files in folder, Get file content using path, and Send an email in a for-each loop triggered by the length of the Body property of the Parse JSON action. I'm not entirely certain about the validity of that advice however, as I have no need to do that. I also haven't tested it. LOL.
 
Here's one last example of my email with my single attachment from my Forms response, renamed toboot:
UploadedFileAttachment.PNG
 
 
I struggled really hard for a hot minute to get this working. I've been off-and-on developing this solution for a little over 6 months at the time of writing this. I cannot thank Chad Kealey enough for creating his tutorial video on YouTube and for being so informative.
 
I also want to extend a thank you to everyone on the Microsoft Power Automate Community forum for being supportive of each other and for always providing as much information as humanly possible. Without the collaborative environment of this forum, and people like Chad, I'd likely never have figured out this solution.
 
I hope this benefits anyone who was stuck in a similar situation as me.

Helpful resources

Announcements

Community will be READ ONLY July 16th, 5p PDT -July 22nd

Dear Community Members,   We'd like to let you know of an upcoming change to the community platform: starting July 16th, the platform will transition to a READ ONLY mode until July 22nd.   During this period, members will not be able to Kudo, Comment, or Reply to any posts.   On July 22nd, please be on the lookout for a message sent to the email address registered on your community profile. This email is crucial as it will contain your unique code and link to register for the new platform encompassing all of the communities.   What to Expect in the New Community: A more unified experience where all products, including Power Apps, Power Automate, Copilot Studio, and Power Pages, will be accessible from one community.Community Blogs that you can syndicate and link to for automatic updates. We appreciate your understanding and cooperation during this transition. Stay tuned for the exciting new features and a seamless community experience ahead!

Summer of Solutions | Week 4 Results | Winners will be posted on July 24th

We are excited to announce the Summer of Solutions Challenge!    This challenge is kicking off on Monday, June 17th and will run for (4) weeks.  The challenge is open to all Power Platform (Power Apps, Power Automate, Copilot Studio & Power Pages) community members. We invite you to participate in a quest to provide solutions to as many questions as you can. Answers can be provided in all the communities.    Entry Period: This Challenge will consist of four weekly Entry Periods as follows (each an “Entry Period”)   - 12:00 a.m. PT on June 17, 2024 – 11:59 p.m. PT on June 23, 2024 - 12:00 a.m. PT on June 24, 2024 – 11:59 p.m. PT on June 30, 2024 - 12:00 a.m. PT on July 1, 2024 – 11:59 p.m. PT on July 7, 2024 - 12:00 a.m. PT on July 8, 2024 – 11:59 p.m. PT on July 14, 2024   Entries will be eligible for the Entry Period in which they are received and will not carryover to subsequent weekly entry periods.  You must enter into each weekly Entry Period separately.   How to Enter: We invite you to participate in a quest to provide "Accepted Solutions" to as many questions as you can. Answers can be provided in all the communities. Users must provide a solution which can be an “Accepted Solution” in the Forums in all of the communities and there are no limits to the number of “Accepted Solutions” that a member can provide for entries in this challenge, but each entry must be substantially unique and different.    Winner Selection and Prizes: At the end of each week, we will list the top ten (10) Community users which will consist of: 5 Community Members & 5 Super Users and they will advance to the final drawing. We will post each week in the News & Announcements the top 10 Solution providers.  At the end of the challenge, we will add all of the top 10 weekly names and enter them into a random drawing.  Then we will randomly select ten (10) winners (5 Community Members & 5 Super Users) from among all eligible entrants received across all weekly Entry Periods to receive the prize listed below. If a winner declines, we will draw again at random for the next winner.  A user will only be able to win once overall. If they are drawn multiple times, another user will be drawn at random.  Individuals will be contacted before the announcement with the opportunity to claim or deny the prize.  Once all of the winners have been notified, we will post in the News & Announcements of each community with the list of winners.   Each winner will receive one (1) Pass to the Power Platform Conference in Las Vegas, Sep. 18-20, 2024 ($1800 value). NOTE: Prize is for conference attendance only and any other costs such as airfare, lodging, transportation, and food are the sole responsibility of the winner. Tickets are not transferable to any other party or to next year’s event.   ** PLEASE SEE THE ATTACHED RULES for this CHALLENGE**   Week 1 Results: Congratulations to the Week 1 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge.   Community MembersNumber SolutionsSuper UsersNumber Solutions Deenuji 9 @NathanAlvares24  17 @Anil_g  7 @ManishSolanki  13 @eetuRobo  5 @David_MA  10 @VishnuReddy1997  5 @SpongYe  9JhonatanOB19932 (tie) @Nived_Nambiar  8 @maltie  2 (tie)   @PA-Noob  2 (tie)   @LukeMcG  2 (tie)   @tgut03  2 (tie)       Week 2 Results: Congratulations to the Week 2 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 2: Community MembersSolutionsSuper UsersSolutionsPower Automate  @Deenuji  12@ManishSolanki 19 @Anil_g  10 @NathanAlvares24  17 @VishnuReddy1997  6 @Expiscornovus  10 @Tjan  5 @Nived_Nambiar  10 @eetuRobo  3 @SudeepGhatakNZ 8     Week 3 Results: Congratulations to the Week 3 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 3:Community MembersSolutionsSuper UsersSolutionsPower Automate Deenuji32ManishSolanki55VishnuReddy199724NathanAlvares2444Anil_g22SudeepGhatakNZ40eetuRobo18Nived_Nambiar28Tjan8David_MA22   Week 4 Results: Congratulations to the Week 4 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 4:Community MembersSolutionsSuper UsersSolutionsPower Automate Deenuji11FLMike31Sayan11ManishSolanki16VishnuReddy199710creativeopinion14Akshansh-Sharma3SudeepGhatakNZ7claudiovc2CFernandes5 misc2Nived_Nambiar5 Usernametwice232rzaneti5 eetuRobo2   Anil_g2   SharonS2  

Check Out | 2024 Release Wave 2 Plans for Microsoft Dynamics 365 and Microsoft Power Platform

On July 16, 2024, we published the 2024 release wave 2 plans for Microsoft Dynamics 365 and Microsoft Power Platform. These plans are a compilation of the new capabilities planned to be released between October 2024 to March 2025. This release introduces a wealth of new features designed to enhance customer understanding and improve overall user experience, showcasing our dedication to driving digital transformation for our customers and partners.    The upcoming wave is centered around utilizing advanced AI and Microsoft Copilot technologies to enhance user productivity and streamline operations across diverse business applications. These enhancements include intelligent automation, AI-powered insights, and immersive user experiences that are designed to break down barriers between data, insights, and individuals. Watch a summary of the release highlights.    Discover the latest features that empower organizations to operate more efficiently and adaptively. From AI-driven sales insights and customer service enhancements to predictive analytics in supply chain management and autonomous financial processes, the new capabilities enable businesses to proactively address challenges and capitalize on opportunities.    

Updates to Transitions in the Power Platform Communities

We're embarking on a journey to enhance your experience by transitioning to a new community platform. Our team has been diligently working to create a fresh community site, leveraging the very Dynamics 365 and Power Platform tools our community advocates for.  We started this journey with transitioning Copilot Studio forums and blogs in June. The move marks the beginning of a new chapter, and we're eager for you to be a part of it. The rest of the Power Platform product sites will be moving over this summer.   Stay tuned for more updates as we get closer to the launch. We can't wait to welcome you to our new community space, designed with you in mind. Let's connect, learn, and grow together.   Here's to new beginnings and endless possibilities!   If you have any questions, observations or concerns throughout this process please go to https://aka.ms/PPCommSupport.   To stay up to date on the latest details of this migration and other important Community updates subscribe to our News and Announcements forums: Copilot Studio, Power Apps, Power Automate, Power Pages